summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Huang <lhuang@nvidia.com>2011-07-30 00:51:25 -0700
committerRyan Wong <ryanw@nvidia.com>2011-07-31 17:36:13 -0700
commitc19945cd9eea9d588d785753d150d745bf0e2586 (patch)
tree3bca6eec06f663f2f188eb33e7ba548dd4dd042f
parent360905006e9f8b9e7a9f4025b8c8f0b657ad947f (diff)
arm: tegra: dsi: war to fix dsi issue on suspend DO NOT MERGEtegra-12r5.1-rc1tegra-12r5.1
1. Fix the command for early-suspend/late-resume 2. Disable dsi syncpt, since it is not working reliably Change-Id: I1a1ffc6302b3436c2e3ada328fd3dfd53489d95e Reviewed-on: http://git-master/r/44192 Reviewed-by: Chih-Lung Huang <lhuang@nvidia.com> Tested-by: Chih-Lung Huang <lhuang@nvidia.com> Reviewed-by: Ryan Wong <ryanw@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/board-enterprise-panel.c18
-rw-r--r--drivers/video/tegra/dc/dsi.c7
2 files changed, 11 insertions, 14 deletions
diff --git a/arch/arm/mach-tegra/board-enterprise-panel.c b/arch/arm/mach-tegra/board-enterprise-panel.c
index a936787..180b47f 100644
--- a/arch/arm/mach-tegra/board-enterprise-panel.c
+++ b/arch/arm/mach-tegra/board-enterprise-panel.c
@@ -460,9 +460,14 @@ static struct tegra_dsi_cmd dsi_early_suspend_cmd[] = {
#if(DC_CTRL_MODE == TEGRA_DC_OUT_ONE_SHOT_MODE)
DSI_CMD_SHORT(0x05, 0x34, 0x00),
#endif
+ DSI_CMD_SHORT(0x05, 0x10, 0x00),
+ DSI_DLY_MS(5),
};
+
static struct tegra_dsi_cmd dsi_late_resume_cmd[] = {
+ DSI_CMD_SHORT(0x05, 0x11, 0x00),
+ DSI_DLY_MS(150),
#if(DC_CTRL_MODE == TEGRA_DC_OUT_ONE_SHOT_MODE)
DSI_CMD_SHORT(0x15, 0x35, 0x00),
#endif
@@ -470,16 +475,6 @@ static struct tegra_dsi_cmd dsi_late_resume_cmd[] = {
DSI_DLY_MS(20),
};
-static struct tegra_dsi_cmd dsi_suspend_cmd[] = {
- DSI_CMD_SHORT(0x05, 0x28, 0x00),
- DSI_DLY_MS(20),
-#if(DC_CTRL_MODE == TEGRA_DC_OUT_ONE_SHOT_MODE)
- DSI_CMD_SHORT(0x05, 0x34, 0x00),
-#endif
- DSI_CMD_SHORT(0x05, 0x10, 0x00),
- DSI_DLY_MS(5),
-};
-
struct tegra_dsi_out enterprise_dsi = {
.n_data_lanes = 2,
.pixel_format = TEGRA_DSI_PIXEL_FORMAT_24BIT_P,
@@ -500,9 +495,6 @@ struct tegra_dsi_out enterprise_dsi = {
.n_late_resume_cmd = ARRAY_SIZE(dsi_late_resume_cmd),
.dsi_late_resume_cmd = dsi_late_resume_cmd,
- .n_suspend_cmd = ARRAY_SIZE(dsi_suspend_cmd),
- .dsi_suspend_cmd = dsi_suspend_cmd,
-
.video_data_type = TEGRA_DSI_VIDEO_TYPE_COMMAND_MODE,
.lp_cmd_mode_freq_khz = 20000,
};
diff --git a/drivers/video/tegra/dc/dsi.c b/drivers/video/tegra/dc/dsi.c
index 66281a3..6615d14 100644
--- a/drivers/video/tegra/dc/dsi.c
+++ b/drivers/video/tegra/dc/dsi.c
@@ -38,7 +38,7 @@
#include "dsi_regs.h"
#include "dsi.h"
-#define DSI_USE_SYNC_POINTS 1
+#define DSI_USE_SYNC_POINTS 0
#define DSI_STOP_DC_DURATION_MSEC 1000
@@ -1080,6 +1080,11 @@ static int tegra_dsi_init_hw(struct tegra_dc *dc,
u32 val;
u32 i;
+ val = DSI_POWER_CONTROL_LEG_DSI_ENABLE(TEGRA_DSI_DISABLE);
+ tegra_dsi_writel(dsi, val, DSI_POWER_CONTROL);
+
+ udelay(5);
+
tegra_dsi_set_dsi_clk(dc, dsi, dsi->target_lp_clk_khz);
if (dsi->info.dsi_instance) {
/* TODO:Set the misc register*/