On Tue, Dec 31, 2024 at 08:28:48PM +0100, Marek Vasut wrote: > Add a flag meant purely to work around broken i.MX8MP DTs which enable > HDMI but do not contain the HDMI connector node. This flag allows such > DTs to work by creating the connector in the HDMI bridge driver. Do not > use this flag, do not proliferate this flag, please fix your DTs. > > Signed-off-by: Marek Vasut <marex@xxxxxxx> Please describe that it is required for backwards compatibility with the existing DTs. I think it is a good idea unless Shawn, Sascha or Fabio tell that we should ignore backwards compatibility. With that in mind: Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > --- > Cc: Andrzej Hajda <andrzej.hajda@xxxxxxxxx> > Cc: David Airlie <airlied@xxxxxxxxx> > Cc: Fabio Estevam <festevam@xxxxxxxxx> > Cc: Jernej Skrabec <jernej.skrabec@xxxxxxxxx> > Cc: Jonas Karlman <jonas@xxxxxxxxx> > Cc: Laurent Pinchart <Laurent.pinchart@xxxxxxxxxxxxxxxx> > Cc: Liu Ying <victor.liu@xxxxxxx> > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Cc: Maxime Ripard <mripard@xxxxxxxxxx> > Cc: Neil Armstrong <neil.armstrong@xxxxxxxxxx> > Cc: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx> > Cc: Robert Foss <rfoss@xxxxxxxxxx> > Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > Cc: Shawn Guo <shawnguo@xxxxxxxxxx> > Cc: Simona Vetter <simona@xxxxxxxx> > Cc: Stefan Agner <stefan@xxxxxxxx> > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx > Cc: imx@xxxxxxxxxxxxxxx > Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > --- > V3: New patch > --- > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 12 ++++++++---- > include/drm/bridge/dw_hdmi.h | 2 ++ > 2 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > index 996733ed2c004..852e73c0f686f 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > @@ -2893,9 +2893,13 @@ static int dw_hdmi_bridge_attach(struct drm_bridge *bridge, > { > struct dw_hdmi *hdmi = bridge->driver_private; > > - if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) > - return drm_bridge_attach(bridge->encoder, hdmi->next_bridge, > - bridge, flags); > + if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) { > + if (hdmi->plat_data->output_port_optional && !hdmi->next_bridge) > + return dw_hdmi_connector_create(hdmi); > + else > + return drm_bridge_attach(bridge->encoder, hdmi->next_bridge, > + bridge, flags); > + } > > return dw_hdmi_connector_create(hdmi); > } > @@ -3298,7 +3302,7 @@ static int dw_hdmi_parse_dt(struct dw_hdmi *hdmi) > hdmi->plat_data->output_port, > -1); > if (!remote) > - return -ENODEV; > + return hdmi->plat_data->output_port_optional ? 0 : -ENODEV; > > hdmi->next_bridge = of_drm_find_bridge(remote); > of_node_put(remote); > diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h > index 6a46baa0737cd..3bb6e633424a8 100644 > --- a/include/drm/bridge/dw_hdmi.h > +++ b/include/drm/bridge/dw_hdmi.h > @@ -127,6 +127,8 @@ struct dw_hdmi_plat_data { > struct regmap *regm; > > unsigned int output_port; > + /* Used purely by MX8MP HDMI to work around broken DTs without HDMI connector node. */ > + bool output_port_optional; > > unsigned long input_bus_encoding; > bool use_drm_infoframe; > -- > 2.45.2 > -- With best wishes Dmitry