diff --git a/msm/sde/sde_rm.c b/msm/sde/sde_rm.c index 6fba936feb..07dab42016 100644 --- a/msm/sde/sde_rm.c +++ b/msm/sde/sde_rm.c @@ -190,9 +190,14 @@ static void _sde_rm_inc_resource_info_lm(struct sde_rm *rm, struct sde_rm_hw_blk *blk2; const struct sde_lm_cfg *lm_cfg, *lm_cfg2; + lm_cfg = to_sde_hw_mixer(blk->hw)->cap; + + /* Do not track & expose dummy mixers */ + if (lm_cfg->dummy_mixer) + return; + avail_res->num_lm++; - lm_cfg = to_sde_hw_mixer(blk->hw)->cap; /* Check for 3d muxes by comparing paired lms */ list_for_each_entry(blk2, &rm->hw_blks[SDE_HW_BLK_LM], list) { lm_cfg2 = to_sde_hw_mixer(blk2->hw)->cap; @@ -215,9 +220,14 @@ static void _sde_rm_dec_resource_info_lm(struct sde_rm *rm, struct sde_rm_hw_blk *blk2; const struct sde_lm_cfg *lm_cfg, *lm_cfg2; + lm_cfg = to_sde_hw_mixer(blk->hw)->cap; + + /* Do not track & expose dummy mixers */ + if (lm_cfg->dummy_mixer) + return; + avail_res->num_lm--; - lm_cfg = to_sde_hw_mixer(blk->hw)->cap; /* Check for 3d muxes by comparing paired lms */ list_for_each_entry(blk2, &rm->hw_blks[SDE_HW_BLK_LM], list) { lm_cfg2 = to_sde_hw_mixer(blk2->hw)->cap; @@ -1098,6 +1108,9 @@ static bool _sde_rm_check_lm_and_get_connected_blks( (RM_RQ_DCWB(reqs) && !dcwb_pref)) { SDE_DEBUG("fail: cwb/dcwb supported lm not allocated\n"); return false; + } else if (!RM_RQ_DCWB(reqs) && dcwb_pref) { + SDE_DEBUG("fail: dcwb supported dummy lm incorrectly allocated\n"); + return false; } } else if ((!is_conn_primary && lm_primary_pref) || (!is_conn_secondary && lm_secondary_pref)) {