brcm2708: organize kernel patches
[openwrt/staging/chunkeey.git] / target / linux / brcm2708 / patches-4.19 / 950-0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch b/target/linux/brcm2708/patches-4.19/950-0115-drm-vc4-Fix-warning-about-vblank-interrupts-before-D.patch
new file mode 100644 (file)
index 0000000..43b200d
--- /dev/null
@@ -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;
+ }