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: Wen He <wen.he_1@nxp.com> Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
This commit is contained in:
parent
a260e0b847
commit
6a88e0c148
@ -192,6 +192,7 @@ static void malidp_atomic_commit_hw_done(struct drm_atomic_state *state)
|
|||||||
{
|
{
|
||||||
struct drm_device *drm = state->dev;
|
struct drm_device *drm = state->dev;
|
||||||
struct malidp_drm *malidp = drm->dev_private;
|
struct malidp_drm *malidp = drm->dev_private;
|
||||||
|
int loop = 5;
|
||||||
|
|
||||||
malidp->event = malidp->crtc.state->event;
|
malidp->event = malidp->crtc.state->event;
|
||||||
malidp->crtc.state->event = NULL;
|
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);
|
drm_crtc_vblank_get(&malidp->crtc);
|
||||||
|
|
||||||
/* only set config_valid if the CRTC is enabled */
|
/* 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");
|
DRM_DEBUG_DRIVER("timed out waiting for updated configuration\n");
|
||||||
|
}
|
||||||
|
|
||||||
} else if (malidp->event) {
|
} else if (malidp->event) {
|
||||||
/* CRTC inactive means vblank IRQ is disabled, send event directly */
|
/* CRTC inactive means vblank IRQ is disabled, send event directly */
|
||||||
spin_lock_irq(&drm->event_lock);
|
spin_lock_irq(&drm->event_lock);
|
||||||
|
Loading…
Reference in New Issue
Block a user