drm/vc4: hdmi: Warn if we access the controller while disabled
authorMaxime Ripard <maxime@cerno.tech>
Mon, 5 Jul 2021 08:32:30 +0000 (10:32 +0200)
committerPhil Elwell <8911409+pelwell@users.noreply.github.com>
Mon, 5 Jul 2021 10:18:05 +0000 (11:18 +0100)
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

index a81fdf9..06b0739 100644 (file)
@@ -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 vc4_hdmi *hdmi,
        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 vc4_hdmi *hdmi,
        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);