Hi Liu Ying, > -----Original Message----- > From: Liu Ying <victor.liu@xxxxxxx> > Sent: Friday, October 18, 2024 8:38 AM > To: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>; devicetree@xxxxxxxxxxxxxxx; imx@xxxxxxxxxxxxxxx; linux-arm- > kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx > Cc: robh@xxxxxxxxxx; krzk+dt@xxxxxxxxxx; conor+dt@xxxxxxxxxx; shawnguo@xxxxxxxxxx; > s.hauer@xxxxxxxxxxxxxx; kernel@xxxxxxxxxxxxxx; festevam@xxxxxxxxx; andrzej.hajda@xxxxxxxxx; > neil.armstrong@xxxxxxxxxx; rfoss@xxxxxxxxxx; laurent.pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>; > jonas@xxxxxxxxx; jernej.skrabec@xxxxxxxxx; maarten.lankhorst@xxxxxxxxxxxxxxx; mripard@xxxxxxxxxx; > tzimmermann@xxxxxxx; airlied@xxxxxxxxx; simona@xxxxxxxx; marex@xxxxxxx; stefan@xxxxxxxx; > dmitry.baryshkov@xxxxxxxxxx > Subject: Re: [PATCH 5/5] drm: lcdif: Use drm_bridge_connector > > On 10/18/2024, Biju Das wrote: > > Hi Liu Ying, > > Hi Biju, > > > > > Thanks for the patch. > > Thanks for your review. > > > > >> -----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"); > > I thought about that and decided not to use dev_err_probe() because I don't think > drm_bridge_connector_init() may return -EPROBE_DEFER, no? Yes, you are correct. Reviewed-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> Cheers, Biju > > > > > Cheers, > > Biju > > > >> + } > >> + > >> + drm_connector_attach_encoder(connector, encoder); > >> } > >> > >> return 0; > >> -- > >> 2.34.1 > >> > > > > -- > Regards, > Liu Ying