aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorStefan Agner <stefan@agner.ch>2016-04-18 21:22:47 -0400
committerStefan Agner <stefan@agner.ch>2016-06-18 21:34:31 -0400
commitf5bce4309db6597003e683d28d12b1b4bc9408b0 (patch)
tree60610155603a5d23c6dcc41a8b2aea1b62dac947 /drivers/gpu
parenta8db432471248bd491916347b077ff2e7b5aa317 (diff)
drm/fsl-dcu: disable vblank events on CRTC disable
Disable vblank events when CRTC gets disabled. This avoids an external abort when entering suspend while disable_timer is still active: On resume the timer might fire immediately and cause a register access in fsl_dcu_drm_disable_vblank before clocks get enabled by the resume function. Signed-off-by: Stefan Agner <stefan@agner.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
index ca0f7d83a730..36df2eb8de1c 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_crtc.c
@@ -43,6 +43,8 @@ static void fsl_dcu_drm_disable_crtc(struct drm_crtc *crtc)
43 struct drm_device *dev = crtc->dev; 43 struct drm_device *dev = crtc->dev;
44 struct fsl_dcu_drm_device *fsl_dev = dev->dev_private; 44 struct fsl_dcu_drm_device *fsl_dev = dev->dev_private;
45 45
46 drm_crtc_vblank_off(crtc);
47
46 regmap_update_bits(fsl_dev->regmap, DCU_DCU_MODE, 48 regmap_update_bits(fsl_dev->regmap, DCU_DCU_MODE,
47 DCU_MODE_DCU_MODE_MASK, 49 DCU_MODE_DCU_MODE_MASK,
48 DCU_MODE_DCU_MODE(DCU_MODE_OFF)); 50 DCU_MODE_DCU_MODE(DCU_MODE_OFF));
@@ -60,6 +62,8 @@ static void fsl_dcu_drm_crtc_enable(struct drm_crtc *crtc)
60 DCU_MODE_DCU_MODE(DCU_MODE_NORMAL)); 62 DCU_MODE_DCU_MODE(DCU_MODE_NORMAL));
61 regmap_write(fsl_dev->regmap, DCU_UPDATE_MODE, 63 regmap_write(fsl_dev->regmap, DCU_UPDATE_MODE,
62 DCU_UPDATE_MODE_READREG); 64 DCU_UPDATE_MODE_READREG);
65
66 drm_crtc_vblank_on(crtc);
63} 67}
64 68
65static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_crtc *crtc) 69static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_crtc *crtc)