summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPing Li <quicpingli@codeaurora.org>2014-02-06 00:03:41 -0500
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:27:06 -0700
commitcb19edb05931fea760151895da4541e3f2024ed2 (patch)
treeea6901c02e68d75cdc2afe0bbf59318b41bc87d9
parent272a45484830c09b6acc57399429c4a3d2613bc2 (diff)
msm:mdss: Fix the issue with AD resume
AD is not configured correctly on dual DSI devices during suspend/resume. The AD configuration data from user space are only copied to the master AD configuration structure, and the AD configuration structure attached to the right mixer (slave AD structure) is never filled. So in the resume function, we cannot use the AD configuration data from the slave AD configuration. Use the one from the master structure instead. Change-Id: I04cf3c467c2614420e01f9177f564eec7ce7bb23 Signed-off-by: Ping Li <quicpingli@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_pp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_pp.c b/drivers/video/fbdev/msm/mdss_mdp_pp.c
index 53f98acc60f4..3089afeba306 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_pp.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_pp.c
@@ -1764,7 +1764,7 @@ exit:
*/
int mdss_mdp_pp_resume(struct mdss_mdp_ctl *ctl, u32 dspp_num)
{
- u32 flags = 0, disp_num, bl;
+ u32 flags = 0, disp_num, bl, ret = 0;
struct pp_sts_type pp_sts;
struct mdss_ad_info *ad;
struct mdss_data_type *mdata = ctl->mdata;
@@ -1779,7 +1779,9 @@ int mdss_mdp_pp_resume(struct mdss_mdp_ctl *ctl, u32 dspp_num)
disp_num = ctl->mfd->index;
if (dspp_num < mdata->nad_cfgs) {
- ad = &mdata->ad_cfgs[dspp_num];
+ ret = mdss_mdp_get_ad(ctl->mfd, &ad);
+ if (ret)
+ return ret;
if (PP_AD_STATE_CFG & ad->state)
pp_ad_cfg_write(&mdata->ad_off[dspp_num], ad);