diff options
| author | Kuogee Hsieh <khsieh@codeaurora.org> | 2014-06-03 10:37:32 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:31:00 -0700 |
| commit | 0402704a1693a4e561fc8ee9292b36518896b1ae (patch) | |
| tree | 11718409e1062932a6befe3d7b789022ec9f9e2e /drivers/video/fbdev | |
| parent | 83ab5ee696c38020a09bd805b56273c69bd70ed2 (diff) | |
mdss: display: always send both column and page to panel
At partial update, When broadcast mode enabled, dsi1 is used
to trigger dcs command to be sent to both panel. Therefore
set_col_page dcs command of dsi1 can not be skipped even its
roi has not changed.
CRs-Fixed: 679218
Change-Id: Id979433fc3993dfb5e6aee4b9779c2cde42617f1
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi_panel.c | 12 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_ctl.c | 11 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c | 14 |
3 files changed, 20 insertions, 17 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi_panel.c b/drivers/video/fbdev/msm/mdss_dsi_panel.c index 162469915bd3..f5e68013df2c 100644 --- a/drivers/video/fbdev/msm/mdss_dsi_panel.c +++ b/drivers/video/fbdev/msm/mdss_dsi_panel.c @@ -392,8 +392,13 @@ static int mdss_dsi_set_col_page_addr(struct mdss_panel_data *pdata) p_roi = &pinfo->roi; c_roi = &ctrl->roi; - if (!mdss_rect_cmp(c_roi, p_roi)) { - pr_debug("%s: ndx=%d x=%d y=%d w=%d h=%d\n", + /* + * if broadcase mode enable or roi had changed + * then do col_page update + */ + if (mdss_dsi_broadcast_mode_enabled() || + !mdss_rect_cmp(c_roi, p_roi)) { + pr_debug("%s: ndx=%d x=%d y=%d w=%d h=%d\n", __func__, ctrl->ndx, p_roi->x, p_roi->y, p_roi->w, p_roi->h); @@ -402,7 +407,8 @@ static int mdss_dsi_set_col_page_addr(struct mdss_panel_data *pdata) /* no new frame update */ pr_debug("%s: ctrl=%d, no partial roi set\n", __func__, ctrl->ndx); - return 0; + if (!mdss_dsi_broadcast_mode_enabled()) + return 0; } roi = *c_roi; diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c index 7235e2f223ef..8e223faafbbd 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c +++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c @@ -2979,6 +2979,17 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg) mdss_mdp_xlog_mixer_reg(ctl); + if (ctl->panel_data && + ctl->panel_data->panel_info.partial_update_enabled) { + /* + * update roi of panel_info which will be + * used by dsi to set col_page addr of panel + */ + ctl->panel_data->panel_info.roi = ctl->roi; + if (sctl && sctl->panel_data) + sctl->panel_data->panel_info.roi = sctl->roi; + } + if (sctl && !ctl->valid_roi && sctl->valid_roi) { /* * Seperate kickoff on DSI1 is needed only when we have diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c index 560ae50252d4..425e442fa200 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c +++ b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c @@ -614,25 +614,11 @@ static void mdss_mdp_cmd_set_sync_ctx( static int mdss_mdp_cmd_set_partial_roi(struct mdss_mdp_ctl *ctl) { - struct mdss_mdp_ctl *sctl = NULL; - struct mdss_rect *roi; int rc = 0; if (!ctl->panel_data->panel_info.partial_update_enabled) return rc; - sctl = mdss_mdp_get_split_ctl(ctl); - - /* save roi to pinfo which used by dsi controller */ - roi = &ctl->panel_data->panel_info.roi; - *roi = ctl->roi; - - if (sctl) { - /* save roi to pinfo whcih used by dsi controller */ - roi = &sctl->panel_data->panel_info.roi; - *roi = sctl->roi; - } - /* set panel col and page addr */ rc = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_ENABLE_PARTIAL_ROI, NULL); |
