aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.10/950-0671-drm-vc4-hdmi-Warn-if-we-access-the-controller-while-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0671-drm-vc4-hdmi-Warn-if-we-access-the-controller-while-.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.10/950-0671-drm-vc4-hdmi-Warn-if-we-access-the-controller-while-.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0671-drm-vc4-hdmi-Warn-if-we-access-the-controller-while-.patch b/target/linux/bcm27xx/patches-5.10/950-0671-drm-vc4-hdmi-Warn-if-we-access-the-controller-while-.patch
new file mode 100644
index 0000000000..c522766201
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.10/950-0671-drm-vc4-hdmi-Warn-if-we-access-the-controller-while-.patch
@@ -0,0 +1,47 @@
+From f67dbf74cc7bce6d85b7c4b5b917c30f2dfc2626 Mon Sep 17 00:00:00 2001
+From: Maxime Ripard <maxime@cerno.tech>
+Date: Mon, 5 Jul 2021 10:32:30 +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.
+
+Signed-off-by: Maxime Ripard <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
+@@ -412,6 +414,8 @@ static inline u32 vc4_hdmi_read(struct v
+ 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);
+@@ -438,6 +442,8 @@ static inline void vc4_hdmi_write(struct
+ 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);