summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorAlison Wang <b18965@freescale.com>2017-09-14 03:32:01 (GMT)
committerXie Xiaobo <xiaobo.xie@nxp.com>2017-09-25 07:25:50 (GMT)
commit3c9d544d91741b259bbd863ae9841be2e49de94c (patch)
treee3fcc8727021211034c0910efe15011b7de39e40 /drivers/gpu
parent618875870eace8f96e83b48cb1ceff2042db8109 (diff)
downloadlinux-3c9d544d91741b259bbd863ae9841be2e49de94c.tar.xz
drm/fsl-dcu: Fix the interrupt issue in suspend/resume functions
drm_atomic_helper_suspend()/drm_atomic_helper_resume() are used in suspend/resume functions. Interrupt can not be disabled when calling drm_atomic_helper_resume(). Or else vblank interrupt will not generate and the error about vblank wait timed out will occur. This patch will enable interrupt before calling drm_atomic_helper_resume(). The patch is verified on LS1021ATWR board. Signed-off-by: Alison Wang <alison.wang@nxp.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index b1b4ab3..54f60ba 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -225,7 +225,6 @@ static int fsl_dcu_drm_pm_suspend(struct device *dev)
if (!fsl_dev)
return 0;
- disable_irq(fsl_dev->irq);
drm_kms_helper_poll_disable(fsl_dev->drm);
console_lock();
@@ -243,6 +242,8 @@ static int fsl_dcu_drm_pm_suspend(struct device *dev)
return PTR_ERR(fsl_dev->state);
}
+ disable_irq(fsl_dev->irq);
+
clk_disable_unprepare(fsl_dev->pix_clk);
clk_disable_unprepare(fsl_dev->clk);
@@ -269,6 +270,8 @@ static int fsl_dcu_drm_pm_resume(struct device *dev)
return ret;
}
+ enable_irq(fsl_dev->irq);
+
if (fsl_dev->tcon)
fsl_tcon_bypass_enable(fsl_dev->tcon);
fsl_dcu_drm_init_planes(fsl_dev->drm);
@@ -279,7 +282,6 @@ static int fsl_dcu_drm_pm_resume(struct device *dev)
console_unlock();
drm_kms_helper_poll_enable(fsl_dev->drm);
- enable_irq(fsl_dev->irq);
return 0;
}