]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/rockchip: dw_hdmi_qp: Fix RK3576 HPD interrupt handling
authorCristian Ciocaltea <cristian.ciocaltea@collabora.com>
Thu, 15 Jan 2026 16:24:43 +0000 (18:24 +0200)
committerHeiko Stuebner <heiko@sntech.de>
Tue, 20 Jan 2026 10:09:33 +0000 (11:09 +0100)
The threaded interrupt handler on RK3576 checks HPD IRQ status before
deciding to continue with interrupt clearing and unmasking.

This is not only redundant, since a similar verification has been
already performed by the hard IRQ handler before masking the interrupt,
but is also error prone, because it might happen that hardware clears
the status register right after the masking operation completes, and
before the threaded handler reads its value.

The consequence is that HPD IRQ gets never unmasked, which breaks
hotplug detection until reloading the driver or rebooting the system.

Drop the unnecessary verification of the HPD interrupt status from the
threaded interrupt handler.

Fixes: 36439120efbd ("drm/rockchip: dw_hdmi_qp: Add basic RK3576 HDMI output support")
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://patch.msgid.link/20260115-dw-hdmi-qp-hpd-v1-1-e59c166eaa65@collabora.com
drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c

index e91caae7e353da4820ce57bac6af67f2e2881ba8..831d221bfd0d0038faa33e8a1122e8197f08a253 100644 (file)
@@ -280,12 +280,7 @@ static irqreturn_t dw_hdmi_qp_rk3576_hardirq(int irq, void *dev_id)
 static irqreturn_t dw_hdmi_qp_rk3576_irq(int irq, void *dev_id)
 {
        struct rockchip_hdmi_qp *hdmi = dev_id;
-       u32 intr_stat, val;
-
-       regmap_read(hdmi->regmap, RK3576_IOC_HDMI_HPD_STATUS, &intr_stat);
-
-       if (!intr_stat)
-               return IRQ_NONE;
+       u32 val;
 
        val = FIELD_PREP_WM16(RK3576_HDMI_HPD_INT_CLR, 1);
        regmap_write(hdmi->regmap, RK3576_IOC_MISC_CON0, val);