浏览代码

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: I320969862b8838a70a8cd3909d244c23871eb430
Signed-off-by: Charishma Jerripothula <[email protected]>
Charishma Jerripothula 1 年之前
父节点
当前提交
9262701035
共有 1 个文件被更改,包括 8 次插入0 次删除
  1. 8 0
      msm/sde/sde_encoder.c

+ 8 - 0
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