summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-cardhu-panel.c
diff options
context:
space:
mode:
authorRakesh Iyer <riyer@nvidia.com>2012-06-19 17:52:52 -0700
committerSimone Willett <swillett@nvidia.com>2012-07-01 09:15:00 -0700
commit42b6ed043eb443b5a8e1de576aac124c3bcba4cb (patch)
tree8562ca8e4d3a6a68f8989d62f0db6885142b94c4 /arch/arm/mach-tegra/board-cardhu-panel.c
parent39885f81c383e7df335753730d12e1c293af9b0c (diff)
ARM: tegra: cardhu: power management fix for E1506 panel
Fix for power up/down sequencing for 720p DSI panel on the E1506. Bug 997484. Change-Id: Ia65e20b96da3bad0703136839eaf0394f9c7b364 Signed-off-by: Rakesh Iyer <riyer@nvidia.com> Reviewed-on: http://git-master/r/109918 (cherry picked from commit c6f7033ddbc18a4b780620d1e7d65fe2ce5e4108) Reviewed-on: http://git-master/r/111945 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Animesh Kishore <ankishore@nvidia.com> Reviewed-by: Jon Mayo <jmayo@nvidia.com> GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'arch/arm/mach-tegra/board-cardhu-panel.c')
-rw-r--r--arch/arm/mach-tegra/board-cardhu-panel.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/arch/arm/mach-tegra/board-cardhu-panel.c b/arch/arm/mach-tegra/board-cardhu-panel.c
index 2a9e5201061a..4fde792269cc 100644
--- a/arch/arm/mach-tegra/board-cardhu-panel.c
+++ b/arch/arm/mach-tegra/board-cardhu-panel.c
@@ -137,7 +137,6 @@ static tegra_dc_bl_output cardhu_bl_output_measured = {
static p_tegra_dc_bl_output bl_output = cardhu_bl_output_measured;
-static bool kernel_1st_panel_init = true;
static bool is_panel_218;
static bool is_panel_219;
static bool is_panel_1506;
@@ -802,7 +801,7 @@ static int cardhu_dsi_panel_enable(void)
}
gpio_set_value(e1506_dsi_vddio, 1);
- mdelay(10);
+ mdelay(1);
gpio_set_value(e1506_panel_enb, 1);
mdelay(10);
gpio_set_value(e1506_bl_enb, 1);
@@ -881,15 +880,12 @@ static int cardhu_dsi_panel_disable(void)
} else if (is_panel_1506) {
tegra_gpio_disable(e1506_bl_enb);
gpio_free(e1506_bl_enb);
+ tegra_gpio_disable(cardhu_dsi_pnl_reset);
+ gpio_free(cardhu_dsi_pnl_reset);
tegra_gpio_disable(e1506_panel_enb);
gpio_free(e1506_panel_enb);
tegra_gpio_disable(e1506_dsi_vddio);
gpio_free(e1506_dsi_vddio);
- if (kernel_1st_panel_init != true) {
- tegra_gpio_disable(cardhu_dsi_pnl_reset);
- gpio_free(cardhu_dsi_pnl_reset);
- } else
- kernel_1st_panel_init = false;
}
return err;
}
@@ -970,6 +966,12 @@ static struct tegra_dsi_cmd dsi_suspend_cmd[] = {
DSI_DLY_MS(5),
};
+static struct tegra_dsi_cmd dsi_suspend_cmd_1506[] = {
+ DSI_CMD_SHORT(0x05, 0x28, 0x00),
+ DSI_CMD_SHORT(0x05, 0x10, 0x00),
+ DSI_DLY_MS(120),
+};
+
struct tegra_dsi_out cardhu_dsi = {
.n_data_lanes = 2,
.pixel_format = TEGRA_DSI_PIXEL_FORMAT_24BIT_P,
@@ -1256,6 +1258,8 @@ static void cardhu_panel_preinit(void)
cardhu_dsi.n_init_cmd = ARRAY_SIZE(dsi_init_cmd);
cardhu_dsi.dsi_init_cmd = dsi_init_cmd;
+ cardhu_dsi.n_suspend_cmd = ARRAY_SIZE(dsi_suspend_cmd);
+ cardhu_dsi.dsi_suspend_cmd = dsi_suspend_cmd;
if (is_panel_218) {
cardhu_disp1_out.modes = cardhu_dsi_modes_218;
@@ -1275,6 +1279,10 @@ static void cardhu_panel_preinit(void)
ARRAY_SIZE(cardhu_dsi_modes_1506);
cardhu_dsi.n_init_cmd = ARRAY_SIZE(dsi_init_cmd_1506);
cardhu_dsi.dsi_init_cmd = dsi_init_cmd_1506;
+ cardhu_dsi.n_suspend_cmd =
+ ARRAY_SIZE(dsi_suspend_cmd_1506);
+ cardhu_dsi.dsi_suspend_cmd = dsi_suspend_cmd_1506;
+ cardhu_dsi.panel_send_dc_frames = true,
cardhu_dsi_fb_data.xres = 720;
cardhu_dsi_fb_data.yres = 1280;
}