From ee9b8ca504caed24eb54a5d2e885f9d3441c141a Mon Sep 17 00:00:00 2001 From: Jayaprakash Madisetty Date: Tue, 20 Jul 2021 19:26:45 +0530 Subject: [PATCH] disp: msm: sde: skip RM reserve for primary in cwb on/off usecase Add changes to skip RM allocation during atomic_check for dsi connectors which can have a seamless transition during CWB usecase. When CWB gets enabled in alternate commits N, N+2 on dsi connectors there is back to back connectors_changed modeset and poll gets enabled for the consecutive commit N+1, N+3 on rsvp_nxt to get cleared. This rsvp_nxt will be cleared on drm_atomic_state_put of commit N, N+2, hence atomic_check of commit N+1, N+3 is blocked until this time causing commit failures. Change-Id: I06f7a8d9dadb42b6d69201afeff099d554edd98e Signed-off-by: Jayaprakash Madisetty --- msm/sde/sde_encoder.c | 7 +++++++ 1 file changed, 7 insertions(+) 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