You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.6 KiB
51 lines
1.6 KiB
6 years ago
|
From 5d82a7419bcf798ecc9aa3a140e6a41c486c3bdf Mon Sep 17 00:00:00 2001
|
||
|
From: Eric Anholt <eric@anholt.net>
|
||
|
Date: Mon, 5 Feb 2018 18:01:02 +0000
|
||
|
Subject: [PATCH 187/454] 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;
|
||
|
}
|