From edcadb8bb94ae384b9b702fe2148dac51540dee0 Mon Sep 17 00:00:00 2001 From: Algea Cao Date: Thu, 21 Mar 2024 14:52:03 +0800 Subject: [PATCH] drm/rockchip: dw_hdmi: Fix rk3588 hpd misrecognition When mask rk3588 hpd irq, hpd irq status bit `ohpd_int` will be clear automatically. Change-Id: I462e1f9e5e2b1ac923e32a0c7e08a06d4f867083 Signed-off-by: Algea Cao --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index 665483ee9c26..09d8ddc6b993 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -1372,6 +1372,11 @@ static irqreturn_t rk3588_hdmi_hardirq(int irq, void *dev_id) regmap_read(hdmi->regmap, RK3588_GRF_SOC_STATUS1, &intr_stat); + if (!hdmi->id) + intr_stat = intr_stat & RK3588_HDMI0_OHPD_INT; + else + intr_stat = intr_stat & RK3588_HDMI1_OHPD_INT; + if (intr_stat) { dev_dbg(hdmi->dev, "hpd irq %#x\n", intr_stat); @@ -1433,9 +1438,6 @@ static irqreturn_t rk3588_hdmi_thread(int irq, void *dev_id) regmap_read(hdmi->regmap, RK3588_GRF_SOC_STATUS1, &intr_stat); - if (!intr_stat) - return IRQ_NONE; - if (!hdmi->id) { val = HIWORD_UPDATE(RK3588_HDMI0_HPD_INT_CLR, RK3588_HDMI0_HPD_INT_CLR);