From nobody Tue Apr 7 12:21:11 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 4DC3B3CAE65 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=1775242423; cv=none; b=RrwvMUlWPlCdSWk7Zm/kQ7r1s0eaZ+e1LcYRhB1UaSrrkZReuWMAmGyaceYQ2e4biQBe+wiWgaHp2y9xAJ4XzdbqWxdSTUoxvAZBXHWbbthjRsyYWSiDpHNJekoeN6JtJPizou4ayYu3k7fMZYS1AGIhX95xVX3LWSNtD0fBJHA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242423; c=relaxed/simple; bh=ZH6f5fLbD2KjyjSMgLUm/g1DvyXJjnzgDgqIvEktCAE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SczH5hstKh8vAFllgMyVN32Y5qfvajn0nGnF7AIGtO611J0YCADPDZnB0SUBPE8VZpvIKQwHqP2ZZkf4j5yd5/SdCEeVO/Fm4dqiAhxgb0Zd7iuekvEsk9rWHZd9DqtZ2ZHry4pIOTqlLyr/oH//o/zo59BZvkFJ13bjWME4Nyg= 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=xZApzcAF; 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="xZApzcAF" 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=1775242414; bh=IrkmYXz+eQlVd/BohsNjaWpAwzykhtdCHiqXQ19+Tno=; b=xZApzcAF53F1tRje1dlRwqDoFq4mCyYYLD6a/STRl1hnqRokuBUjDC4ij1MjAbnOGvfZcx3qz r+1YAghFwzQBhDk+ZnlRhoC8v8kWZxhGe0QMBlyadgBNmcp29PE5ihubY12kEuX5qqELr6drZQJ WB05wpySIzuiW/v6B8XCKXkNvjoNHm8QOaRGqhxc2e/zoMiSe9dPLLTyTblF0mQr+YCYRy+WaHu VDmmwTRlRznWa0HwWm7bzwM4Vb7s+LQIeV8wjMPz40I24bS7lU2+tOOxolpl7I1BP071I2EbYqY xwvzSkMI1dwrbSJgy1lSrjRNW6zYTiVLfqJBRiZCLngg== X-Forward-Email-ID: 69d00cabdc98192b40b89309 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Christopher Obbard Subject: [PATCH v3 01/13] drm: bridge: dw_hdmi: Disable scrambler feature when not supported Date: Fri, 3 Apr 2026 18:52:47 +0000 Message-ID: <20260403185303.80748-2-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" The scrambler feature can be left enabled when hotplugging from a sink and mode that require scrambling to a sink that does not support SCDC or scrambling. Typically a blank screen or 'no signal' message can be observed after using a HDMI 2.0 4K@60Hz mode and then hotplugging to a sink that only support HDMI 1.4. Fix this by disabling the scrambler feature when SCDC is not supported. Fixes: 264fce6cc2c1 ("drm/bridge: dw-hdmi: Add SCDC and TMDS Scrambling sup= port") Reported-by: Christopher Obbard Reviewed-by: Neil Armstrong Signed-off-by: Jonas Karlman --- v3: Collect r-b tag v2: New patch --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 0296e110ce65..9febcb58a1df 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2133,6 +2133,8 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi, HDMI_MC_SWRSTZ); drm_scdc_set_scrambling(hdmi->curr_conn, 0); } + } else if (hdmi->version >=3D 0x200a) { + hdmi_writeb(hdmi, 0, HDMI_FC_SCRAMBLER_CTRL); } =20 /* Set up horizontal active pixel width */ --=20 2.53.0 From nobody Tue Apr 7 12:21:11 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 From nobody Tue Apr 7 12:21:11 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (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 759E33C343C for ; Fri, 3 Apr 2026 18:53:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242436; cv=none; b=hB5aqNeMhlrfePN7gWjPcz0aJFQmUMN/BgvAOqYkMcPNurORZbK9fUj1iFLH+GJluGJ25aKWy0SArbviKDeQvrYtsp+WT39uCUrvMBnhsK3ac9ANoj7VlC3B9Kjgy99zfDUm6cZYd3C5mvEKsbbhKHavvp3YFD2u89/Fi0eokqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242436; c=relaxed/simple; bh=/o8daqB18ymFKCsKxghV/ctbORjW4/l9JykYIb4MLIo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tyh1Kn1LuI9bhDkHcspm03VANIEQvuBdU+Tgzi4uC0AcPlvnbrUEuvLdFxi+H8j4aRTP7muLLGS5SKKllY+ZFHydsGziMxKMbxbSgA3WzftK1Wl0MP80hFmTY1ur5t4PxvMuNppKXJ69QDXsYsYnP52sIla4od1gDlXrzb0fpAA= 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=mhTdGlCj; arc=none smtp.client-ip=149.28.215.223 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="mhTdGlCj" 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=1775242428; bh=t0j6fHmt5eOTjqBJf8He6l0hKsw3FQ0FWAqMAP76P7w=; b=mhTdGlCjb1heRreye3pZ30hDEbFYe4u3lwstQ/MqZNaTc5dCH0CpgPxor7WLc3SDA1RNY1nzH 5NyBwsuX9anD+gSgEahsq5bb8Z/8Yy1HL10iWLsSVjIwWoPZTydlQpbOugmUtN+MZjd7+Tgifkb 9p10lgR55Gkx0Xu6q3wRE4AIMdtNjJ6n765PCdbwDawbikuEmXNbVo68Fu1PpAiQ/ulb8t2Xnb4 RSIlMdYG/eWbQSeFVuEDvSMz5C0gwPjFBVen6uom1EqdJF/71AnEeYZK9rXqOCE48uUWVUjA0fs uLUSZFguFZRMKEzFuT6xk37BHcdfgJFtZeNGp1zUjYOA== X-Forward-Email-ID: 69d00cb4dc98192b40b8933f X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 03/13] drm: bridge: dw_hdmi: Call poweron/poweroff from atomic enable/disable Date: Fri, 3 Apr 2026 18:52:49 +0000 Message-ID: <20260403185303.80748-4-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" Change to only call poweron/poweroff from atomic_enable/atomic_disable funcs instead of trying to be clever by keeping a bridge_is_on state and poweron/off in the hotplug irq handler. The bridge is already enabled/disabled depending on connection state with the call to drm_helper_hpd_irq_event() in hotplug irq handler. A benefit of this is that drm mode_config mutex is always held at poweron/off, something that may reduce the need for the dw-hdmi mutex. Reviewed-by: Neil Armstrong Signed-off-by: Jonas Karlman --- v3: Collect r-b tag v2: Update commit message --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 33 ++--------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 3b851f12adfe..eea266d01de3 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -169,7 +169,6 @@ struct dw_hdmi { enum drm_connector_force force; /* mutex-protected force state */ struct drm_connector *curr_conn;/* current connector (only valid when !di= sabled) */ bool disabled; /* DRM has disabled our bridge */ - bool bridge_is_on; /* indicates the bridge is on */ bool rxsense; /* rxsense state */ u8 phy_mask; /* desired phy int mask settings */ u8 mc_clkdis; /* clock disable register */ @@ -2398,8 +2397,6 @@ static void initialize_hdmi_ih_mutes(struct dw_hdmi *= hdmi) =20 static void dw_hdmi_poweron(struct dw_hdmi *hdmi) { - hdmi->bridge_is_on =3D true; - /* * The curr_conn field is guaranteed to be valid here, as this function * is only be called when !hdmi->disabled. @@ -2413,30 +2410,6 @@ static void dw_hdmi_poweroff(struct dw_hdmi *hdmi) hdmi->phy.ops->disable(hdmi, hdmi->phy.data); hdmi->phy.enabled =3D false; } - - hdmi->bridge_is_on =3D false; -} - -static void dw_hdmi_update_power(struct dw_hdmi *hdmi) -{ - int force =3D hdmi->force; - - if (hdmi->disabled) { - force =3D DRM_FORCE_OFF; - } else if (force =3D=3D DRM_FORCE_UNSPECIFIED) { - if (hdmi->rxsense) - force =3D DRM_FORCE_ON; - else - force =3D DRM_FORCE_OFF; - } - - if (force =3D=3D DRM_FORCE_OFF) { - if (hdmi->bridge_is_on) - dw_hdmi_poweroff(hdmi); - } else { - if (!hdmi->bridge_is_on) - dw_hdmi_poweron(hdmi); - } } =20 /* @@ -2561,7 +2534,6 @@ static void dw_hdmi_connector_force(struct drm_connec= tor *connector) =20 mutex_lock(&hdmi->mutex); hdmi->force =3D connector->force; - dw_hdmi_update_power(hdmi); dw_hdmi_update_phy_mask(hdmi); mutex_unlock(&hdmi->mutex); } @@ -2971,7 +2943,7 @@ static void dw_hdmi_bridge_atomic_disable(struct drm_= bridge *bridge, mutex_lock(&hdmi->mutex); hdmi->disabled =3D true; hdmi->curr_conn =3D NULL; - dw_hdmi_update_power(hdmi); + dw_hdmi_poweroff(hdmi); dw_hdmi_update_phy_mask(hdmi); handle_plugged_change(hdmi, false); mutex_unlock(&hdmi->mutex); @@ -2989,7 +2961,7 @@ static void dw_hdmi_bridge_atomic_enable(struct drm_b= ridge *bridge, mutex_lock(&hdmi->mutex); hdmi->disabled =3D false; hdmi->curr_conn =3D connector; - dw_hdmi_update_power(hdmi); + dw_hdmi_poweron(hdmi); dw_hdmi_update_phy_mask(hdmi); handle_plugged_change(hdmi, true); mutex_unlock(&hdmi->mutex); @@ -3089,7 +3061,6 @@ void dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, boo= l hpd, bool rx_sense) if (hpd) hdmi->rxsense =3D true; =20 - dw_hdmi_update_power(hdmi); dw_hdmi_update_phy_mask(hdmi); } mutex_unlock(&hdmi->mutex); --=20 2.53.0 From nobody Tue Apr 7 12:21:11 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (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 4F4353CD8B1 for ; Fri, 3 Apr 2026 18:53:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242440; cv=none; b=kCE1lVdApWdcph3Ts+EoWc/cBPs0Mlz4C3C9jLj5PmIobWh4UJYOBmZK3o3/gjrfRArGcqX42dbtEUkVU5Dp2Fw0MjUlb7M4fvb/gDHvbD0KRayrCDSFs7YpCoFNul0FU3T7DCDd/03iZCGacMGiWMeQ8rblAEuqNfntoccxwBY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242440; c=relaxed/simple; bh=KZ/BjwG8XsGS+IuNGqaP3AGyKNgYQSadKLwyFf24oU8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mgn67Vg0kyFQynAs00xnPLPiNuKxT+gyCdKPj3QHM0xR+4ranT1AW4bIlAmgZZh69EivPeNriVBLFFNpKx8jp6XIXBXuiXalZBwys05lsooweRAoGwI/Ck8bZPSvEDcgfGEPO8KgACph67lSah36PIlnv07ZffNvJzgLes5cQyk= 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=Gg80RgEl; arc=none smtp.client-ip=149.28.215.223 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="Gg80RgEl" 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=1775242432; bh=WH67sXyKoarLtyzIcKKSviRRZbQpYKOCnmKAymUSVNo=; b=Gg80RgElz6j3B2pK4EP+0JgUMCIeaPib5hwZQvHsq94m9P2r7Eq7ZtRjjd0IHBCj0e2z400Nt NL0f3jeRTy1ey0ZdxC4wddAEK01N6i6l9w37+xkrarHqtM7BxQ841GE5EQrQDnskrPyTDsV7H2k IsZ5AqO2uFjK+BEHHuiiaXn8w4WNRdLybwcTLql/Z2ZA8wQkQ+VRDnnNcS2GHMYZv+pkniyY4l2 rhT/rpPmXK1Nf736vE1PRSYDS61veBGxBX2nVHctu5arurCcGar+tqcVVfl0tHjmoqpAgZ4GRKG 5NFe0B10Z6/fFGa+ojg1ksFemUMFbbnvCjmYtmnnbcPA== X-Forward-Email-ID: 69d00cb8dc98192b40b8935a X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 04/13] drm: bridge: dw_hdmi: Use passed mode instead of stored previous_mode Date: Fri, 3 Apr 2026 18:52:50 +0000 Message-ID: <20260403185303.80748-5-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" Use the passed mode instead of mixing use of passed mode and the stored previous_mode in dw_hdmi_setup(). The passed mode is currenly always the previous_mode. Also fix a small typo and add a variable to help shorten a code line. Reviewed-by: Neil Armstrong Signed-off-by: Jonas Karlman --- v3: Collect r-b tag v2: Update commit message, s/type/typo/ --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index eea266d01de3..c03a86284a95 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2256,6 +2256,7 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, const struct drm_connector *connector, const struct drm_display_mode *mode) { + const struct drm_display_info *display =3D &connector->display_info; int ret; =20 hdmi_disable_overflow_interrupts(hdmi); @@ -2301,12 +2302,10 @@ static int dw_hdmi_setup(struct dw_hdmi *hdmi, hdmi->hdmi_data.video_mode.mdataenablepolarity =3D true; =20 /* HDMI Initialization Step B.1 */ - hdmi_av_composer(hdmi, &connector->display_info, mode); + hdmi_av_composer(hdmi, display, mode); =20 - /* HDMI Initializateion Step B.2 */ - ret =3D hdmi->phy.ops->init(hdmi, hdmi->phy.data, - &connector->display_info, - &hdmi->previous_mode); + /* HDMI Initialization Step B.2 */ + ret =3D hdmi->phy.ops->init(hdmi, hdmi->phy.data, display, mode); if (ret) return ret; hdmi->phy.enabled =3D true; --=20 2.53.0 From nobody Tue Apr 7 12:21:11 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.73]) (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 86AFC3CB2FE for ; Fri, 3 Apr 2026 18:53:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242438; cv=none; b=pB+7PldwL1sRWAelYEDrx+/WCxjQJEkSnyK8KpJmj4hdGKisrWI5uIlp28kYgOcXFChA1uouCOWG8/6dawZSoy/XjztvBSIrQfflIM/kwgy5/00zINEDNbREVm1bc679R8my3ozkPwoyCte6GkCuuAbp2qJWS66IRLjlDdgu+To= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242438; c=relaxed/simple; bh=L+vrjaX4VQUqjEgvaFi8iSmJ0R29g73UAQWxdkh+g7M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=J1gmTB4XNQBwpd7WFa4wuJ8K8justycJQQDyoRAcpeGnd9cYwELeCAZYKp6eY6RCcDV7KBfC6bCSzCUsTb4gxtuO7iC3IaNe8ey5X9U/MFn/nFeFpGsph8TlxhxT0GusIyv58W9xGH7miCXUVayVDjGRqw1rFHYaPo5gO3/OYs0= 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=MMmfRfUZ; arc=none smtp.client-ip=121.127.44.73 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="MMmfRfUZ" 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=1775242430; bh=nHczWXAu86GVpPDJo2Ql/ATlrHI3Y8SePMn2/eMTTOo=; b=MMmfRfUZkqFwKXNrPs120PDUkTPxdb3Feh8rhbuDKk5tcxS6rVmfehoh2VCzl48gfdPBBufeO 7Mwm8/jXuVq79bDlamceFyfAesEGWkedOWSsyPnEBuhrzkRVPos0d/2GJlMZoX9rb2Xxxj2YDWC SrL3O/j2mjEcqlV0vXh2WO9oqvX8b19rmd1r8XFSiyGR7B0QGfkaFHlQpGwD36AioVj1BjLiQ1C 37iTlilyt1Jn6pNubvlzEiBjewR0Ak3oVK9o+IWq/MtuaswPRN1mSGg1TlUJFcXht9kefTdzfLl doj63f2OlW3f2grf7u6D4ygJprcH1pGbk8v1+72ffVfA== X-Forward-Email-ID: 69d00cbcdc98192b40b89375 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.73 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 05/13] drm: bridge: dw_hdmi: Fold poweron and setup functions Date: Fri, 3 Apr 2026 18:52:51 +0000 Message-ID: <20260403185303.80748-6-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" Fold the poweron and setup functions into one function and use the adjusted_mode directly from the new crtc_state to remove the need of storing previous_mode. Reviewed-by: Neil Armstrong Signed-off-by: Jonas Karlman --- v3: Collect r-b tag v2: No change --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index c03a86284a95..7e7147b14614 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2252,9 +2252,9 @@ static void hdmi_disable_overflow_interrupts(struct d= w_hdmi *hdmi) HDMI_IH_MUTE_FC_STAT2); } =20 -static int dw_hdmi_setup(struct dw_hdmi *hdmi, - const struct drm_connector *connector, - const struct drm_display_mode *mode) +static int dw_hdmi_poweron(struct dw_hdmi *hdmi, + const struct drm_connector *connector, + const struct drm_display_mode *mode) { const struct drm_display_info *display =3D &connector->display_info; int ret; @@ -2394,15 +2394,6 @@ static void initialize_hdmi_ih_mutes(struct dw_hdmi = *hdmi) hdmi_writeb(hdmi, ih_mute, HDMI_IH_MUTE); } =20 -static void dw_hdmi_poweron(struct dw_hdmi *hdmi) -{ - /* - * The curr_conn field is guaranteed to be valid here, as this function - * is only be called when !hdmi->disabled. - */ - dw_hdmi_setup(hdmi, hdmi->curr_conn, &hdmi->previous_mode); -} - static void dw_hdmi_poweroff(struct dw_hdmi *hdmi) { if (hdmi->phy.enabled) { @@ -2952,15 +2943,19 @@ static void dw_hdmi_bridge_atomic_enable(struct drm= _bridge *bridge, struct drm_atomic_state *state) { struct dw_hdmi *hdmi =3D bridge->driver_private; + const struct drm_display_mode *mode; struct drm_connector *connector; + struct drm_crtc *crtc; =20 connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); + crtc =3D drm_atomic_get_new_connector_state(state, connector)->crtc; + mode =3D &drm_atomic_get_new_crtc_state(state, crtc)->adjusted_mode; =20 mutex_lock(&hdmi->mutex); hdmi->disabled =3D false; hdmi->curr_conn =3D connector; - dw_hdmi_poweron(hdmi); + dw_hdmi_poweron(hdmi, connector, mode); dw_hdmi_update_phy_mask(hdmi); handle_plugged_change(hdmi, true); mutex_unlock(&hdmi->mutex); --=20 2.53.0 From nobody Tue Apr 7 12:21:11 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.73]) (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 7A0953CBE91 for ; Fri, 3 Apr 2026 18:54:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242443; cv=none; b=NxlZx9WIFi372PwkgFaX4yoCMrDGUQCNXuTMZpl0fvJFGFvk4YRlTzh2bi68oMDLZTtEbvfsN+P0ne+9j9V9wdyKPNoVSXFYzR4y0tYCgiNv2lOwvzADUyTT48Ev447zfKldAW7lefO4yQJx5XrbGf16RN4zy6D5VrM+nE2KYfs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242443; c=relaxed/simple; bh=bO/MeCoeAXVA9Vv4SsYIyiwz5hV7lrQ877CiFF0qNp4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DDkINOO2xpQtSVCyvC/dQRMoaFsXaXcMfpUkiyu0NAMSNSKDnLhvCpJJ/bBLKC0LGBc0eZI+6BrlRpX1C4z08uaSrNcKRTyROdZIMObBCJR6ZcyS+iEjwH6+sklWnUxmP4RAHqToS8kkhUI3aoejPi8fdloxererzk4LRF+ShkA= 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=vC+8q4la; arc=none smtp.client-ip=121.127.44.73 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="vC+8q4la" 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=1775242435; bh=NhHR1zGTM8Ud/QZkcBCtlf+5beX0V8bPBR27LUMaG4o=; b=vC+8q4laqbuK3bZCq1VnBajMrbWNrJSQHitIaza68p05OwgJ377oCuDxb1YR7LHIuRgPQFPkP GODW52p3JgJ2rBnft/nT7JUuxy9U5W8faJPsMQMJTEnrkEOLizJ71tEWtLCq2URShDkzyhpThop pjlX0vzQ/v8jFAFNHd7BRxwFgIVtqnosfsSkyQLB8sYudKVCPYlbPxpTgjwsuz6rUIdUn+mBCZ6 jCIA3BQ7oxsrkd7CAK7vXJeRu9sCKYyo4VtYWwH6UK9T9frldOEo7opbpVE7jWlUNoVBYM7jQA7 pTa5n8rqopNnxiuD6cEmlD0zcGYnB1HAYkwDwix+3G0A== X-Forward-Email-ID: 69d00cc1dc98192b40b89390 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.73 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 06/13] drm: bridge: dw_hdmi: Remove previous_mode and mode_set Date: Fri, 3 Apr 2026 18:52:52 +0000 Message-ID: <20260403185303.80748-7-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" With the use of adjusted_mode directly from the crtc_state there is no longer a need to store a copy in previous_mode, remove it and the now unneeded mode_set ops. Reviewed-by: Neil Armstrong Signed-off-by: Jonas Karlman --- v3: Collect r-b tag v2: No change --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 7e7147b14614..aa4949de9173 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -154,8 +154,6 @@ struct dw_hdmi { bool enabled; } phy; =20 - struct drm_display_mode previous_mode; - struct i2c_adapter *ddc; void __iomem *regs; bool sink_is_hdmi; @@ -165,7 +163,7 @@ struct dw_hdmi { struct pinctrl_state *default_state; struct pinctrl_state *unwedge_state; =20 - struct mutex mutex; /* for state below and previous_mode */ + struct mutex mutex; /* for state below */ enum drm_connector_force force; /* mutex-protected force state */ struct drm_connector *curr_conn;/* current connector (only valid when !di= sabled) */ bool disabled; /* DRM has disabled our bridge */ @@ -2911,20 +2909,6 @@ dw_hdmi_bridge_mode_valid(struct drm_bridge *bridge, return mode_status; } =20 -static void dw_hdmi_bridge_mode_set(struct drm_bridge *bridge, - const struct drm_display_mode *orig_mode, - const struct drm_display_mode *mode) -{ - struct dw_hdmi *hdmi =3D bridge->driver_private; - - mutex_lock(&hdmi->mutex); - - /* Store the display mode for plugin/DKMS poweron events */ - drm_mode_copy(&hdmi->previous_mode, mode); - - mutex_unlock(&hdmi->mutex); -} - static void dw_hdmi_bridge_atomic_disable(struct drm_bridge *bridge, struct drm_atomic_state *state) { @@ -2988,7 +2972,6 @@ static const struct drm_bridge_funcs dw_hdmi_bridge_f= uncs =3D { .atomic_get_input_bus_fmts =3D dw_hdmi_bridge_atomic_get_input_bus_fmts, .atomic_enable =3D dw_hdmi_bridge_atomic_enable, .atomic_disable =3D dw_hdmi_bridge_atomic_disable, - .mode_set =3D dw_hdmi_bridge_mode_set, .mode_valid =3D dw_hdmi_bridge_mode_valid, .detect =3D dw_hdmi_bridge_detect, .edid_read =3D dw_hdmi_bridge_edid_read, --=20 2.53.0 From nobody Tue Apr 7 12:21:11 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 0CBB53CCFC9 for ; Fri, 3 Apr 2026 18:53:59 +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=1775242441; cv=none; b=Y6tNDvC4CIruXAj8KKsBRLaejUBkkjDlARix3EU1UTqyvh6UxY83qpmr97JYGAMyUFZGPH5Ojs4/CxZSjgb0KkTLyVkEk8B7n2CF5qNPseCTB1dyNEXGAzfS+35vwjBc/0ZycQuTQvdQhJCb1Pcq+clRAAVbgjLDrFiymD2WUus= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242441; c=relaxed/simple; bh=ACTWRrbtuKQt8jK4EEpSjrZ4Lychl6z8xM7P5eixvyo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=q/LuVDKStJR710YtFnFnV5srHSID4LBKXQQVqFU+SG9qj0TCD8cwnTmSxcJp6QYB88EiFmoWQZl7UBlcfRFxg4CYDT14Sb9AclziBDKqOgV3+6J4eUdXR/3TdqDSLmc2QCklDSZW+eLzdZ0EyhlkJJMOud2RJF0+W9Rt695YGpE= 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=SNUnuSqd; 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="SNUnuSqd" 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=1775242439; bh=oJE2bPbGsEnN8M7cVwWKbpEiMnGlrfDSylYJQ08sUbA=; b=SNUnuSqd2S9WaOukoIGtQwVY7VaMhNg2HkRkU3kLe0mYZeXORRDNsa5O+PlL4rAeyn2aq+z3N K6bRPLIKYM6oG5tnrEsUlgHRS+vFRckPwlZNHcjrAn56v/uPT+b7Z9prTODE63gFepbuKNMek70 h0YLy50zHgwrcO50CeyraSze7bUWUtWWYG6+R37QIcm9TAColTzEP/3KdbXFaEoreBeEFR2xPNk zvHPKnzksd++un8lLtmg9UCJYbB79YVhmmd8//ko9SLrkF0tVwn1AI7vn1CPUWnFrzbN7Eq9aUn BEDHQQDWdJRfy7zYqhcEW5r5v4qdYDjdNGHGyayUsFYg== X-Forward-Email-ID: 69d00cc5dc98192b40b893ab 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 07/13] drm: bridge: dw_hdmi: Invalidate CEC phys addr from connector detect Date: Fri, 3 Apr 2026 18:52:53 +0000 Message-ID: <20260403185303.80748-8-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" Wait until the connector detect ops is called to invalidate CEC phys addr instead of doing it directly from the irq handler. Reviewed-by: Neil Armstrong Signed-off-by: Jonas Karlman --- v3: No change v2: Collect r-b tag --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index aa4949de9173..975edd6e695a 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2470,7 +2470,17 @@ dw_hdmi_connector_detect(struct drm_connector *conne= ctor, bool force) { struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, connector); - return dw_hdmi_detect(hdmi); + enum drm_connector_status status; + + status =3D dw_hdmi_detect(hdmi); + + if (status =3D=3D connector_status_disconnected) { + mutex_lock(&hdmi->cec_notifier_mutex); + cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); + mutex_unlock(&hdmi->cec_notifier_mutex); + } + + return status; } =20 static int dw_hdmi_connector_get_modes(struct drm_connector *connector) @@ -3082,12 +3092,6 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) phy_stat & HDMI_PHY_HPD, phy_stat & HDMI_PHY_RX_SENSE); =20 - if ((phy_stat & (HDMI_PHY_RX_SENSE | HDMI_PHY_HPD)) =3D=3D 0) { - mutex_lock(&hdmi->cec_notifier_mutex); - cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); - mutex_unlock(&hdmi->cec_notifier_mutex); - } - if ((intr_stat & HDMI_IH_PHY_STAT0_HPD) && (phy_stat & HDMI_PHY_HPD)) status =3D connector_status_connected; --=20 2.53.0 From nobody Tue Apr 7 12:21:11 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 A45183CF03E for ; Fri, 3 Apr 2026 18:54:04 +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=1775242448; cv=none; b=PDknvP2egxYRDKSa/3fUt4B4McdHI7+mlZzqVXlcpVc3o4nqxWqRnbof1k3C2UktqSZSXXHlq+1MGObVKcfgdGGALhazelE+DMIbOPWejyXflC8Qw5xiqV/wKJGGlVRAnedVqTbzttujCzsgQ3gqnnmwFk8bLsqJcm2Tl+kIyG0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242448; c=relaxed/simple; bh=9GF03umZ7U6SxQCjS+tuNUT1JgYjbv6UYMyFlo9QI+U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o8Uc8dm+FJRZO6uQ+GY+KBPGbRXNJz4RicvLNlQ7uJgl0PiP6x9aOWGibKoVdQzgIcCI98iQftKLSA+6HYdNRsZlvxhbiP5B28LvafSaGaL3F+/mhvyZY86BXE6q/fksKH84c55HdGL7v6HO0g9Izut4dlQORP2STZWCeYiEqV4= 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=NUIvBax8; 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="NUIvBax8" 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=1775242444; bh=7oMPT1Npp/FOlwEkMep3KFIdT90lNO3KU5f0BHfY4Bw=; b=NUIvBax8L7g3ZOG8STl/Hey2/HXS2cROCFP+cfZTGQS0NjMff1pAOqTP3FLjyjVUDE4B3HU51 XFgorDRy6qGPwubyxtGuFmrhI7W8tcXeARW6tLY2kYYGuW40GXL38koa9eXSL2/xIUm/CaRGIlw Kp42IdVCiWbxritOAMfV1c4+HQD54UdXU/U/0dHjwijgd20C2CNIgvaPXDNr7Chdr02Tz3ce39C YqixHxY32ujJCLfcLXVjzQyCFP0C0dhJJCcUSafOiqDV+WN+9uqL8PlHJMueT7xpkHXoioBMZhh l278hWkH1DFphXEnOV6ju7SZ3r65YL4cKCkAlN2qJ0GQ== X-Forward-Email-ID: 69d00ccadc98192b40b893c6 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 08/13] drm: bridge: dw_hdmi: Remove cec_notifier_mutex Date: Fri, 3 Apr 2026 18:52:54 +0000 Message-ID: <20260403185303.80748-9-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" With CEC phys addr invalidation moved away from the irq handler there is no longer a need for cec_notifier_mutex, remove it. Reviewed-by: Neil Armstrong Signed-off-by: Jonas Karlman --- v3: No change v2: Collect r-b tag --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 975edd6e695a..f3f8144ae98e 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -187,7 +187,6 @@ struct dw_hdmi { void (*enable_audio)(struct dw_hdmi *hdmi); void (*disable_audio)(struct dw_hdmi *hdmi); =20 - struct mutex cec_notifier_mutex; struct cec_notifier *cec_notifier; =20 hdmi_codec_plugged_cb plugged_cb; @@ -2474,11 +2473,8 @@ dw_hdmi_connector_detect(struct drm_connector *conne= ctor, bool force) =20 status =3D dw_hdmi_detect(hdmi); =20 - if (status =3D=3D connector_status_disconnected) { - mutex_lock(&hdmi->cec_notifier_mutex); + if (status =3D=3D connector_status_disconnected) cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); - mutex_unlock(&hdmi->cec_notifier_mutex); - } =20 return status; } @@ -2592,9 +2588,7 @@ static int dw_hdmi_connector_create(struct dw_hdmi *h= dmi) if (!notifier) return -ENOMEM; =20 - mutex_lock(&hdmi->cec_notifier_mutex); hdmi->cec_notifier =3D notifier; - mutex_unlock(&hdmi->cec_notifier_mutex); =20 return 0; } @@ -2893,10 +2887,8 @@ static void dw_hdmi_bridge_detach(struct drm_bridge = *bridge) { struct dw_hdmi *hdmi =3D bridge->driver_private; =20 - mutex_lock(&hdmi->cec_notifier_mutex); cec_notifier_conn_unregister(hdmi->cec_notifier); hdmi->cec_notifier =3D NULL; - mutex_unlock(&hdmi->cec_notifier_mutex); } =20 static enum drm_mode_status @@ -3321,7 +3313,6 @@ struct dw_hdmi *dw_hdmi_probe(struct platform_device = *pdev, =20 mutex_init(&hdmi->mutex); mutex_init(&hdmi->audio_mutex); - mutex_init(&hdmi->cec_notifier_mutex); spin_lock_init(&hdmi->audio_lock); =20 ret =3D dw_hdmi_parse_dt(hdmi); --=20 2.53.0 From nobody Tue Apr 7 12:21:11 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 CFB15359A7E for ; Fri, 3 Apr 2026 18:54:09 +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=1775242451; cv=none; b=Hy2UaOEONkt1tTj8Q9Y+MDP5V2VthvrgF3IQ09vstB29UpMMUUNfJFDpImgo/MysaPSzg+VfrkS+ZBRduzTgTpVWM2KP1UFa6RO+9Wn/YJtIAxhsuJKdB8bgWmMfquqXjl0+p9W4Iwn6YS9pP7LwtlPTvzwqzRY3Q/YoOSTP3DY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242451; c=relaxed/simple; bh=P97axD9T8EvVwHANpZQ8eeExQuXyeNYcEjJlTgQQvU0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WOX+RM1s3PZNhGjRA9NU54+KFwfdv8f0xs8dvRpu6hJh+/ZcDOTUbZ5l+p0KMtfVCVrsscBGvLE2C/5NjsApc0YjXc041eP7UCr2ESMu6AjD2DUHbuPYnKaQg6B7onsKOp+uwlTeA+5Zho6AR0+SEvqPR5D6hZ+WcJCjFh6GevQ= 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=mgwtAkxO; 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="mgwtAkxO" 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=1775242449; bh=cb7kV5xrgzBNF02Z/hIuS/zVAc/l0KXvVzEjt546s3c=; b=mgwtAkxOsjdrCqfLMpCdJsKS7wQNu0y2MpkwLpn5/XAAnytMZO9J+RIX4yQJeKPLn5IQ61C4d SqEipb/x3sPfUEuhEOkd66GlhWpRRd/aGatB4l53F52MgLkWpvvppqEO4h/kwzR6zwnh27iX+6j WA8gdNtr3Dlrjdp6dG0H2AlDiTpUVzMgVglVbAf3Hidc0CmA9MHBeo1y/jf+gCWru90xfMkvlDt T5MLL8US9OKe0mNbRQlhqrEnAEpaIGYcteyXBDyogVDJX0kMKDJ26QMRBEp3YKObGTkPOdLSEJp WW9sn/BMpnWVQ0omVdD8gTTe7Rm7/n2kfX/TPAuH6v/Q== X-Forward-Email-ID: 69d00ccedc98192b40b893e1 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 09/13] drm: bridge: dw_hdmi: Use delayed_work to debounce hotplug event Date: Fri, 3 Apr 2026 18:52:55 +0000 Message-ID: <20260403185303.80748-10-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" HDMI Specification Version 1.4b chapter 8.5 mentions: An HDMI Sink shall not assert high voltage level on its Hot Plug Detect pin when the E-EDID is not available for reading. A Source may use a high voltage level Hot Plug Detect signal to initiate the reading of E-EDID data. An HDMI Sink shall indicate any change to the contents of the E-EDID by driving a low voltage level pulse on the Hot Plug Detect pin. This pulse shall be at least 100 msec. Use a work queue to debounce reacting on HPD events to better handle a HPD low voltage level pulse when a sink changes the EDID. The 1100 msec hotplug debounce timeout was arbitrarily picked to match other drivers using same const, and testing using a Raspberry Pi Monitor seem to use a 200-300 msec pulse when going from standby to power on state. Signed-off-by: Jonas Karlman --- v3: New patch --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 24 +++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index f3f8144ae98e..4d079b689b3b 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -51,6 +51,8 @@ =20 #define HDMI14_MAX_TMDSCLK 340000000 =20 +#define HOTPLUG_DEBOUNCE_MS 1100 + static const u16 csc_coeff_default[3][4] =3D { { 0x2000, 0x0000, 0x0000, 0x0000 }, { 0x0000, 0x2000, 0x0000, 0x0000 }, @@ -192,6 +194,7 @@ struct dw_hdmi { hdmi_codec_plugged_cb plugged_cb; struct device *codec_dev; enum drm_connector_status last_connector_result; + struct delayed_work hpd_work; }; =20 const struct dw_hdmi_plat_data *dw_hdmi_to_plat_data(struct dw_hdmi *hdmi) @@ -2528,6 +2531,7 @@ static void dw_hdmi_connector_force(struct drm_connec= tor *connector) =20 mutex_lock(&hdmi->mutex); hdmi->force =3D connector->force; + hdmi->last_connector_result =3D connector->status; dw_hdmi_update_phy_mask(hdmi); mutex_unlock(&hdmi->mutex); } @@ -3046,6 +3050,16 @@ void dw_hdmi_setup_rx_sense(struct dw_hdmi *hdmi, bo= ol hpd, bool rx_sense) } EXPORT_SYMBOL_GPL(dw_hdmi_setup_rx_sense); =20 +static void dw_hdmi_hpd_work(struct work_struct *work) +{ + struct dw_hdmi *hdmi =3D container_of(work, struct dw_hdmi, hpd_work.work= ); + + if (hdmi->bridge.dev) { + drm_helper_hpd_irq_event(hdmi->bridge.dev); + drm_bridge_hpd_notify(&hdmi->bridge, hdmi->last_connector_result); + } +} + static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) { struct dw_hdmi *hdmi =3D dev_id; @@ -3097,10 +3111,8 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) status =3D=3D connector_status_connected ? "plugin" : "plugout"); =20 - if (hdmi->bridge.dev) { - drm_helper_hpd_irq_event(hdmi->bridge.dev); - drm_bridge_hpd_notify(&hdmi->bridge, status); - } + mod_delayed_work(system_percpu_wq, &hdmi->hpd_work, + msecs_to_jiffies(HOTPLUG_DEBOUNCE_MS)); } =20 hdmi_writeb(hdmi, intr_stat, HDMI_IH_PHY_STAT0); @@ -3420,6 +3432,8 @@ struct dw_hdmi *dw_hdmi_probe(struct platform_device = *pdev, goto err_res; } =20 + INIT_DELAYED_WORK(&hdmi->hpd_work, dw_hdmi_hpd_work); + ret =3D devm_request_threaded_irq(dev, irq, dw_hdmi_hardirq, dw_hdmi_irq, IRQF_SHARED, dev_name(dev), hdmi); @@ -3552,6 +3566,8 @@ EXPORT_SYMBOL_GPL(dw_hdmi_probe); =20 void dw_hdmi_remove(struct dw_hdmi *hdmi) { + disable_delayed_work_sync(&hdmi->hpd_work); + drm_bridge_remove(&hdmi->bridge); =20 if (hdmi->audio && !IS_ERR(hdmi->audio)) --=20 2.53.0 From nobody Tue Apr 7 12:21:11 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 9DA63359A7E for ; Fri, 3 Apr 2026 18:54:14 +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=1775242456; cv=none; b=sAld3LuvFYpRR8orXXCK/nE66/NuDcbWuNd46qHmRbVyOotkZVErTe7Ap2bHyuiYVdlOGNC/FlUUJlOf3QflUTphXA6vYub0Xv+puYtWzTcbYh4U17ZswvhklQVuqCCjf4/KaQo0dfD2kjXRgZ7QHbHOyJBKlTLYe87HFG8UJcY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242456; c=relaxed/simple; bh=q1GpN5XATtI+4Ae6sEb68c6K20o3AqYdUN9W5DGD3rA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UEfKuGgGi6hIC8hEao59+FBZukR+V0aABAh183MOCnNHsImCl2sS/8pzjm6OCnp9QlrZooHHC2On67jU3mqrlQD+B5cPrYh0aW54NVgo2DGX3qY6tWYU633RUFJZSeytNnllmLVbpW42o7To0ZPr5b0zS52+TFWzvCx/ejfavX4= 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=vdnRSWJE; 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="vdnRSWJE" 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=1775242454; bh=sn5c19iqNViTK6LNkTJwlq+SfVLeFcREcVA38qtyUTM=; b=vdnRSWJEK3x4vBorTIILOIZMn3uI96tVZLMVvIbDGu7YXHMEXQtrGaPRxePKhpbawj19zrMLU txuxm0JhP7VkEablOvo/DViUuDQ2nCQ0v3gPdKrvE+qQkQDVvKG+XkwkrcmLbo5WFMID2PfQoZJ 7lCR48emeTT50EYxUM2RrYp1rpgmoeSd0P/NeS1xaNxMCIchtsZNJCOHDdAJN4RmxxOBZlAXsMh kHn8gP4K2u/KXbd+Hl7azJtASISzWIOrCZwT24L4SjIdyTh4cs0iJh3QCAW6XbvSw0XfQzOrGP1 4BRl1c01waGNC0vnh6hpLpT/PLZoYiKwOofE3j2wAvPw== X-Forward-Email-ID: 69d00cd2dc98192b40b893fc 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 10/13] drm: bridge: dw_hdmi: Use drm_connector_helper_hpd_irq_event() Date: Fri, 3 Apr 2026 18:52:56 +0000 Message-ID: <20260403185303.80748-11-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" Use drm_connector_helper_hpd_irq_event() or drm_helper_hpd_irq_event() depending on if a dw-hdmi connector or bridge is used. Signed-off-by: Jonas Karlman --- v3: New patch --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 4d079b689b3b..4a0498922476 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -3054,10 +3054,13 @@ static void dw_hdmi_hpd_work(struct work_struct *wo= rk) { struct dw_hdmi *hdmi =3D container_of(work, struct dw_hdmi, hpd_work.work= ); =20 - if (hdmi->bridge.dev) { + if (hdmi->connector.dev) + drm_connector_helper_hpd_irq_event(&hdmi->connector); + else if (hdmi->bridge.dev) drm_helper_hpd_irq_event(hdmi->bridge.dev); + + if (hdmi->bridge.dev) drm_bridge_hpd_notify(&hdmi->bridge, hdmi->last_connector_result); - } } =20 static irqreturn_t dw_hdmi_irq(int irq, void *dev_id) --=20 2.53.0 From nobody Tue Apr 7 12:21:11 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (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 B3AF9359A7E for ; Fri, 3 Apr 2026 18:54:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242465; cv=none; b=jGhQpxPOHsRX5z1NTT5MCeBrkoHrzhqKc4VM253e+eUpDpK0T6sG0Euhsl5h+ZkvuBx7BIzOazrcv+1J70nI5MTpqq02iNqRxrIoxOvdsF+pvyXiwxM5IuVcxInSEbHCY1YuZhWEHuxvJZCtz5P68gy1YKEGu1LPO9Z8eULV5vo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242465; c=relaxed/simple; bh=U43sDMTPcpjSCyhPunIliOzyKmHNhASwG1PtsrZPpiM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Z2w+ubYF6GdJ4Le7jfMpMas1ASl4FeOXaXAP3h1HJHBmETgvA9+DE8mB0YQr5gwAgQD5CVr6FlJz0j3sBNeIAAmyE5jUMMMqrB1b5UsxHfbuBuNFpSp6EJl4HlZi9Rcwiq5VGpYBMojpsQZKU+9AASIwFGS0Q+1BlBkRad9n1P8= 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=Sx+obnLx; arc=none smtp.client-ip=149.28.215.223 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="Sx+obnLx" 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=1775242463; bh=E0mkfxt+70i0sVXF+aEVWPvQZUQWrx57uJ1ok/r354g=; b=Sx+obnLxUyrYehRJz6N764/uD70Rnc9EIBOwcZZi6c6VsZdQLdwKt0gfbFDwC7+Bzg82uN4Vb 6daQ3PaNdHUXFZgoBoS+OF/mxnB1oHCVxO+m1dPZhdCRFmVdrax3tQBP43ivQGQ4EdOmlAFTtAf Oc9Z1rQEDWfswrhxjDsYunSfMJ8mbCVw+f3hR8kJDj+pF5knV2u6Jagq/dpYPFUvuef8eQWTuPW Vy3czcs5zLJt0GgBVy9n4TlCsBNDB5xXLKHfTMHz7eF8RzCY3p4J/9jqLeMV1HsBrVkPg4L8Q2M 39uDOHlTiLvkxJcQ190+jD9r4X3KIDbHWMWLho90BwXA== X-Forward-Email-ID: 69d00cd7dc98192b40b89417 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 11/13] drm: bridge: dw_hdmi: Extract dw_hdmi_connector_status_update() Date: Fri, 3 Apr 2026 18:52:57 +0000 Message-ID: <20260403185303.80748-12-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" Move connector EDID update and CEC phys addr handling to a helper function as a preparation before moving EDID refresh from get_modes funcs to detect/force funcs. Signed-off-by: Jonas Karlman --- v3: New patch --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 30 +++++++++++++---------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 4a0498922476..0d42fdf9a386 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2467,6 +2467,21 @@ static const struct drm_edid *dw_hdmi_edid_read(stru= ct dw_hdmi *hdmi, * DRM Connector Operations */ =20 +static void +dw_hdmi_connector_status_update(struct drm_connector *connector, + enum drm_connector_status status) +{ + struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, connecto= r); + const struct drm_edid *drm_edid; + + drm_edid =3D dw_hdmi_edid_read(hdmi, connector); + drm_edid_connector_update(connector, drm_edid); + drm_edid_free(drm_edid); + + cec_notifier_set_phys_addr(hdmi->cec_notifier, + connector->display_info.source_physical_address); +} + static enum drm_connector_status dw_hdmi_connector_detect(struct drm_connector *connector, bool force) { @@ -2484,20 +2499,9 @@ dw_hdmi_connector_detect(struct drm_connector *conne= ctor, bool force) =20 static int dw_hdmi_connector_get_modes(struct drm_connector *connector) { - struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, - connector); - const struct drm_edid *drm_edid; - int ret; + dw_hdmi_connector_status_update(connector, connector->status); =20 - drm_edid =3D dw_hdmi_edid_read(hdmi, connector); - - drm_edid_connector_update(connector, drm_edid); - cec_notifier_set_phys_addr(hdmi->cec_notifier, - connector->display_info.source_physical_address); - ret =3D drm_edid_connector_add_modes(connector); - drm_edid_free(drm_edid); - - return ret; + return drm_edid_connector_add_modes(connector); } =20 static int dw_hdmi_connector_atomic_check(struct drm_connector *connector, --=20 2.53.0 From nobody Tue Apr 7 12:21:11 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [149.28.215.223]) (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 7310F3CF046 for ; Fri, 3 Apr 2026 18:54:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=149.28.215.223 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242470; cv=none; b=SK62pSHwmysbAbJjDB/9pPLH9DYHEwprewCe5bPRUv97q1JkjYh9qTJxv7C8oPHgzXkfgN3rUBaOCQsQ3Lry3i+55zVwXetsWk/NQ0NC+7OO3E3r8nljlM3viCQiHfJiQvXnjZz8w/tWjRuimKz3daifCDXlBvyZVLHDpqkgIbU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242470; c=relaxed/simple; bh=t/rQI8NUVqyFzvB5kqORoctii02555/PewQweHS52zA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=i2sydi7HjmIv3EMnytr51cu6/8qZjI+1x9mAujwg5coV0NwuLKTsNSXRMuATflsml/5mhkM4d8PlMHPZsA7B+6tQd8n/ohslhJLBXFUN0i6s4jvlmyZK+FtWb4XNqhSVQeWqpjcu7fm4s8AXx1gF264YkzhjuAGQ/L7CSfRaSDw= 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=nkO1H0E8; arc=none smtp.client-ip=149.28.215.223 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="nkO1H0E8" 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=1775242467; bh=nIExr6iDGsDdBSnhO/V+GvTLLv5LVYrkOA1x0N8PkF4=; b=nkO1H0E8/aC4O6MDeu5k5waWL1jEZoDzCChrG+5HIZu45ub07aXbLWtUyvF6nSiOgliYPzc1C J8zOZUe79V8LYC8MBy27FjlN/ysjov60R7sacJS9V4O3MIxUGalPAFe07PxXWchJtSU+2jlb46C OVGwT5+3H4H8SvhMkqPoGz212aCw7uz1/9OTCee9pLHj0JI3fhSeTsJdQQ8NAaI9idDFeUlsdEh zTYHygEEHy2ZYIhAYWFUJyzpzQcjvdQ8ieTCiK0tL2srM0jKC+XV6TVEikeOq/lq0iYNllVe1+k ppkVF34Kxh7/J3FNvk4b9m8wKmvb6PdG443ubQCzkRrA== X-Forward-Email-ID: 69d00cdbdc98192b40b89432 X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 149.28.215.223 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 12/13] drm: bridge: dw_hdmi: Use dw_hdmi_connector_status_update() Date: Fri, 3 Apr 2026 18:52:58 +0000 Message-ID: <20260403185303.80748-13-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" Update connector EDID and CEC phys addr from detect and force funcs to ensure that userspace always have access to latest read EDID after a sink use a HPD low voltage pulse to indicate that EDID has changed. With EDID being updated in detect and force funcs, there should no longer be a need to re-read EDID in get_modes funcs, so drop it. This change make the dw-hdmi connector work more closely like the bridge connector does with a hdmi bridge. Signed-off-by: Jonas Karlman --- v3: Reworked 'Update EDID during hotplug processing' patch --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 24 +++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 0d42fdf9a386..5b5654ef6015 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2474,33 +2474,36 @@ dw_hdmi_connector_status_update(struct drm_connecto= r *connector, struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, connecto= r); const struct drm_edid *drm_edid; =20 + if (status =3D=3D connector_status_disconnected) { + drm_edid_connector_update(connector, NULL); + cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); + return; + } + drm_edid =3D dw_hdmi_edid_read(hdmi, connector); drm_edid_connector_update(connector, drm_edid); drm_edid_free(drm_edid); =20 - cec_notifier_set_phys_addr(hdmi->cec_notifier, - connector->display_info.source_physical_address); + if (status =3D=3D connector_status_connected) + cec_notifier_set_phys_addr(hdmi->cec_notifier, + connector->display_info.source_physical_address); } =20 static enum drm_connector_status dw_hdmi_connector_detect(struct drm_connector *connector, bool force) { - struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, - connector); + struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, connecto= r); enum drm_connector_status status; =20 status =3D dw_hdmi_detect(hdmi); =20 - if (status =3D=3D connector_status_disconnected) - cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); + dw_hdmi_connector_status_update(connector, status); =20 return status; } =20 static int dw_hdmi_connector_get_modes(struct drm_connector *connector) { - dw_hdmi_connector_status_update(connector, connector->status); - return drm_edid_connector_add_modes(connector); } =20 @@ -2530,14 +2533,15 @@ static int dw_hdmi_connector_atomic_check(struct dr= m_connector *connector, =20 static void dw_hdmi_connector_force(struct drm_connector *connector) { - struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, - connector); + struct dw_hdmi *hdmi =3D container_of(connector, struct dw_hdmi, connecto= r); =20 mutex_lock(&hdmi->mutex); hdmi->force =3D connector->force; hdmi->last_connector_result =3D connector->status; dw_hdmi_update_phy_mask(hdmi); mutex_unlock(&hdmi->mutex); + + dw_hdmi_connector_status_update(connector, connector->status); } =20 static const struct drm_connector_funcs dw_hdmi_connector_funcs =3D { --=20 2.53.0 From nobody Tue Apr 7 12:21:11 2026 Received: from smtp.forwardemail.net (smtp.forwardemail.net [121.127.44.73]) (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 AF9223C6A51 for ; Fri, 3 Apr 2026 18:54:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=121.127.44.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242466; cv=none; b=SCOjFDoR0LwwzXCiAW5HpXfmU59XQA1CtTYVJ3oRDNydLvxZsmzCreyysUZgqt4y9wmnTwdwnf7L0gtO+FEEWPwL6ARu3brvuSms8KMdUCPGTuq0TU9kkpreCb4RtWghkfTGGy5Gjc3/N1KyGTRU05P3MmQe6io5gxq4SDbFH0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775242466; c=relaxed/simple; bh=3E2bMK5VGYIxa+7K+hdMhrjxX5z6JKY6cRhHlG+YMSQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BREESlOyLd3Zu+cNI/M0UhHCVKvnl4GPVFiwQwAbB+3qwVUEh3AkBc196htw1HysqWYhxTg1kXDXwHjFn3FluMByUPtUHeDGKBix5293WNIKtsACSgLOtNE6kYI2sdC/kydWC2wxNmKYKD37v4gIRKgjXJ3iXXQnbHdKnlFhPeo= 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=Ch97hMvp; arc=none smtp.client-ip=121.127.44.73 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="Ch97hMvp" 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=1775242465; bh=so0dFFt3kzJ8bRIEUQOrbpiIcMnJBeZFSNWs8NQqg0Y=; b=Ch97hMvp+XF7vkZvjwd+2xDW0dxEvm7EM1MQBUW9d+OyhTfye6kq3Di7TnlwO6UveMn+T9uIp hyjlAsUpwi3T0RS5m5lK27Vok/gMy5VD/GKrpDr+Avcncy7HJhwlC0cxyOSs/WRSZ9hBY0woho+ +Nar5O8mD7I9Cv3oMyi+JusD8eCZMEJzho0wYUq6bJ48nzaoMPdtf1Tg8spGAYet6j433XunRCh oRzl8HHB8zu+W/MOFz/KLBoIO6YRFeosXGfgG1P0foJUwaZ6Ken9Ho7yQWUn1bZSkddEg4LNvCz ToPrVgEu2jln1eZwGq/9UZKOVnd1VhwFr4yp7e+28H4w== X-Forward-Email-ID: 69d00ce0dc98192b40b8944d X-Forward-Email-Sender: rfc822; jonas@kwiboo.se, smtp.forwardemail.net, 121.127.44.73 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 Cc: Christian Hewitt , Diederik de Haas , dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 13/13] drm: bridge: dw_hdmi: Use display_info is_hdmi and has_audio Date: Fri, 3 Apr 2026 18:52:59 +0000 Message-ID: <20260403185303.80748-14-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_edid_connector_update() is being called from bridge connector funcs and from detect and force funcs for dw-hdmi connector. Change to use is_hdmi and has_audio from display_info directly instead of keeping our own state in sink_is_hdmi and sink_has_audio. Also remove the old and unused edid struct member and related define. Reviewed-by: Neil Armstrong Signed-off-by: Jonas Karlman --- v3: No change v2: Collect r-b tag --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 32 ++++------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 5b5654ef6015..fecbc386871d 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -44,8 +44,6 @@ #define DDC_CI_ADDR 0x37 #define DDC_SEGMENT_ADDR 0x30 =20 -#define HDMI_EDID_LEN 512 - /* DW-HDMI Controller >=3D 0x200a are at least compliant with SCDC version= 1 */ #define SCDC_MIN_SOURCE_VERSION 0x1 =20 @@ -147,8 +145,6 @@ struct dw_hdmi { =20 int vic; =20 - u8 edid[HDMI_EDID_LEN]; - struct { const struct dw_hdmi_phy_ops *ops; const char *name; @@ -158,8 +154,6 @@ struct dw_hdmi { =20 struct i2c_adapter *ddc; void __iomem *regs; - bool sink_is_hdmi; - bool sink_has_audio; =20 struct pinctrl *pinctrl; struct pinctrl_state *default_state; @@ -2057,7 +2051,7 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi, HDMI_FC_INVIDCONF_IN_I_P_INTERLACED : HDMI_FC_INVIDCONF_IN_I_P_PROGRESSIVE; =20 - inv_val |=3D hdmi->sink_is_hdmi ? + inv_val |=3D display->is_hdmi ? HDMI_FC_INVIDCONF_DVI_MODEZ_HDMI_MODE : HDMI_FC_INVIDCONF_DVI_MODEZ_DVI_MODE; =20 @@ -2293,7 +2287,7 @@ static int dw_hdmi_poweron(struct dw_hdmi *hdmi, if (hdmi->hdmi_data.enc_out_bus_format =3D=3D MEDIA_BUS_FMT_FIXED) hdmi->hdmi_data.enc_out_bus_format =3D MEDIA_BUS_FMT_RGB888_1X24; =20 - hdmi->hdmi_data.rgb_limited_range =3D hdmi->sink_is_hdmi && + hdmi->hdmi_data.rgb_limited_range =3D display->is_hdmi && drm_default_rgb_quant_range(mode) =3D=3D HDMI_QUANTIZATION_RANGE_LIMITED; =20 @@ -2313,7 +2307,7 @@ static int dw_hdmi_poweron(struct dw_hdmi *hdmi, /* HDMI Initialization Step B.3 */ dw_hdmi_enable_video_path(hdmi); =20 - if (hdmi->sink_has_audio) { + if (display->has_audio) { dev_dbg(hdmi->dev, "sink has audio support\n"); =20 /* HDMI Initialization Step E - Configure audio */ @@ -2322,7 +2316,7 @@ static int dw_hdmi_poweron(struct dw_hdmi *hdmi, } =20 /* not for DVI mode */ - if (hdmi->sink_is_hdmi) { + if (display->is_hdmi) { dev_dbg(hdmi->dev, "%s HDMI mode\n", __func__); =20 /* HDMI Initialization Step F - Configure AVI InfoFrame */ @@ -2436,29 +2430,13 @@ static const struct drm_edid *dw_hdmi_edid_read(str= uct dw_hdmi *hdmi, struct drm_connector *connector) { const struct drm_edid *drm_edid; - const struct edid *edid; =20 if (!hdmi->ddc) return NULL; =20 drm_edid =3D drm_edid_read_ddc(connector, hdmi->ddc); - if (!drm_edid) { + if (!drm_edid) dev_dbg(hdmi->dev, "failed to get edid\n"); - return NULL; - } - - /* - * FIXME: This should use connector->display_info.is_hdmi and - * connector->display_info.has_audio from a path that has read the EDID - * and called drm_edid_connector_update(). - */ - edid =3D drm_edid_raw(drm_edid); - - dev_dbg(hdmi->dev, "got edid: width[%d] x height[%d]\n", - edid->width_cm, edid->height_cm); - - hdmi->sink_is_hdmi =3D drm_detect_hdmi_monitor(edid); - hdmi->sink_has_audio =3D drm_detect_monitor_audio(edid); =20 return drm_edid; } --=20 2.53.0