From nobody Tue Apr 7 13:46:40 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 327743C871F for ; Fri, 3 Apr 2026 18:53:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242422; cv=none; b=GF2PQh0qSIoVz17RWWGEdpq69jXHvGv8f6dWvgoU2bEidO4GUcude6D4YWGpTW7gpOWNQsRoUTCnLT8kTCt2kqcrp1m/bBLpgAJ1H3x5+WrDGQx+0Fxy+1l3lqHYVUtg3bmcQYhA34UJF6QiJ8k/1jFByJ8uZoor2sQ0ko8pb94= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242422; c=relaxed/simple; bh=kBo3+iePgzhHeltyAT0I0nHd9RNWavDM8RgieALABHo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=f/6fzudZYjcMq1zU2Cnon2+Nn3LJIhv3K3YNWxHqCwyXP25chpkpiFMmrsAc9EKoIzyUkpp4GIauIkTbb9UKO0cg5GW3OFpSenA/+pkKrGCZdMklCorbm+ON0G48EtcblFkon37V4aWmkEMFAG3rNdtFN3TOzyP22ybagInJ3GI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b=xo7mydbQ; arc=none smtp.client-ip=121.127.44.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=kwiboo.se Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fe-bounces.kwiboo.se Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kwiboo.se header.i=@kwiboo.se header.b="xo7mydbQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kwiboo.se; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-ID: Date: Subject: Cc: To: From; q=dns/txt; s=fe-e1b5cab7be; t=1775242419; bh=pe3WybZNeUJIO2QUCIejSIVOx5pW2u0sllJqY71fyGQ=; b=xo7mydbQkhpGEVQccIgtagtL38y6qdzPeT9FZ/ky6LY9hL/Zvnq3+2vphHpTsWBn3gjij8LPq OiYYw255QGkGJ2sBujFP5qemHukvrXZlZF+B9TGYCl00m8YKiWcrv+oSUvECCIntyAzQBGRePBC dju82T/T72uj4EFcRS8ESSebywbyT7aM4IictD103xZnFDaoX2fyfq5vSTc/j1Sm16ymm6zFhyn zVxyonffYykqDdRuAEKBvbtEez/ngriAjdZy4tJAAm/zb/gnZsxfF3XoxG/5gm/k8k+m0IcMFUO EVywxligqaqaMnXr2+ILFkrwUAWgEcpkW1egkITeTFAQ== X-Forward-Email-ID: 69d00cafdc98192b40b89324 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.66 X-Forward-Email-Version: 2.6.68 X-Forward-Email-Website: https://forwardemail.net X-Complaints-To: abuse@forwardemail.net X-Report-Abuse: abuse@forwardemail.net X-Report-Abuse-To: abuse@forwardemail.net From: Jonas Karlman To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Lucas Stach Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 02/13] drm: bridge: dw_hdmi: Only notify connected status on HPD interrupt Date: Fri, 3 Apr 2026 18:52:48 +0000 Message-ID: <20260403185303.80748-3-jonas@kwiboo.se> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260403185303.80748-1-jonas@kwiboo.se> References: <20260403185303.80748-1-jonas@kwiboo.se> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" drm_helper_hpd_irq_event() and drm_bridge_hpd_notify() may incorrectly be called with a connected status when HPD is high and RX sense is changed. This typically happens when the HDMI cable is unplugged, shortly before the HPD is changed to low. The original intent of commit da09daf88108 ("drm: bridge: dw_hdmi: only trigger hotplug event on link change") was to signal hotplug event at correct interrupt states. Based on the commit message the intent was to trigger hotplug event: - when HPD goes high (plugin) - when both HPD and RX sense has gone low (plugout) However, following interrupt state changes can typically be observed when the HDMI cable is unplugged: - RX interrupt: HPD=3Dhigh RX=3Dlow -> triggers a connected event - HPD interrupt: HPD=3Dlow RX=3Dlow -> triggers a disconnected event Fix this by only notify connected status on the HPD interrupt when HPD is going high, not on the RX sense interrupt when RX sense is changed. After this a connected event should be triggered when HPD=3Dhigh at HPD interrupt, and a disconnected event should be triggered when both HPD=3Dlow and RX=3Dlow at either HPD or RX interrupt. Fixes: da09daf88108 ("drm: bridge: dw_hdmi: only trigger hotplug event on l= ink change") Signed-off-by: Jonas Karlman --- v3: Update commit message v2: New patch --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 9febcb58a1df..3b851f12adfe 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -3140,7 +3140,8 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) mutex_unlock(&hdmi->cec_notifier_mutex); } =20 - if (phy_stat & HDMI_PHY_HPD) + if ((intr_stat & HDMI_IH_PHY_STAT0_HPD) && + (phy_stat & HDMI_PHY_HPD)) status =3D connector_status_connected; =20 if (!(phy_stat & (HDMI_PHY_HPD | HDMI_PHY_RX_SENSE))) --=20 2.53.0