From 10d8194f8415a69d3ea049450e86e14572591a71 Mon Sep 17 00:00:00 2001 From: Eric Anholt 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 --- 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 @@ -764,15 +764,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; @@ -780,15 +773,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 = {