aboutsummaryrefslogtreecommitdiff
path: root/drivers/video/exynos/s6e8ax0.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/exynos/s6e8ax0.c')
-rw-r--r--drivers/video/exynos/s6e8ax0.c35
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;
}