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/[email protected]/
> [2] https://lore.kernel.org/all/[email protected]/

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: [email protected]
> > Signed-off-by: Ian Ray <[email protected]>
> > ---
> >  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);
> 

Reply via email to