From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E6C330B533 for ; Mon, 27 Apr 2026 18:05:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777313111; cv=pass; b=rVlf+hBEypBDUXPsnIYvc26NT1zNZ0MZmLI/iXV6hEkDN7r2F1Sb9OWeNMbjIdacTc68FYYSKYUVunsBjjBBroFontRAdrEphpEvG6ULK25Zlc8SPxdgaT4b/d2NqTM6+4e0o/g0YDolP+iRyLBBbtYVYOc4WK5+WH9lk9UoSxM= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777313111; c=relaxed/simple; bh=R957q7LRZajwT9n3o6nBEdz2vucPnbl//jKg/UpvpqY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hrjAobwAmOdWwa2RV9eTbHYbxk+agbIt0X16zjcocTtohhwvZpxpGCtAhLOHLTbUVWHUgtJHTK4wgxiLf2J6juMZk+/Uqd0uoODYQLyKJEi+JWiT96WHoyOVC9wqKGxG5znZLDS58lovjv6+1VMaTXKXAIuCCvQCeWQ2Opr19MI= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b=avCR022q; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=nicolas.frattaroli@collabora.com header.b="avCR022q" ARC-Seal: i=1; a=rsa-sha256; t=1777313057; cv=none; d=zohomail.com; s=zohoarc; b=nAvcNvQpM+gfhn2/3HLRBs0Lxyq9g3izU3YePHe4GZ9OWKwQ3UX69okS4N/2ImL5Bebzq6PPWL9034cwg51C0Bww3/A0kAcbIbCr7rS3irVTomncxzhNzCsTOcE6n14/ZmS4V9Q/urzR1wSGW2+DDiBkp7GdtyBtXW4c//Yh1X8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777313057; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=NSEXEwx9S+OeVaRRjXS9ZK8EIwQIZrHT5PwNt4KV1SE=; b=EsY0cGqnRzk/RCyADweX9Vyn05CU/UpD+rzGnwnm3dDK7Kxp7/v7YLlZCWTHcXEng5L6vg4sn+YWTeoEC6AyBMB38ZKAj2XVokIRpshMGagbxvyOdes+wCQXuyuCCUkEErYDBTh48mb4UD0L5EuaCBb4PrsPKF9REfAuNbKft6I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=nicolas.frattaroli@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1777313057; s=zohomail; d=collabora.com; i=nicolas.frattaroli@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Content-Type:Message-Id:Reply-To; bh=NSEXEwx9S+OeVaRRjXS9ZK8EIwQIZrHT5PwNt4KV1SE=; b=avCR022qeDlbdkeJAGU3zhJUbIsjF8r9yuEc101tqxnIqbwLOS290IExQMzV8nU6 9PuAaFJUVgDUupEz16UKzQ36fAYx8vuk4U7EfzUXPwyJ52EmGMXcD0gcKHVtj8ttxHp YZWf2q1Oas3TD8+sCgRRjkTB15U4OVSND959Nr+g= Received: by mx.zohomail.com with SMTPS id 1777313055502484.3747463385729; Mon, 27 Apr 2026 11:04:15 -0700 (PDT) From: Nicolas Frattaroli 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 , dri-devel@lists.freedesktop.org Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Jonas Karlman Subject: Re: [PATCH v3 02/13] drm: bridge: dw_hdmi: Only notify connected status on HPD interrupt Date: Mon, 27 Apr 2026 20:04:10 +0200 Message-ID: <5ozaSaKzQeSilqZavTuKOw@collabora.com> In-Reply-To: <20260403185303.80748-3-jonas@kwiboo.se> References: <20260403185303.80748-1-jonas@kwiboo.se> <20260403185303.80748-3-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: 7Bit Content-Type: text/plain; charset="utf-8" On Friday, 3 April 2026 20:52:48 Central European Summer Time Jonas Karlman wrote: > 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=high RX=low -> triggers a connected event > - HPD interrupt: HPD=low RX=low -> 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=high at HPD > interrupt, and a disconnected event should be triggered when both > HPD=low and RX=low at either HPD or RX interrupt. > > Fixes: da09daf88108 ("drm: bridge: dw_hdmi: only trigger hotplug event on link 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/bridge/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); > } > > - if (phy_stat & HDMI_PHY_HPD) > + if ((intr_stat & HDMI_IH_PHY_STAT0_HPD) && > + (phy_stat & HDMI_PHY_HPD)) > status = connector_status_connected; > > if (!(phy_stat & (HDMI_PHY_HPD | HDMI_PHY_RX_SENSE))) > Reviewed-by: Nicolas Frattaroli