diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 18b5d3d7bb..d218782c79 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -1130,6 +1130,13 @@ 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 && + !msm_is_private_mode_changed(conn_state) && (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); @@ -1140,6 +1147,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