summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorChandan Uddaraju <chandanu@codeaurora.org>2012-09-28 18:48:15 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:12:42 -0700
commitcbf5bf98f40b60e85d660f603cf1e0d63a41379c (patch)
tree272c234a557ef24c86305fc3248083cd1446a269 /drivers/video/fbdev
parent7473055872fe1079de54a83ef87567f96dee797b (diff)
msm_fb: mdss: Fix dsi controller reset sequence during dsi initialization
Move the dsi_sw_reset from panel ON sequence to controller initialization function. Enable clock lanes and disable controller before doing reset. Change-Id: I570615a931214021360070cd1cfea4ed3b6812d5 Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.c1
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi_host.c11
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi_panel.c2
3 files changed, 12 insertions, 2 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c
index 93d40c09a266..09c810b52ca2 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.c
+++ b/drivers/video/fbdev/msm/mdss_dsi.c
@@ -303,6 +303,7 @@ static int mdss_dsi_on(struct mdss_panel_data *pdata)
MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x5C, data);
}
+ mdss_dsi_sw_reset(pdata);
mdss_dsi_host_init(mipi, pdata);
if (mipi->force_clk_lane_hs) {
diff --git a/drivers/video/fbdev/msm/mdss_dsi_host.c b/drivers/video/fbdev/msm/mdss_dsi_host.c
index 8d88bd9e6416..84dbffadbad1 100644
--- a/drivers/video/fbdev/msm/mdss_dsi_host.c
+++ b/drivers/video/fbdev/msm/mdss_dsi_host.c
@@ -813,6 +813,7 @@ void mipi_set_tx_power_mode(int mode, struct mdss_panel_data *pdata)
void mdss_dsi_sw_reset(struct mdss_panel_data *pdata)
{
struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL;
+ u32 dsi_ctrl;
ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata,
panel_data);
@@ -821,6 +822,16 @@ void mdss_dsi_sw_reset(struct mdss_panel_data *pdata)
return;
}
+ dsi_ctrl = MIPI_INP((ctrl_pdata->ctrl_base) + 0x0004);
+ dsi_ctrl &= ~0x01;
+ MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x0004, dsi_ctrl);
+ wmb();
+
+ /* turn esc, byte, dsi, pclk, sclk, hclk on */
+ MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x11c,
+ 0x23f); /* DSI_CLK_CTRL */
+ wmb();
+
MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x118, 0x01);
wmb();
MIPI_OUTP((ctrl_pdata->ctrl_base) + 0x118, 0x00);
diff --git a/drivers/video/fbdev/msm/mdss_dsi_panel.c b/drivers/video/fbdev/msm/mdss_dsi_panel.c
index 0e18e0fe0c42..4c813e7b8cbf 100644
--- a/drivers/video/fbdev/msm/mdss_dsi_panel.c
+++ b/drivers/video/fbdev/msm/mdss_dsi_panel.c
@@ -106,8 +106,6 @@ static int mdss_dsi_panel_on(struct mdss_panel_data *pdata)
pr_debug("%s:%d, debug info (mode) : %d\n", __func__, __LINE__,
mipi->mode);
- mdss_dsi_sw_reset(pdata);
-
if (mipi->mode == DSI_VIDEO_MODE) {
mdss_dsi_cmds_tx(pdata, &dsi_panel_tx_buf, dsi_panel_on_cmds,
num_of_on_cmds);