platform: msm_shared: Configure MDP5 for dual DSI cmd mode panel
Configure MDP5 registers to support dual DSI command
mode panels.
Change-Id: I4fe0fd64b3175c70e09874acc5e4c432297e20b5
diff --git a/platform/msm_shared/mdp5.c b/platform/msm_shared/mdp5.c
index e069569..50e1cd5 100644
--- a/platform/msm_shared/mdp5.c
+++ b/platform/msm_shared/mdp5.c
@@ -463,6 +463,7 @@
int mdp_dsi_cmd_config(struct msm_panel_info *pinfo,
struct fbcon_config *fb)
{
+ uint32_t intf_sel = BIT(8);
int ret = NO_ERROR;
struct lcdc_panel_info *lcdc = NULL;
@@ -475,23 +476,38 @@
if (lcdc == NULL)
return ERR_INVALID_ARGS;
+ if (pinfo->lcdc.split_display) {
+ writel(0x102, MDP_REG_SPLIT_DISPLAY_UPPER_PIPE_CTL);
+ writel(0x2, MDP_REG_SPLIT_DISPLAY_LOWER_PIPE_CTL);
+ writel(0x1, MDP_REG_SPLIT_DISPLAY_EN);
+ }
+
mdss_mdp_intf_off = mdss_mdp_intf_offset();
mdp_clk_gating_ctrl();
- writel(0x0100, MDP_DISP_INTF_SEL);
+ if (pinfo->mipi.dual_dsi)
+ intf_sel |= BIT(16); /* INTF 2 enable */
+
+ writel(intf_sel, MDP_DISP_INTF_SEL);
mdss_vbif_setup();
mdss_smp_setup(pinfo);
mdss_qos_remapper_setup();
mdss_rgb_pipe_config(fb, pinfo, MDP_VP_0_RGB_0_BASE);
+ if (pinfo->lcdc.dual_pipe)
+ mdss_rgb_pipe_config(fb, pinfo, MDP_VP_0_RGB_1_BASE);
mdss_layer_mixer_setup(fb, pinfo);
writel(0x213F, MDP_INTF_1_BASE + MDP_PANEL_FORMAT + mdss_mdp_intf_off);
+ writel(0x21f20, MDP_CTL_0_BASE + CTL_TOP);
- writel(0x20020, MDP_CTL_0_BASE + CTL_TOP);
+ if (pinfo->mipi.dual_dsi) {
+ writel(0x213F, MDP_INTF_2_BASE + MDP_PANEL_FORMAT + mdss_mdp_intf_off);
+ writel(0x21F30, MDP_CTL_1_BASE + CTL_TOP);
+ }
return ret;
}
@@ -538,6 +554,7 @@
int mdp_dma_on(void)
{
writel(0x32048, MDP_CTL_0_BASE + CTL_FLUSH);
+ writel(0x32090, MDP_CTL_1_BASE + CTL_FLUSH);
writel(0x01, MDP_CTL_0_BASE + CTL_START);
return NO_ERROR;
}