From 2af6aecbef8830f49d9cabe6f55c56700dec23df Mon Sep 17 00:00:00 2001 From: Kuogee Hsieh Date: Fri, 31 Oct 2014 11:09:28 -0700 Subject: [PATCH] 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 --- drivers/video/fbdev/msm/mdss_dsi.c | 7 +++++++ drivers/video/fbdev/msm/mdss_dsi.h | 1 + drivers/video/fbdev/msm/mdss_dsi_host.c | 10 ++++++++++ 3 files changed, 18 insertions(+) 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) {