Re: [PATCH v1 2/3] drm/bridge: dw-hdmi: optionally ignore rxsense when detecting hotplug
From: Jonas Karlman
Date: Wed Sep 02 2026 - 11:49:29 EST
Hi Ian,
On 9/2/2026 3:01 PM, Ian Ray wrote:
> Commit da09daf88108 ("drm: bridge: dw_hdmi: only trigger hotplug event
> on link change") changed the way hotplug is detected to take into
> consideration rxsense.
>
> That change is problematic for boards where rxsense is always detected,
> such as when an HDMI to DP converter is used.
I have a series [1] with a patch [2] that tries to fully remove the
rxsense part from the dw-hdmi driver, any help to test that series is
welcomed. Should likely solve the issue you are trying to workaround
here.
Planning on sending out a v8 next few days now that v7.3-rc1 have landed.
[1] https://lore.kernel.org/all/20260518180206.2480119-1-jonas@xxxxxxxxx/
[2] https://lore.kernel.org/all/20260518180206.2480119-21-jonas@xxxxxxxxx/
Regards,
Jonas
>
> Introduce an optional property 'ignore-rxsense' to handle such boards.
>
> Fixes: da09daf88108 ("drm: bridge: dw_hdmi: only trigger hotplug event on link change")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Ian Ray <ian.ray@xxxxxxxxxxxxxxxx>
> ---
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> index 34c5f583e910..a9337d1f4b88 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
> @@ -171,6 +171,7 @@ struct dw_hdmi {
> bool disabled; /* DRM has disabled our bridge */
> bool bridge_is_on; /* indicates the bridge is on */
> bool rxsense; /* rxsense state */
> + bool ignore_rxsense; /* use HPD only, ignore rxsense for detect */
> u8 phy_mask; /* desired phy int mask settings */
> u8 mc_clkdis; /* clock disable register */
>
> @@ -3156,6 +3157,9 @@ static irqreturn_t dw_hdmi_irq(int irq, void *dev_id)
> if (phy_stat & HDMI_PHY_HPD)
> status = connector_status_connected;
>
> + if (hdmi->ignore_rxsense)
> + phy_stat &= ~HDMI_PHY_RX_SENSE;
> +
> if (!(phy_stat & (HDMI_PHY_HPD | HDMI_PHY_RX_SENSE)))
> status = connector_status_disconnected;
> }
> @@ -3362,6 +3366,8 @@ struct dw_hdmi *dw_hdmi_probe(struct platform_device *pdev,
> mutex_init(&hdmi->cec_notifier_mutex);
> spin_lock_init(&hdmi->audio_lock);
>
> + hdmi->ignore_rxsense = of_property_read_bool(np, "ignore-rxsense");
> +
> ddc_node = of_parse_phandle(np, "ddc-i2c-bus", 0);
> if (ddc_node) {
> hdmi->ddc = of_get_i2c_adapter_by_node(ddc_node);