platform: msm_shared: add pingpong-split support through topology configs
Pingpong-split defines a HW data path but whether to use it or not should
be panel and target dependent. Thus add support for panel to specify if
pingpong-split should be used or not through topology configurations.
Change-Id: Iebe8fafcd5030ebba167e58c719a3bad9d4ac896
diff --git a/platform/msm_shared/mdp5.c b/platform/msm_shared/mdp5.c
index 461a14e..19317ac 100755
--- a/platform/msm_shared/mdp5.c
+++ b/platform/msm_shared/mdp5.c
@@ -93,10 +93,12 @@
/* return MMSS_MDP_PPB0_CONFIG offset from MDSS base */
if ((mdss_mdp_rev == MDSS_MDP_HW_REV_108) ||
- (mdss_mdp_rev == MDSS_MDP_HW_REV_111))
+ (mdss_mdp_rev == MDSS_MDP_HW_REV_111))
mdss_mdp_ppb_off = 0x1420;
else if (mdss_mdp_rev == MDSS_MDP_HW_REV_110)
mdss_mdp_ppb_off = 0x1334;
+ else if (MDSS_IS_MAJOR_MINOR_MATCHING(mdss_mdp_rev, MDSS_MDP_HW_REV_107))
+ mdss_mdp_ppb_off = 0x1330;
else
dprintf(CRITICAL,"Invalid PPB0_CONFIG offset\n");
@@ -523,10 +525,10 @@
}
}
- if (pinfo->lcdc.dst_split && (intf_base == (MDP_INTF_1_BASE + mdss_mdp_intf_offset()))) {
+ if (pinfo->lcdc.dst_split && (intf_base == (MDP_INTF_1_BASE + mdss_mdp_intf_offset()))) {
uint32_t ppb_offset = mdss_mdp_get_ppb_offset();
- writel(BIT(16), REG_MDP(ppb_offset + 0x4)); /* MMSS_MDP_PPB0_CNTL */
- writel(BIT(5), REG_MDP(ppb_offset)); /* MMSS_MDP_PPB0_CONFIG */
+ writel(BIT(5), REG_MDP(ppb_offset)); /* MMSS_MDP_PPB0_CNTL */
+ writel(BIT(16) | (0x3 << 20), REG_MDP(ppb_offset + 0x4)); /* MMSS_MDP_PPB0_CONFIG */
}
if (pinfo->compression_mode == COMPRESSION_FBC)
@@ -1140,8 +1142,8 @@
if (pinfo->lcdc.dst_split) {
uint32_t ppb_offset = mdss_mdp_get_ppb_offset();
- writel(BIT(16) | BIT(20) | BIT(21), REG_MDP(ppb_offset + 0x4)); /* MMSS_MDP_PPB0_CNTL */
- writel(BIT(5), REG_MDP(ppb_offset)); /* MMSS_MDP_PPB0_CONFIG */
+ writel(BIT(5), REG_MDP(ppb_offset)); /* MMSS_MDP_PPB0_CNTL */
+ writel(BIT(16) | (0x3 << 20), REG_MDP(ppb_offset + 0x4)); /* MMSS_MDP_PPB0_CONFIG */
}
mdp_clk_gating_ctrl();