summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorItsuki Yamashita <yamashitai@casio.co.jp>2015-10-16 11:49:57 +0900
committerItsuki Yamashita <yamashitai@casio.co.jp>2015-10-16 11:49:57 +0900
commitded989b8d765de77a5e1e85e0d10e413c6ad3237 (patch)
tree2a83a85301759e7b7fb4a707246d7c7b9414c7b9
parent9e20108023efef3436468cce58aa0f19accfc550 (diff)
downloadkoi-uboot-ded989b8d765de77a5e1e85e0d10e413c6ad3237.tar.gz
video: add off sequence
Change-Id: Ib9f063a15cb078cd7eadb26874e07e8ff7e8006b Signed-off-by: Itsuki Yamashita <yamashitai@casio.co.jp>
-rw-r--r--drivers/video/display.c2
-rw-r--r--drivers/video/exynos_mipi_dsi.c18
-rw-r--r--drivers/video/sharp_mipi_lcd.c10
-rw-r--r--drivers/video/sharp_mipi_lcd.h8
4 files changed, 37 insertions, 1 deletions
diff --git a/drivers/video/display.c b/drivers/video/display.c
index 207eca0c2..864e9e124 100644
--- a/drivers/video/display.c
+++ b/drivers/video/display.c
@@ -108,8 +108,8 @@ void Backlight_Turnoff(void)
void Display_Turnoff(void)
{
- LCD_Stop();
Backlight_Turnoff();
+ LCD_Stop();
LCD_turnoff();
printf("Turn off Display\n");
diff --git a/drivers/video/exynos_mipi_dsi.c b/drivers/video/exynos_mipi_dsi.c
index dd10135d5..9f938013d 100644
--- a/drivers/video/exynos_mipi_dsi.c
+++ b/drivers/video/exynos_mipi_dsi.c
@@ -31,6 +31,9 @@
#include "exynos_mipi_dsi_lowlevel.h"
#include "exynos_mipi_dsi_common.h"
+#if defined(CONFIG_SHARP_LCD)
+#include "sharp_mipi_lcd.h"
+#endif
#define master_to_driver(a) (a->dsim_lcd_drv)
#define master_to_device(a) (a->dsim_lcd_dev)
@@ -245,6 +248,7 @@ int exynos_mipi_dsi_init(void)
void exynos_mipi_dsi_stop(void)
{
struct mipi_dsim_device *dsim;
+ struct mipi_dsim_config *dsim_config;
dsim = kzalloc(sizeof(struct mipi_dsim_device), GFP_KERNEL);
if (!dsim) {
@@ -252,6 +256,20 @@ void exynos_mipi_dsi_stop(void)
return -EFAULT;
}
+ /* get mipi_dsim_config. */
+ dsim_config = dsim_pd->dsim_config;
+ if (dsim_config == NULL) {
+ debug("failed to get dsim config data.\n");
+ return -EFAULT;
+ }
+
+ dsim->pd = dsim_pd;
+ dsim->dsim_config = dsim_config;
+ dsim->master_ops = &master_ops;
+
+#if defined(CONFIG_SHARP_LCD)
+ sharp_mipi_power_sequence_off(dsim);
+#endif
exynos_mipi_dsi_sw_reset(dsim);
exynos_mipi_dsi_enable_hs_clock(dsim, 0);
exynos_mipi_dsi_enable_byte_clock(dsim, 0);
diff --git a/drivers/video/sharp_mipi_lcd.c b/drivers/video/sharp_mipi_lcd.c
index f48efd188..48983292d 100644
--- a/drivers/video/sharp_mipi_lcd.c
+++ b/drivers/video/sharp_mipi_lcd.c
@@ -5,6 +5,7 @@
#include "exynos_mipi_dsi_lowlevel.h"
#include "exynos_mipi_dsi_common.h"
+#include "sharp_mipi_lcd.h"
#include "sharp_mipi_lcd_commands.h"
static void sharp_power_sequence_on(struct mipi_dsim_device *dsim)
@@ -69,6 +70,15 @@ static void sharp_power_sequence_on(struct mipi_dsim_device *dsim)
mdelay(130);
}
+void sharp_mipi_power_sequence_off(struct mipi_dsim_device *dsim)
+{
+ struct mipi_dsim_master_ops *ops = dsim->master_ops;
+
+ ops->cmd_write(dsim, MIPI_DSI_DCS_SHORT_WRITE, 0x28, 0x00);
+ ops->cmd_write(dsim, MIPI_DSI_DCS_SHORT_WRITE, 0x10, 0x00);
+ mdelay(110);
+}
+
static int sharp_mipi_lcd_panel_set(struct mipi_dsim_device *dsim)
{
sharp_power_sequence_on(dsim);
diff --git a/drivers/video/sharp_mipi_lcd.h b/drivers/video/sharp_mipi_lcd.h
new file mode 100644
index 000000000..dc690271f
--- /dev/null
+++ b/drivers/video/sharp_mipi_lcd.h
@@ -0,0 +1,8 @@
+/* Header file for sharp display driver */
+
+#ifndef _SHARP_MIPI_LCD_H
+#define _SHARP_MIPI_LCD_H
+
+void sharp_mipi_power_sequence_off(struct mipi_dsim_device *dsim);
+
+#endif /* _SHARP_MIPI_LCD_H */