diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index cb5990cd52bb..4479dc68035e 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -917,6 +917,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); @@ -927,6 +933,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