Change Startek panel to RGB666 mode -Integrate changes from Mediatek team to change from RGB888 to RGB666 -Change pixel clock, HFP, HBP, VBP -Modify porch control registers to match changes in panel struct. Note: HBP and VBP registers are defined as struct H\V_SYNC + H\V_BP Change-Id: I09bbb519efe541de72b9e779d34d7053ba5c771e
diff --git a/drivers/gpu/drm/panel/panel-startek-ili9488.c b/drivers/gpu/drm/panel/panel-startek-ili9488.c index dd6b753..dec9144 100644 --- a/drivers/gpu/drm/panel/panel-startek-ili9488.c +++ b/drivers/gpu/drm/panel/panel-startek-ili9488.c
@@ -43,15 +43,15 @@ struct startek_panel { }; static const struct drm_display_mode startek_default_timing = { - .clock = 26000000 / 1000, + .clock = 17700000 / 1000, .hdisplay = 320, - .hsync_start = 320 + 170, - .hsync_end = 320 + 170 + 50, - .htotal = 320 + 170 + 50 + 50, + .hsync_start = 320 + 138, + .hsync_end = 320 + 138 + 50, + .htotal = 320 + 138 + 50 + 100, .vdisplay = 480, .vsync_start = 480 + 2, .vsync_end = 480 + 2 + 1, - .vtotal = 480 + 2 + 1 + 1, + .vtotal = 480 + 2 + 1 + 2, .vrefresh = 60, }; @@ -86,16 +86,16 @@ static const struct dcs_command g_startek_init[] = { {.cmd = 0xc5, .para_size = 3, .para = {0x00, 0x1e, 0x80}}, // Interface Mode Control - {.cmd = 0x3a, .para_size = 1, .para = {0x77}}, + {.cmd = 0x3a, .para_size = 1, .para = {0x06}}, - // Frame rate 70HZ - {.cmd = 0xb1, .para_size = 1, .para = {0xb0}}, + // Frame rate 60HZ + {.cmd = 0xb1, .para_size = 2, .para = {0xa0, 0x11}}, // Display Inversion Control {.cmd = 0xb4, .para_size = 1, .para = {0x02}}, // Blanking Porch Control - {.cmd = 0xb5, .para_size = 4, .para = {0x02, 0x02, 0xaa, 0x64}}, + {.cmd = 0xb5, .para_size = 4, .para = {0x02, 0x03, 0x8a, 0x96}}, // Set Image Function {.cmd = 0xe9, .para_size = 1, .para = {0x01}}, @@ -156,7 +156,7 @@ static int startek_init(struct mipi_dsi_device *dsi, static int startek_panel_get_modes(struct drm_panel *panel) { struct drm_display_mode *mode; - static const u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24; + static const u32 bus_format = MEDIA_BUS_FMT_RGB666_1X18; int ret; mode = drm_mode_duplicate(panel->drm, &startek_default_timing); @@ -172,7 +172,7 @@ static int startek_panel_get_modes(struct drm_panel *panel) drm_mode_set_name(mode); drm_mode_probed_add(panel->connector, mode); - panel->connector->display_info.bpc = 8; + panel->connector->display_info.bpc = 6; panel->connector->display_info.height_mm = 49; panel->connector->display_info.width_mm = 74; @@ -332,7 +332,7 @@ static int startek_panel_probe(struct mipi_dsi_device *dsi) { if (!startek) return -ENOMEM; - dsi->format = MIPI_DSI_FMT_RGB888; + dsi->format = MIPI_DSI_FMT_RGB666_PACKED; dsi->mode_flags = MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_MODE_VIDEO |