43b200db16ebe0eac5f4312ad9a9fab9c946e6d0
[oweals/openwrt.git] /
1 From 36e1081459121883f9881a579c809c7b87895146 Mon Sep 17 00:00:00 2001
2 From: Eric Anholt <eric@anholt.net>
3 Date: Mon, 5 Feb 2018 18:01:02 +0000
4 Subject: [PATCH] drm/vc4: Fix warning about vblank interrupts before
5  DRM core is ready.
6
7 The SMICS interrupt fires continuously, but since it's 1/100 the rate
8 of the USB interrupts, we don't really need a way to turn it off.  We
9 do need to make sure that we don't tell DRM about it until DRM has
10 asked for the interrupt at least once, because otherwise it will throw
11 a warning at boot time.
12
13 Signed-off-by: Eric Anholt <eric@anholt.net>
14 ---
15  drivers/gpu/drm/vc4/vc4_firmware_kms.c | 10 ++++++----
16  1 file changed, 6 insertions(+), 4 deletions(-)
17
18 --- a/drivers/gpu/drm/vc4/vc4_firmware_kms.c
19 +++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
20 @@ -43,6 +43,7 @@ struct vc4_crtc {
21  
22         struct drm_pending_vblank_event *event;
23         u32 overscan[4];
24 +       bool vblank_enabled;
25  };
26  
27  static inline struct vc4_crtc *to_vc4_crtc(struct drm_crtc *crtc)
28 @@ -420,7 +421,8 @@ static irqreturn_t vc4_crtc_irq_handler(
29  
30         if (stat & SMICS_INTERRUPTS) {
31                 writel(0, vc4_crtc->regs + SMICS);
32 -               drm_crtc_handle_vblank(&vc4_crtc->base);
33 +               if (vc4_crtc->vblank_enabled)
34 +                       drm_crtc_handle_vblank(&vc4_crtc->base);
35                 vc4_crtc_handle_page_flip(vc4_crtc);
36                 ret = IRQ_HANDLED;
37         }
38 @@ -443,9 +445,9 @@ static int vc4_page_flip(struct drm_crtc
39  
40  static int vc4_fkms_enable_vblank(struct drm_crtc *crtc)
41  {
42 -       /* XXX: Need a way to enable/disable the interrupt, to avoid
43 -        * DRM warnings at boot time.
44 -        */
45 +       struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
46 +
47 +       vc4_crtc->vblank_enabled = true;
48  
49         return 0;
50  }