diff options
Diffstat (limited to 'drivers/video/exynos/s6e8ax0.c')
-rw-r--r-- | drivers/video/exynos/s6e8ax0.c | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/drivers/video/exynos/s6e8ax0.c b/drivers/video/exynos/s6e8ax0.c index 05d080b63bc..7f7b25f9b85 100644 --- a/drivers/video/exynos/s6e8ax0.c +++ b/drivers/video/exynos/s6e8ax0.c @@ -470,6 +470,34 @@ static void s6e8ax0_sleep_out(struct s6e8ax0 *lcd) data_to_send, ARRAY_SIZE(data_to_send)); } +void init_lcd(struct s6e8ax0 *lcd) +{ + static const unsigned char data_to_send1[] = { + 0x0, 0x0 + }; + static const unsigned char data_to_send2[] = { + 0x11, 0x00 + }; + static const unsigned char data_to_send3[] = { + 0x0, 0x0 + }; + + struct mipi_dsim_master_ops *ops = lcd_to_master_ops(lcd); + + ops->cmd_write(lcd_to_master(lcd), MIPI_DSI_DCS_SHORT_WRITE, + data_to_send1, ARRAY_SIZE(data_to_send1)); + msleep(60); + + /* Exit sleep */ + ops->cmd_write(lcd_to_master(lcd), MIPI_DSI_DCS_SHORT_WRITE, + data_to_send2, ARRAY_SIZE(data_to_send2)); + + msleep(600); + + ops->cmd_write(lcd_to_master(lcd), MIPI_DSI_TURN_ON_PERIPHERAL, + data_to_send3, ARRAY_SIZE(data_to_send3)); +} + static void s6e8ax0_display_on(struct s6e8ax0 *lcd) { struct mipi_dsim_master_ops *ops = lcd_to_master_ops(lcd); @@ -754,10 +782,7 @@ static void s6e8ax0_power_on(struct mipi_dsim_lcd_device *dsim_dev, int power) msleep(lcd->ddi_pd->reset_delay); - /* lcd reset */ - if (lcd->ddi_pd->reset) - lcd->ddi_pd->reset(lcd->ld); - msleep(5); + lcd->ddi_pd->power_on(NULL, 1); } static void s6e8ax0_set_sequence(struct mipi_dsim_lcd_device *dsim_dev) @@ -766,7 +791,7 @@ static void s6e8ax0_set_sequence(struct mipi_dsim_lcd_device *dsim_dev) s6e8ax0_panel_init(lcd); s6e8ax0_display_on(lcd); - + init_lcd(lcd); lcd->power = FB_BLANK_UNBLANK; } |