msm: mdss: Fix 3D Mux when restoring from DSC on/off

If a resolution switch with DSC on/off is executed during
suspend, it is possible that both 3D mux & DSC merge are
enabled after restore. This change fixes it.

Change-Id: I60cead6fea0023ea402f98f207d57099c2287be6
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
This commit is contained in:
Naseer Ahmed 2017-01-25 10:48:29 -05:00
parent 314869eb56
commit d64ba05ed6

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@ -3614,6 +3614,7 @@ int mdss_mdp_ctl_setup(struct mdss_mdp_ctl *ctl)
u32 width, height;
int split_fb, rc = 0;
u32 max_mixer_width;
bool dsc_merge_enabled = 0;
struct mdss_panel_info *pinfo;
if (!ctl || !ctl->panel_data) {
@ -3738,15 +3739,15 @@ int mdss_mdp_ctl_setup(struct mdss_mdp_ctl *ctl)
ctl->mixer_right = NULL;
}
if (ctl->mixer_right) {
if (!is_dsc_compression(pinfo) ||
(pinfo->dsc_enc_total == 1))
ctl->opmode |= MDSS_MDP_CTL_OP_PACK_3D_ENABLE |
MDSS_MDP_CTL_OP_PACK_3D_H_ROW_INT;
} else {
dsc_merge_enabled = is_dsc_compression(pinfo) &&
(pinfo->dsc_enc_total == 2);
if (ctl->mixer_right && (!dsc_merge_enabled))
ctl->opmode |= MDSS_MDP_CTL_OP_PACK_3D_ENABLE |
MDSS_MDP_CTL_OP_PACK_3D_H_ROW_INT;
else
ctl->opmode &= ~(MDSS_MDP_CTL_OP_PACK_3D_ENABLE |
MDSS_MDP_CTL_OP_PACK_3D_H_ROW_INT);
}
return 0;
}