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/drm | |
| 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/drm')
| -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) |
