[PATCH v6 04/11] drm/hisilicon/kirin: switch to of_drm_get_bridge_by_endpoint()

Louis Chauvet louis.chauvet at bootlin.com
Mon May 18 01:52:01 PDT 2026



On 5/11/26 18:40, Luca Ceresoli wrote:
> This driver calls drm_of_find_panel_or_bridge() with a NULL pointer in the
> @panel parameter, thus using a reduced feature set of that function.
> Replace this call with the simpler of_drm_get_bridge_by_endpoint().
> 
> Since of_drm_get_bridge_by_endpoint() increases the refcount of the
> returned bridge, ensure it is put on removal. Here the bridge pointer is
> only stored in a temporary variable, so a cleanup action is enough.
> 
> Signed-off-by: Luca Ceresoli <luca.ceresoli at bootlin.com>

Reviewed-by: Louis Chauvet <louis.chauvet at bootlin.com>

> ---
>   drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c | 9 ++++-----
>   1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c b/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
> index e80debdc4176..ab3cd309505a 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
> @@ -778,17 +778,16 @@ static int dsi_host_init(struct device *dev, struct dw_dsi *dsi)
>   static int dsi_bridge_init(struct drm_device *dev, struct dw_dsi *dsi)
>   {
>   	struct drm_encoder *encoder = &dsi->encoder;
> -	struct drm_bridge *bridge;
> +	struct drm_bridge *bridge __free(drm_bridge_put) = NULL;
>   	struct device_node *np = dsi->dev->of_node;
> -	int ret;
>   
>   	/*
>   	 * Get the endpoint node. In our case, dsi has one output port1
>   	 * to which the external HDMI bridge is connected.
>   	 */
> -	ret = drm_of_find_panel_or_bridge(np, 1, 0, NULL, &bridge);
> -	if (ret)
> -		return ret;
> +	bridge = of_drm_get_bridge_by_endpoint(np, 1, 0);
> +	if (IS_ERR(bridge))
> +		return PTR_ERR(bridge);
>   
>   	/* associate the bridge to dsi encoder */
>   	return drm_bridge_attach(encoder, bridge, NULL, 0);
> 




More information about the linux-arm-kernel mailing list