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]/

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