summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorKuogee Hsieh <khsieh@codeaurora.org>2014-10-31 11:09:28 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:35:51 -0700
commit2af6aecbef8830f49d9cabe6f55c56700dec23df (patch)
treeb496a377e9722eb1de8817b9c17055dea92fab1d /drivers
parent1f09285af58262ff2a1d8f46caec50e9c6002d28 (diff)
msm: mdss: restore dsi interrupt mask bits
DSI interrupts are not enabled at LK. For cont_splash case, dsi interrupt mask bits need to be restored to enable interrupts so that dcs command be sent to panel. CRs-Fixed: 745369 Change-Id: Ice61d538387c5d37dd9e077f01b4c6d4593cc393 Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.c7
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.h1
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi_host.c10
3 files changed, 18 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c
index 4a0f323085db..26baac5e6c8d 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.c
+++ b/drivers/video/fbdev/msm/mdss_dsi.c
@@ -559,6 +559,13 @@ int mdss_dsi_on(struct mdss_panel_data *pdata)
mipi = &pdata->panel_info.mipi;
if (mdss_dsi_is_panel_on_interactive(pdata)) {
+ /*
+ * all interrupts are disabled at LK
+ * for cont_splash case, intr mask bits need
+ * to be restored to allow dcs command be
+ * sent to panel
+ */
+ mdss_dsi_restore_intr_mask(ctrl_pdata);
pr_debug("%s: panel already on\n", __func__);
goto end;
}
diff --git a/drivers/video/fbdev/msm/mdss_dsi.h b/drivers/video/fbdev/msm/mdss_dsi.h
index 8878663d7722..46832edd5a62 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.h
+++ b/drivers/video/fbdev/msm/mdss_dsi.h
@@ -413,6 +413,7 @@ int mdss_dsi_cmds_rx(struct mdss_dsi_ctrl_pdata *ctrl,
void mdss_dsi_host_init(struct mdss_panel_data *pdata);
void mdss_dsi_op_mode_config(int mode,
struct mdss_panel_data *pdata);
+void mdss_dsi_restore_intr_mask(struct mdss_dsi_ctrl_pdata *ctrl);
void mdss_dsi_cmd_mode_ctrl(int enable);
void mdp4_dsi_cmd_trigger(void);
void mdss_dsi_cmd_mdp_start(struct mdss_dsi_ctrl_pdata *ctrl);
diff --git a/drivers/video/fbdev/msm/mdss_dsi_host.c b/drivers/video/fbdev/msm/mdss_dsi_host.c
index f7ca4b6cf816..63b93f179116 100644
--- a/drivers/video/fbdev/msm/mdss_dsi_host.c
+++ b/drivers/video/fbdev/msm/mdss_dsi_host.c
@@ -779,6 +779,16 @@ void mdss_dsi_controller_cfg(int enable,
wmb();
}
+void mdss_dsi_restore_intr_mask(struct mdss_dsi_ctrl_pdata *ctrl)
+{
+ u32 mask;
+
+ mask = MIPI_INP((ctrl->ctrl_base) + 0x0110);
+ mask |= (DSI_INTR_CMD_DMA_DONE_MASK | DSI_INTR_ERROR_MASK |
+ DSI_INTR_BTA_DONE_MASK);
+ MIPI_OUTP((ctrl->ctrl_base) + 0x0110, mask);
+}
+
void mdss_dsi_op_mode_config(int mode,
struct mdss_panel_data *pdata)
{