Hi Liu Ying,

Thanks for the patch.

> -----Original Message-----
> From: linux-arm-kernel <linux-arm-kernel-boun...@lists.infradead.org> On 
> Behalf Of Liu Ying
> Sent: Friday, October 18, 2024 7:48 AM
> Subject: [PATCH 5/5] drm: lcdif: Use drm_bridge_connector
> 
> Initialize a connector by calling drm_bridge_connector_init() for each 
> encoder so that down stream
> bridge drivers don't need to create connectors any more.
> 
> Signed-off-by: Liu Ying <victor....@nxp.com>
> ---
>  drivers/gpu/drm/mxsfb/Kconfig     |  1 +
>  drivers/gpu/drm/mxsfb/lcdif_drv.c | 17 ++++++++++++++++-
>  2 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/mxsfb/Kconfig b/drivers/gpu/drm/mxsfb/Kconfig 
> index
> 264e74f45554..06c95e556380 100644
> --- a/drivers/gpu/drm/mxsfb/Kconfig
> +++ b/drivers/gpu/drm/mxsfb/Kconfig
> @@ -27,6 +27,7 @@ config DRM_IMX_LCDIF
>       depends on DRM && OF
>       depends on COMMON_CLK
>       depends on ARCH_MXC || COMPILE_TEST
> +     select DRM_BRIDGE_CONNECTOR
>       select DRM_CLIENT_SELECTION
>       select DRM_MXS
>       select DRM_KMS_HELPER
> diff --git a/drivers/gpu/drm/mxsfb/lcdif_drv.c 
> b/drivers/gpu/drm/mxsfb/lcdif_drv.c
> index 58ccad9c425d..d4521da6675e 100644
> --- a/drivers/gpu/drm/mxsfb/lcdif_drv.c
> +++ b/drivers/gpu/drm/mxsfb/lcdif_drv.c
> @@ -16,7 +16,9 @@
> 
>  #include <drm/drm_atomic_helper.h>
>  #include <drm/drm_bridge.h>
> +#include <drm/drm_bridge_connector.h>
>  #include <drm/drm_client_setup.h>
> +#include <drm/drm_connector.h>
>  #include <drm/drm_drv.h>
>  #include <drm/drm_encoder.h>
>  #include <drm/drm_fbdev_dma.h>
> @@ -56,6 +58,7 @@ static int lcdif_attach_bridge(struct lcdif_drm_private 
> *lcdif)
>               struct device_node *remote;
>               struct of_endpoint of_ep;
>               struct drm_encoder *encoder;
> +             struct drm_connector *connector;
> 
>               remote = of_graph_get_remote_port_parent(ep);
>               if (!of_device_is_available(remote)) { @@ -97,13 +100,25 @@ 
> static int
> lcdif_attach_bridge(struct lcdif_drm_private *lcdif)
>                       return ret;
>               }
> 
> -             ret = drm_bridge_attach(encoder, bridge, NULL, 0);
> +             ret = drm_bridge_attach(encoder, bridge, NULL,
> +                                     DRM_BRIDGE_ATTACH_NO_CONNECTOR);
>               if (ret) {
>                       of_node_put(ep);
>                       return dev_err_probe(dev, ret,
>                                            "Failed to attach bridge for 
> endpoint%u\n",
>                                            of_ep.id);
>               }
> +
> +             connector = drm_bridge_connector_init(lcdif->drm, encoder);
> +             if (IS_ERR(connector)) {
> +                     ret = PTR_ERR(connector);
> +                     dev_err(dev, "Failed to initialize bridge connector: 
> %d\n",
> +                             ret);
> +                     of_node_put(ep);
> +                     return ret;

Maybe same error path style like above??
                of_node_put(ep);
                return dev_err_probe(dev, PTR_ERR(connector),"Failed to 
initialize bridge connector");

Cheers,
Biju

> +             }
> +
> +             drm_connector_attach_encoder(connector, encoder);
>       }
> 
>       return 0;
> --
> 2.34.1
> 

Reply via email to