| From e45ba936655805527357beb72e0a09da6854c0d7 Mon Sep 17 00:00:00 2001 |
| From: Eric Anholt <eric@anholt.net> |
| Date: Tue, 30 Jan 2018 14:21:02 -0800 |
| Subject: [PATCH] drm/vc4: Add missing enable/disable vblank handlers |
| in fkms. |
| |
| Fixes hang at boot in 4.14. |
| |
| Signed-off-by: Eric Anholt <eric@anholt.net> |
| --- |
| drivers/gpu/drm/vc4/vc4_crtc.c | 14 -------------- |
| drivers/gpu/drm/vc4/vc4_firmware_kms.c | 15 +++++++++++++++ |
| 2 files changed, 15 insertions(+), 14 deletions(-) |
| |
| --- a/drivers/gpu/drm/vc4/vc4_crtc.c |
| +++ b/drivers/gpu/drm/vc4/vc4_crtc.c |
| @@ -767,15 +767,8 @@ static void vc4_crtc_atomic_flush(struct |
| |
| static int vc4_enable_vblank(struct drm_crtc *crtc) |
| { |
| - struct drm_device *dev = crtc->dev; |
| - struct vc4_dev *vc4 = to_vc4_dev(dev); |
| struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); |
| |
| - if (vc4->firmware_kms) { |
| - /* XXX: Can we mask the SMI interrupt? */ |
| - return 0; |
| - } |
| - |
| CRTC_WRITE(PV_INTEN, PV_INT_VFP_START); |
| |
| return 0; |
| @@ -783,15 +776,8 @@ static int vc4_enable_vblank(struct drm_ |
| |
| static void vc4_disable_vblank(struct drm_crtc *crtc) |
| { |
| - struct drm_device *dev = crtc->dev; |
| - struct vc4_dev *vc4 = to_vc4_dev(dev); |
| struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc); |
| |
| - if (vc4->firmware_kms) { |
| - /* XXX: Can we mask the SMI interrupt? */ |
| - return; |
| - } |
| - |
| CRTC_WRITE(PV_INTEN, 0); |
| } |
| |
| --- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c |
| +++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c |
| @@ -433,6 +433,19 @@ static int vc4_page_flip(struct drm_crtc |
| return drm_atomic_helper_page_flip(crtc, fb, event, flags, ctx); |
| } |
| |
| +static int vc4_fkms_enable_vblank(struct drm_crtc *crtc) |
| +{ |
| + /* XXX: Need a way to enable/disable the interrupt, to avoid |
| + * DRM warnings at boot time. |
| + */ |
| + |
| + return 0; |
| +} |
| + |
| +static void vc4_fkms_disable_vblank(struct drm_crtc *crtc) |
| +{ |
| +} |
| + |
| static const struct drm_crtc_funcs vc4_crtc_funcs = { |
| .set_config = drm_atomic_helper_set_config, |
| .destroy = drm_crtc_cleanup, |
| @@ -443,6 +456,8 @@ static const struct drm_crtc_funcs vc4_c |
| .reset = drm_atomic_helper_crtc_reset, |
| .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, |
| .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, |
| + .enable_vblank = vc4_fkms_enable_vblank, |
| + .disable_vblank = vc4_fkms_disable_vblank, |
| }; |
| |
| static const struct drm_crtc_helper_funcs vc4_crtc_helper_funcs = { |