diff options
| author | Mukesh Jha <cmjha@codeaurora.org> | 2013-04-10 12:11:43 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:17:16 -0700 |
| commit | bc174b81b0f497c27efa2437d68592b9faf28ca9 (patch) | |
| tree | ebbe1045fe108c86a8269c59d7af6e260c76af75 | |
| parent | 24e01f5fec952cd422469c862c522069519a2c2f (diff) | |
msm: mdss: Support updates from both the mixers on splitdisplay
Support updates in both mixers when running ARGC,PCC test
(destination side) on split display.Allow the dualpipe case
to update simultaneously on both right and left mixers by using
"ctl" structures's pointers to left and right mixers instead of
"split ctl" structures.
Change-Id: Ic5fb291802af35f08870f2f121c5aff93d0b993e
Signed-off-by: Mukesh Jha <cmjha@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_ctl.c | 1 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_pp.c | 26 |
2 files changed, 15 insertions, 12 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c index e34608215a02..4b763aaac681 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c +++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c @@ -1505,7 +1505,6 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg) mdss_mdp_pp_setup_locked(ctl); mdss_mdp_ctl_write(ctl, MDSS_MDP_REG_CTL_FLUSH, ctl->flush_bits); if (sctl) { - mdss_mdp_pp_setup_locked(sctl); mdss_mdp_ctl_write(sctl, MDSS_MDP_REG_CTL_FLUSH, sctl->flush_bits); } diff --git a/drivers/video/fbdev/msm/mdss_mdp_pp.c b/drivers/video/fbdev/msm/mdss_mdp_pp.c index fcc1c1ae6bf5..9d282656da1e 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_pp.c +++ b/drivers/video/fbdev/msm/mdss_mdp_pp.c @@ -888,14 +888,19 @@ int mdss_mdp_pipe_sspp_setup(struct mdss_mdp_pipe *pipe, u32 *op) return ret; } -static int pp_mixer_setup(u32 disp_num, struct mdss_mdp_ctl *ctl, +static int pp_mixer_setup(u32 disp_num, struct mdss_mdp_mixer *mixer) { u32 flags, offset, dspp_num, opmode = 0; struct mdp_pgc_lut_data *pgc_config; struct pp_sts_type *pp_sts; + struct mdss_mdp_ctl *ctl; dspp_num = mixer->num; + if (!mixer || !mixer->ctl) + return -EINVAL; + ctl = mixer->ctl; + /* no corresponding dspp */ if ((mixer->type != MDSS_MDP_MIXER_TYPE_INTF) || (dspp_num >= MDSS_MDP_MAX_DSPP)) @@ -1003,8 +1008,7 @@ error: return ret; } -static int pp_dspp_setup(u32 disp_num, struct mdss_mdp_ctl *ctl, - struct mdss_mdp_mixer *mixer) +static int pp_dspp_setup(u32 disp_num, struct mdss_mdp_mixer *mixer) { u32 flags, base, offset, dspp_num, opmode = 0; struct mdp_dither_cfg_data *dither_cfg; @@ -1014,12 +1018,12 @@ static int pp_dspp_setup(u32 disp_num, struct mdss_mdp_ctl *ctl, char __iomem *basel; int i, ret = 0; struct mdss_data_type *mdata; + struct mdss_mdp_ctl *ctl; - mdata = ctl->mdata; - - if (!mixer || !ctl || !mdata) + if (!mixer || !mixer->ctl || !mixer->ctl->mdata) return -EINVAL; - + ctl = mixer->ctl; + mdata = ctl->mdata; dspp_num = mixer->num; /* no corresponding dspp */ if ((mixer->type != MDSS_MDP_MIXER_TYPE_INTF) || @@ -1174,12 +1178,12 @@ int mdss_mdp_pp_setup_locked(struct mdss_mdp_ctl *ctl) mutex_lock(&mdss_pp_mutex); if (ctl->mixer_left) { - pp_mixer_setup(disp_num, ctl, ctl->mixer_left); - pp_dspp_setup(disp_num, ctl, ctl->mixer_left); + pp_mixer_setup(disp_num, ctl->mixer_left); + pp_dspp_setup(disp_num, ctl->mixer_left); } if (ctl->mixer_right) { - pp_mixer_setup(disp_num, ctl, ctl->mixer_right); - pp_dspp_setup(disp_num, ctl, ctl->mixer_right); + pp_mixer_setup(disp_num, ctl->mixer_right); + pp_dspp_setup(disp_num, ctl->mixer_right); } /* clear dirty flag */ if (disp_num < MDSS_BLOCK_DISP_NUM) |
