diff --git a/msm/sde/sde_hw_top.c b/msm/sde/sde_hw_top.c index d61d6e6140..78b687068a 100644 --- a/msm/sde/sde_hw_top.c +++ b/msm/sde/sde_hw_top.c @@ -126,7 +126,17 @@ static void sde_hw_setup_split_pipe(struct sde_hw_mdp *mdp, c = &mdp->hw; - if (cfg->en) { + if (test_bit(SDE_MDP_PERIPH_TOP_0_REMOVED, &mdp->caps->features) && cfg->en) { + /* avoid programming of legacy bits like SW_TRG_MUX for new targets */ + if (cfg->mode == INTF_MODE_CMD) { + lower_pipe |= BIT(mdp->caps->smart_panel_align_mode); + + upper_pipe = lower_pipe; + + if (cfg->pp_split_slave != INTF_MAX) + lower_pipe = FLD_SMART_PANEL_FREE_RUN; + } + } else if (cfg->en) { if (cfg->mode == INTF_MODE_CMD) { lower_pipe = FLD_SPLIT_DISPLAY_CMD; /* interface controlling sw trigger */