diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 76d8e779b127..14da4f5d952e 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -919,6 +919,12 @@ static int _sde_encoder_atomic_check_reserve(struct drm_encoder *drm_enc, return ret; } + /* Skip RM allocation for Primary during CWB usecase */ + if (!crtc_state->mode_changed && !crtc_state->active_changed && + crtc_state->connectors_changed && (conn_state->crtc == + conn_state->connector->state->crtc)) + goto skip_reserve; + /* Reserve dynamic resources, indicating atomic_check phase */ ret = sde_rm_reserve(&sde_kms->rm, drm_enc, crtc_state, conn_state, true); @@ -929,6 +935,7 @@ static int _sde_encoder_atomic_check_reserve(struct drm_encoder *drm_enc, return ret; } +skip_reserve: /** * Update connector state with the topology selected for the * resource set validated. Reset the topology if we are