diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7701.c b/drivers/gpu/drm/panel/panel-sitronix-st7701.c index 0459965e1b4f..055b9ae46bc6 100644 --- a/drivers/gpu/drm/panel/panel-sitronix-st7701.c +++ b/drivers/gpu/drm/panel/panel-sitronix-st7701.c @@ -404,23 +404,58 @@ static void kd50t048a_gip_sequence(struct st7701 *st7701) * ST7701_SPEC_V1.2 is unable to provide enough information above this * specific command sequence, so grab the same from vendor BSP driver. */ + ST7701_DSI(st7701, 0x01); + msleep(5); + ST7701_DSI(st7701, 0x11); + msleep(120); + + ST7701_DSI(st7701, 0xFF, 0x77, 0x01, 0x00, 0x00, 0x10); + ST7701_DSI(st7701, 0xC0, 0xE9, 0x03); + ST7701_DSI(st7701, 0xC1, 0x11, 0x02); + ST7701_DSI(st7701, 0xC2, 0x31, 0x08); + ST7701_DSI(st7701, 0xCC, 0x10); + ST7701_DSI(st7701, 0xB0, 0x00, 0x0D, 0x14, 0x0D, 0x10, 0x05, 0x02, 0x08, + 0x08, 0x1E, 0x05, 0x13, 0x11, 0xA3, 0x29, 0x18); + ST7701_DSI(st7701, 0xB1, 0x00, 0x0C, 0x14, 0x0C, 0x10, 0x05, 0x03, 0x08, + 0x07, 0x20, 0x05, 0x13, 0x11, 0xA4, 0x29, 0x18); + ST7701_DSI(st7701, 0xFF, 0x77, 0x01, 0x00, 0x00, 0x11); + ST7701_DSI(st7701, 0xB0, 0x6C); + ST7701_DSI(st7701, 0xB1, 0x43); + ST7701_DSI(st7701, 0xB2, 0x07); + ST7701_DSI(st7701, 0xB3, 0x80); + ST7701_DSI(st7701, 0xB5, 0x47); + ST7701_DSI(st7701, 0xB7, 0x85); + ST7701_DSI(st7701, 0xB8, 0x20); + ST7701_DSI(st7701, 0xB9, 0x10); + ST7701_DSI(st7701, 0xC1, 0x78); + ST7701_DSI(st7701, 0xC3, 0x78); + ST7701_DSI(st7701, 0xD0, 0x88); + msleep(120); + ST7701_DSI(st7701, 0xE0, 0x00, 0x00, 0x02); - ST7701_DSI(st7701, 0xE1, 0x08, 0x00, 0x0A, 0x00, 0x07, 0x00, 0x09, - 0x00, 0x00, 0x33, 0x33); + ST7701_DSI(st7701, 0xE1, 0x08, 0x00, 0x0A, 0x00, 0x07, 0x00, 0x09, 0x00, + 0x00, 0x33, 0x33); ST7701_DSI(st7701, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); ST7701_DSI(st7701, 0xE3, 0x00, 0x00, 0x33, 0x33); ST7701_DSI(st7701, 0xE4, 0x44, 0x44); - ST7701_DSI(st7701, 0xE5, 0x0E, 0x60, 0xA0, 0xA0, 0x10, 0x60, 0xA0, - 0xA0, 0x0A, 0x60, 0xA0, 0xA0, 0x0C, 0x60, 0xA0, 0xA0); + ST7701_DSI(st7701, 0xE5, 0x0E, 0x60, 0xA0, 0xA0, 0x10, 0x60, 0xA0, 0xA0, + 0x0A, 0x60, 0xA0, 0xA0, 0x0C, 0x60, 0xA0, 0xA0); ST7701_DSI(st7701, 0xE6, 0x00, 0x00, 0x33, 0x33); ST7701_DSI(st7701, 0xE7, 0x44, 0x44); - ST7701_DSI(st7701, 0xE8, 0x0D, 0x60, 0xA0, 0xA0, 0x0F, 0x60, 0xA0, - 0xA0, 0x09, 0x60, 0xA0, 0xA0, 0x0B, 0x60, 0xA0, 0xA0); + ST7701_DSI(st7701, 0xE8, 0x0D, 0x60, 0xA0, 0xA0, 0x0F, 0x60, 0xA0, 0xA0, + 0x09, 0x60, 0xA0, 0xA0, 0x0B, 0x60, 0xA0, 0xA0); ST7701_DSI(st7701, 0xEB, 0x02, 0x01, 0xE4, 0xE4, 0x44, 0x00, 0x40); ST7701_DSI(st7701, 0xEC, 0x02, 0x01); - ST7701_DSI(st7701, 0xED, 0xAB, 0x89, 0x76, 0x54, 0x01, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x45, 0x67, 0x98, 0xBA); + ST7701_DSI(st7701, 0xED, 0xAB, 0x89, 0x76, 0x54, 0x01, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x10, 0x45, 0x67, 0x98, 0xBA); + ST7701_DSI(st7701, 0xFF, 0x77, 0x01, 0x00, 0x00, 0x00); + ST7701_DSI(st7701, 0x3A, 0x70); + ST7701_DSI(st7701, 0x53, 0xEC); + ST7701_DSI(st7701, 0x55, 0xB3); + ST7701_DSI(st7701, 0x5E, 0xFF); + ST7701_DSI(st7701, 0x29); + msleep(50); } static int st7701_prepare(struct drm_panel *panel) @@ -434,7 +469,7 @@ static int st7701_prepare(struct drm_panel *panel) st7701->supplies); if (ret < 0) return ret; - msleep(20); + msleep(120); gpiod_set_value(st7701->reset, 1); msleep(150); @@ -741,20 +776,20 @@ static const struct st7701_panel_desc dmt028vghmcmi_1a_desc = { }; static const struct drm_display_mode kd50t048a_mode = { - .clock = 27500, + .clock = 28748, .hdisplay = 480, - .hsync_start = 480 + 2, - .hsync_end = 480 + 2 + 10, - .htotal = 480 + 2 + 10 + 2, + .hsync_start = 480 + 12, + .hsync_end = 480 + 12 + 12, + .htotal = 480 + 12 + 12 + 38, .vdisplay = 854, - .vsync_start = 854 + 2, - .vsync_end = 854 + 2 + 2, - .vtotal = 854 + 2 + 2 + 17, + .vsync_start = 854 + 0, + .vsync_end = 854 + 0 + 19, + .vtotal = 854 + 0 + 19 + 11, - .width_mm = 69, - .height_mm = 139, + .width_mm = 70, + .height_mm = 140, .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED, }; @@ -763,7 +798,7 @@ static const struct st7701_panel_desc kd50t048a_desc = { .mode = &kd50t048a_mode, .lanes = 2, .format = MIPI_DSI_FMT_RGB888, - .panel_sleep_delay = 0, + .panel_sleep_delay = 120, .pv_gamma = { CFIELD_PREP(DSI_CMD2_BK0_GAMCTRL_AJ_MASK, 0) |