2019-09-19 14:43:19 +00:00
|
|
|
From 36e1081459121883f9881a579c809c7b87895146 Mon Sep 17 00:00:00 2001
|
2019-07-09 18:32:28 +00:00
|
|
|
From: Eric Anholt <eric@anholt.net>
|
|
|
|
Date: Mon, 5 Feb 2018 18:01:02 +0000
|
2019-12-23 12:42:55 +00:00
|
|
|
Subject: [PATCH] drm/vc4: Fix warning about vblank interrupts before
|
2019-07-09 18:32:28 +00:00
|
|
|
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;
|
|
|
|
}
|