On Thu, Sep 11, 2025 at 04:07:36PM +0300, Marius Vlad wrote: > Initialize drm_brige with advertised colors formats straight on. > > Drivers that make use of DRM helpers would check the > drm_brige::supported_formats bit-field list and refuse to use the color > format passed. Drivers that make use of drm_bridge can pass the > supported color formats in the bridge as well as supported color format > for the DRM color format property.
Your commit message doesn't match patch contents. You are pushing format selection to the instance creating drm_bridge_connector, which frequently has no idea about the other end of the chain - the bridges which actually send pixel data to the monitor. We have drm_bridge::ycbcr_420_allowed with clearly defined meaning. I think it would be wise to start from that and to describe why such a field doesn't fulfill your needs. > > This includes a fallback to RGB when Auto has been selected. > > Signed-off-by: Marius Vlad <marius.v...@collabora.com> > --- > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 2 +- > drivers/gpu/drm/bridge/ite-it6263.c | 2 +- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 3 ++- > drivers/gpu/drm/display/drm_bridge_connector.c | 4 ++-- > drivers/gpu/drm/imx/dcss/dcss-kms.c | 2 +- > drivers/gpu/drm/mediatek/mtk_dpi.c | 2 +- > drivers/gpu/drm/mediatek/mtk_dsi.c | 2 +- > drivers/gpu/drm/meson/meson_encoder_cvbs.c | 3 ++- > drivers/gpu/drm/meson/meson_encoder_hdmi.c | 4 ++-- > drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 2 +- > drivers/gpu/drm/msm/dp/dp_drm.c | 3 ++- > drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 +- > drivers/gpu/drm/msm/hdmi/hdmi.c | 2 +- > drivers/gpu/drm/renesas/rcar-du/rcar_du_encoder.c | 2 +- > drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c | 2 +- > drivers/gpu/drm/rockchip/cdn-dp-core.c | 2 +- > drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 2 +- > drivers/gpu/drm/rockchip/rockchip_lvds.c | 2 +- > drivers/gpu/drm/tegra/hdmi.c | 2 +- > drivers/gpu/drm/tegra/rgb.c | 2 +- > drivers/gpu/drm/tidss/tidss_encoder.c | 2 +- > include/drm/drm_bridge_connector.h | 3 ++- > 22 files changed, 28 insertions(+), 24 deletions(-) > > diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_drm.c > index 9a461ab2f32f..8d5299849be6 100644 > --- a/drivers/gpu/drm/msm/dp/dp_drm.c > +++ b/drivers/gpu/drm/msm/dp/dp_drm.c > @@ -368,7 +368,8 @@ struct drm_connector *msm_dp_drm_connector_init(struct > msm_dp *msm_dp_display, > { > struct drm_connector *connector = NULL; > > - connector = drm_bridge_connector_init(msm_dp_display->drm_dev, encoder); > + connector = drm_bridge_connector_init(msm_dp_display->drm_dev, encoder, > + BIT(HDMI_COLORSPACE_RGB)); Just to point out: this is wrong. > if (IS_ERR(connector)) > return connector; > > diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c > b/drivers/gpu/drm/msm/dsi/dsi_manager.c > index ca400924d4ee..4b87f4f78d38 100644 > --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c > +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c > @@ -479,7 +479,7 @@ int msm_dsi_manager_connector_init(struct msm_dsi > *msm_dsi, > if (ret) > return ret; > > - connector = drm_bridge_connector_init(dev, encoder); > + connector = drm_bridge_connector_init(dev, encoder, > BIT(HDMI_COLORSPACE_RGB)); And this totally depends on the bridge chain. If we have a DSI-to-HDMI bridge somewhere in the middle, we are able to output YUV data to the HDMI connector. > if (IS_ERR(connector)) { > DRM_ERROR("Unable to create bridge connector\n"); > return PTR_ERR(connector); -- With best wishes Dmitry