[PATCH v11 30/74] drm/bridge: dw-hdmi-qp: Provide dw_hdmi_qp_hpd_notify() helper

Maxime Ripard mripard at kernel.org
Tue Sep 8 05:48:08 PDT 2026


On Tue, Sep 01, 2026 at 09:50:54PM +0300, Cristian Ciocaltea wrote:
> Export dw_hdmi_qp_hpd_notify() for platform drivers to report hot-plug
> detection events.  Unlike drm_helper_hpd_irq_event() which polls all
> connectors, this helper targets only the affected connector and ensures
> .detect_ctx() is invoked on reconnection events to trigger SCDC state
> recovery.
> 
> Note that this helper may sleep, so it must only be called from a
> threaded HPD interrupt handler or a work function.
> 
> Tested-by: Maud Spierings <maud_spierings at hotmail.com>
> Tested-by: Diederik de Haas <diederik at cknow-tech.com>  # NanoPC-T6 LTS, Rock 5B
> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
> ---
>  drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 37 ++++++++++++++++++++++++++++
>  include/drm/bridge/dw_hdmi_qp.h              |  1 +
>  2 files changed, 38 insertions(+)
> 
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
> index ee74266b7aa9..a2277531182c 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
> @@ -28,6 +28,7 @@
>  #include <drm/drm_edid.h>
>  #include <drm/drm_modes.h>
>  #include <drm/drm_print.h>
> +#include <drm/drm_probe_helper.h>
>  
>  #include <media/cec.h>
>  
> @@ -163,6 +164,8 @@ struct dw_hdmi_qp {
>  	struct regmap *regm;
>  	int main_irq;
>  
> +	/* Written by the atomic enable/disable hooks, read locklessly by HPD */
> +	struct drm_connector *curr_conn;
>  	unsigned long tmds_char_rate;
>  	bool no_hpd;
>  };
> @@ -785,6 +788,8 @@ static void dw_hdmi_qp_bridge_atomic_enable(struct drm_bridge *bridge,
>  	dw_hdmi_qp_mod(hdmi, op_mode, OPMODE_DVI, LINK_CONFIG0);
>  
>  	drm_atomic_helper_connector_hdmi_update_infoframes(connector, state);
> +
> +	WRITE_ONCE(hdmi->curr_conn, connector);

You need to take a reference to the connector, and you really should use
a mutex here.

Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 273 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-rockchip/attachments/20260908/4653f34e/attachment-0001.sig>


More information about the Linux-rockchip mailing list