summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorKuogee Hsieh <khsieh@codeaurora.org>2014-06-03 10:37:32 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:31:00 -0700
commit0402704a1693a4e561fc8ee9292b36518896b1ae (patch)
tree11718409e1062932a6befe3d7b789022ec9f9e2e /drivers/video/fbdev
parent83ab5ee696c38020a09bd805b56273c69bd70ed2 (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.c12
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_ctl.c11
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c14
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);