Commit 6a88e0c1 authored by Wen He's avatar Wen He Committed by Liviu Dudau
Browse files

drm/arm/mali-dp: Add a loop around the second set CVAL and try 5 times



This patch trying to fix monitor freeze issue caused by drm error
'flip_done timed out' on LS1028A platform. this set try is make a loop
around the second setting CVAL and try like 5 times before giveing up.

Signed-off-by: default avatarWen He <wen.he_1@nxp.com>
Signed-off-by: default avatarLiviu Dudau <liviu.dudau@arm.com>
parent a260e0b8
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -192,6 +192,7 @@ static void malidp_atomic_commit_hw_done(struct drm_atomic_state *state)
{
	struct drm_device *drm = state->dev;
	struct malidp_drm *malidp = drm->dev_private;
	int loop = 5;

	malidp->event = malidp->crtc.state->event;
	malidp->crtc.state->event = NULL;
@@ -206,8 +207,18 @@ static void malidp_atomic_commit_hw_done(struct drm_atomic_state *state)
			drm_crtc_vblank_get(&malidp->crtc);

		/* only set config_valid if the CRTC is enabled */
		if (malidp_set_and_wait_config_valid(drm) < 0)
		if (malidp_set_and_wait_config_valid(drm) < 0) {
			/*
			 * make a loop around the second CVAL setting and
			 * try 5 times before giving up.
			 */
			while (loop--) {
				if (!malidp_set_and_wait_config_valid(drm))
					break;
			}
			DRM_DEBUG_DRIVER("timed out waiting for updated configuration\n");
		}

	} else if (malidp->event) {
		/* CRTC inactive means vblank IRQ is disabled, send event directly */
		spin_lock_irq(&drm->event_lock);