aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-4.19/950-0112-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-4.19/950-0112-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch')
-rw-r--r--target/linux/bcm27xx/patches-4.19/950-0112-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-4.19/950-0112-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch b/target/linux/bcm27xx/patches-4.19/950-0112-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch
new file mode 100644
index 0000000000..43b200db16
--- /dev/null
+++ b/target/linux/bcm27xx/patches-4.19/950-0112-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch
@@ -0,0 +1,50 @@
+From 36e1081459121883f9881a579c809c7b87895146 Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric@anholt.net>
+Date: Mon, 5 Feb 2018 18:01:02 +0000
+Subject: [PATCH] drm/vc4: Fix warning about vblank interrupts before
+ DRM core is ready.
+
+The SMICS interrupt fires continuously, but since it's 1/100 the rate
+of the USB interrupts, we don't really need a way to turn it off. We
+do need to make sure that we don't tell DRM about it until DRM has
+asked for the interrupt at least once, because otherwise it will throw
+a warning at boot time.
+
+Signed-off-by: Eric Anholt <eric@anholt.net>
+---
+ drivers/gpu/drm/vc4/vc4_firmware_kms.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c
++++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
+@@ -43,6 +43,7 @@ struct vc4_crtc {
+
+ struct drm_pending_vblank_event *event;
+ u32 overscan[4];
++ bool vblank_enabled;
+ };
+
+ static inline struct vc4_crtc *to_vc4_crtc(struct drm_crtc *crtc)
+@@ -420,7 +421,8 @@ static irqreturn_t vc4_crtc_irq_handler(
+
+ if (stat & SMICS_INTERRUPTS) {
+ writel(0, vc4_crtc->regs + SMICS);
+- drm_crtc_handle_vblank(&vc4_crtc->base);
++ if (vc4_crtc->vblank_enabled)
++ drm_crtc_handle_vblank(&vc4_crtc->base);
+ vc4_crtc_handle_page_flip(vc4_crtc);
+ ret = IRQ_HANDLED;
+ }
+@@ -443,9 +445,9 @@ static int vc4_page_flip(struct drm_crtc
+
+ 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.
+- */
++ struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
++
++ vc4_crtc->vblank_enabled = true;
+
+ return 0;
+ }