diff options
author | Stefan Agner <stefan@agner.ch> | 2016-04-18 21:22:47 -0400 |
---|---|---|
committer | Stefan Agner <stefan@agner.ch> | 2016-06-18 21:34:31 -0400 |
commit | f5bce4309db6597003e683d28d12b1b4bc9408b0 (patch) | |
tree | 60610155603a5d23c6dcc41a8b2aea1b62dac947 /drivers/gpu | |
parent | a8db432471248bd491916347b077ff2e7b5aa317 (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.c | 4 |
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 | ||
65 | static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_crtc *crtc) | 69 | static void fsl_dcu_drm_crtc_mode_set_nofb(struct drm_crtc *crtc) |