diff options
| author | Chandan Uddaraju <chandanu@codeaurora.org> | 2012-09-28 18:48:15 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:12:42 -0700 |
| commit | cbf5bf98f40b60e85d660f603cf1e0d63a41379c (patch) | |
| tree | 272c234a557ef24c86305fc3248083cd1446a269 /drivers/video/fbdev | |
| parent | 7473055872fe1079de54a83ef87567f96dee797b (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.c | 1 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi_host.c | 11 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi_panel.c | 2 |
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); |
