Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 730cc84c authored by Dhaval Patel's avatar Dhaval Patel Committed by Gerrit - the friendly Code Review server
Browse files

drm/msm/sde: move crtc caching to encoder_modeset



Atomic commit path calls encoder_modeset followed by
encoder_enable. Crtc caching within encoder_enable is late
for bootup cases because modeset request also need the
cached crtc access. Avoid invalid crtc error message
by caching at modeset level instead of encoder enable.

Change-Id: I1a9ba3e79a3ef6abee8fec7a7517ce32f1f88c93
Signed-off-by: default avatarDhaval Patel <pdhaval@codeaurora.org>
parent 87ef03a5
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -2496,6 +2496,16 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc,

	SDE_EVT32(DRMID(drm_enc));

	/*
	 * cache the crtc in sde_enc on enable for duration of use case
	 * for correctly servicing asynchronous irq events and timers
	 */
	if (!drm_enc->crtc) {
		SDE_ERROR("invalid crtc\n");
		return;
	}
	sde_enc->crtc = drm_enc->crtc;

	list_for_each_entry(conn_iter, connector_list, head)
		if (conn_iter->encoder == drm_enc)
			conn = conn_iter;
@@ -2706,16 +2716,6 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
		return;
	}

	/*
	 * cache the crtc in sde_enc on enable for duration of use case
	 * for correctly servicing asynchronous irq events and timers
	 */
	if (!drm_enc->crtc) {
		SDE_ERROR("invalid crtc\n");
		return;
	}
	sde_enc->crtc = drm_enc->crtc;

	ret = _sde_encoder_get_mode_info(drm_enc, &mode_info);
	if (ret) {
		SDE_ERROR_ENC(sde_enc, "failed to get mode info\n");