Hi Liu Ying, Thanks for the patch. > -----Original Message----- > From: linux-arm-kernel <linux-arm-kernel-bounces@xxxxxxxxxxxxxxxxxxx> 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.liu@xxxxxxx> > --- > 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 >