Hi Damon, On 4/3/2026 9:00 AM, Damon Ding wrote: > Convert this driver to DRM_BRIDGE_ATTACH_NO_CONNECTOR and to the > drm_bridge_connector framework which is the current DRM bridge best > practice.
Changing to use the bridge connector at this stage will cause the Rockchip platform to drop features the dw-hdmi connector currently only can provide, e.g. a CEC notifier, some connector properties and more. I am also currently working on a multi series effort to: - phy: rockchip: inno-hdmi: Change TMDS rate handling to configure() ops [v2] - drm/rockchip: dw_hdmi: Misc cleanup and propagate bus format [v1] - drm: bridge: dw_hdmi: Misc enable/disable, CEC and EDID cleanup [v5] - drm/bridge: dw-hdmi: Improve input/output bus format handling - drm/bridge: dw-hdmi: Convert to a HDMI bridge and use of bridge connector - drm/bridge: dw-hdmi: Add and use tmds_char_rate_valid() plat data ops - drm/meson: hdmi: Misc cleanup and use CEC notifier helpers - drm/rockchip: dw_hdmi: Enable YCbCr and Deep Color modes Link to snapshot: https://github.com/Kwiboo/linux-rockchip/commits/next-20260508-rk-hdmi-v3/ Part of that effort include to fully convert the dw-hdmi bridge into a HDMI bridge, something that is required to fully be able to replace all features currently provided by the use of the dw-hdmi connector. In that effort I have also taken a different approach and instead replace the dw-hdmi connector with the bridge connector directly from inside the dw-hdmi bridge driver. Regards, Jonas > Signed-off-by: Damon Ding <[email protected]> > --- > drivers/gpu/drm/rockchip/Kconfig | 1 + > drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 19 +++++++++++++++---- > 2 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/Kconfig > b/drivers/gpu/drm/rockchip/Kconfig > index e7f49fe845ea..69b832d0c8c4 100644 > --- a/drivers/gpu/drm/rockchip/Kconfig > +++ b/drivers/gpu/drm/rockchip/Kconfig > @@ -76,6 +76,7 @@ config ROCKCHIP_DW_DP > > config ROCKCHIP_DW_HDMI > bool "Rockchip specific extensions for Synopsys DW HDMI" > + select DRM_BRIDGE_CONNECTOR > help > This selects support for Rockchip SoC specific extensions > for the Synopsys DesignWare HDMI driver. If you want to > diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c > b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c > index 21b141b7cb9c..b5cfcb936078 100644 > --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c > +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c > @@ -13,6 +13,7 @@ > #include <linux/regulator/consumer.h> > > #include <drm/bridge/dw_hdmi.h> > +#include <drm/drm_bridge_connector.h> > #include <drm/drm_edid.h> > #include <drm/drm_of.h> > #include <drm/drm_probe_helper.h> > @@ -542,6 +543,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, > struct device *master, > struct drm_device *drm = data; > struct drm_encoder *encoder; > struct rockchip_hdmi *hdmi; > + struct drm_connector *connector; > int ret; > > if (!pdev->dev.of_node) > @@ -608,7 +610,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, > struct device *master, > > platform_set_drvdata(pdev, hdmi); > > - hdmi->hdmi = dw_hdmi_bind(pdev, encoder, plat_data, 0); > + hdmi->hdmi = dw_hdmi_bind(pdev, encoder, plat_data, > DRM_BRIDGE_ATTACH_NO_CONNECTOR); > > /* > * If dw_hdmi_bind() fails we'll never call dw_hdmi_unbind(), > @@ -616,12 +618,21 @@ static int dw_hdmi_rockchip_bind(struct device *dev, > struct device *master, > */ > if (IS_ERR(hdmi->hdmi)) { > ret = PTR_ERR(hdmi->hdmi); > - goto err_bind; > + goto err_cleanup_encoder; > } > > - return 0; > + connector = drm_bridge_connector_init(drm, encoder); > + if (IS_ERR(connector)) { > + ret = PTR_ERR(connector); > + dev_err(hdmi->dev, "Failed to initialize bridge_connector\n"); > + goto err_unbind_bridge; > + } > > -err_bind: > + return drm_connector_attach_encoder(connector, encoder); > + > +err_unbind_bridge: > + dw_hdmi_unbind(hdmi->hdmi); > +err_cleanup_encoder: > drm_encoder_cleanup(encoder); > > return ret;
