2022-05-16 21:40:32 +00:00
|
|
|
From d0a44f399526a061e74b9a34b554f3d0e9cdddb3 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Maxime Ripard <maxime@cerno.tech>
|
|
|
|
Date: Thu, 19 Aug 2021 15:59:31 +0200
|
|
|
|
Subject: [PATCH] drm/vc4: hdmi: Warn if we access the controller while
|
|
|
|
disabled
|
|
|
|
|
|
|
|
We've had many silent hangs where the kernel would look like it just
|
|
|
|
stalled due to the access to one of the HDMI registers while the
|
|
|
|
controller was disabled.
|
|
|
|
|
|
|
|
Add a warning if we're about to do that so that it's at least not silent
|
|
|
|
anymore.
|
|
|
|
|
|
|
|
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
|
|
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
|
|
|
Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-7-maxime@cerno.tech
|
|
|
|
---
|
|
|
|
drivers/gpu/drm/vc4/vc4_hdmi_regs.h | 6 ++++++
|
|
|
|
1 file changed, 6 insertions(+)
|
|
|
|
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_hdmi_regs.h
|
|
|
|
+++ b/drivers/gpu/drm/vc4/vc4_hdmi_regs.h
|
|
|
|
@@ -1,6 +1,8 @@
|
|
|
|
#ifndef _VC4_HDMI_REGS_H_
|
|
|
|
#define _VC4_HDMI_REGS_H_
|
|
|
|
|
|
|
|
+#include <linux/pm_runtime.h>
|
|
|
|
+
|
|
|
|
#include "vc4_hdmi.h"
|
|
|
|
|
|
|
|
#define VC4_HDMI_PACKET_STRIDE 0x24
|
2022-08-22 12:02:36 +00:00
|
|
|
@@ -415,6 +417,8 @@ static inline u32 vc4_hdmi_read(struct v
|
2022-05-16 21:40:32 +00:00
|
|
|
const struct vc4_hdmi_variant *variant = hdmi->variant;
|
|
|
|
void __iomem *base;
|
|
|
|
|
|
|
|
+ WARN_ON(!pm_runtime_active(&hdmi->pdev->dev));
|
|
|
|
+
|
|
|
|
if (reg >= variant->num_registers) {
|
|
|
|
dev_warn(&hdmi->pdev->dev,
|
|
|
|
"Invalid register ID %u\n", reg);
|
2022-08-22 12:02:36 +00:00
|
|
|
@@ -441,6 +445,8 @@ static inline void vc4_hdmi_write(struct
|
2022-05-16 21:40:32 +00:00
|
|
|
const struct vc4_hdmi_variant *variant = hdmi->variant;
|
|
|
|
void __iomem *base;
|
|
|
|
|
|
|
|
+ WARN_ON(!pm_runtime_active(&hdmi->pdev->dev));
|
|
|
|
+
|
|
|
|
if (reg >= variant->num_registers) {
|
|
|
|
dev_warn(&hdmi->pdev->dev,
|
|
|
|
"Invalid register ID %u\n", reg);
|