Re: [PATCH v1 2/3] drm/bridge: dw-hdmi: optionally ignore rxsense when detecting hotplug

From: Ian Ray

Date: Wed Sep 02 2026 - 13:52:40 EST


On Wed, Sep 02, 2026 at 05:38:34PM +0200, Jonas Karlman wrote:
> 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/

Thank you -- your series does indeed solve my problem.
I will reply to [2] with a Tested-by: tag.


>
> 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);
>