The DW mipi-dsi bind/unbind API was only used to attach the bridge to the encoder in the Rockchip driver, but with the addition of i.MX6 it gets more complicated because the i.MX6 part of the bridge is another bridge in itself which needs to daisy chain to the dw-mipi-dsi core. So, instead of extending this API to allow daisy-chaining bridges and risk having trouble with multiple connectors added by various bridges just delete it and let the DW core bridge be accesed by SoC-specific parts via the of_drm_find_bridge() API. This just fixes the Rockchip driver for the bind() deprecation, it doesn't convert it to a proper bridge daisy-chain with simple encoder and bridge .attach call-backs, that refactoring work should be done separately (and the i.MX6 driver can be used as reference). Suggested-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Signed-off-by: Adrian Ratiu <adrian.ratiu@xxxxxxxxxxxxx> --- New in v9. --- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 22 ------------------- .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 7 +++--- 2 files changed, 3 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c index 16fd87055e7b7..70df0578cbe7b 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -1453,28 +1453,6 @@ void dw_mipi_dsi_remove(struct dw_mipi_dsi *dsi) } EXPORT_SYMBOL_GPL(dw_mipi_dsi_remove); -/* - * Bind/unbind API, used from platforms based on the component framework. - */ -int dw_mipi_dsi_bind(struct dw_mipi_dsi *dsi, struct drm_encoder *encoder) -{ - int ret; - - ret = drm_bridge_attach(encoder, &dsi->bridge, NULL, 0); - if (ret) { - DRM_ERROR("Failed to initialize bridge with drm\n"); - return ret; - } - - return ret; -} -EXPORT_SYMBOL_GPL(dw_mipi_dsi_bind); - -void dw_mipi_dsi_unbind(struct dw_mipi_dsi *dsi) -{ -} -EXPORT_SYMBOL_GPL(dw_mipi_dsi_unbind); - MODULE_AUTHOR("Chris Zhong <zyw@xxxxxxxxxxxxxx>"); MODULE_AUTHOR("Philippe Cornu <philippe.cornu@xxxxxx>"); MODULE_DESCRIPTION("DW MIPI DSI host controller driver"); diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c index 3feff0c45b3f7..86f87c7ea03cf 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c @@ -876,6 +876,7 @@ static int dw_mipi_dsi_rockchip_bind(struct device *dev, { struct dw_mipi_dsi_rockchip *dsi = dev_get_drvdata(dev); struct drm_device *drm_dev = data; + struct drm_bridge *dw_bridge = of_drm_find_bridge(dev->of_node); struct device *second; bool master1, master2; int ret; @@ -929,9 +930,9 @@ static int dw_mipi_dsi_rockchip_bind(struct device *dev, return ret; } - ret = dw_mipi_dsi_bind(dsi->dmd, &dsi->encoder); + ret = drm_bridge_attach(&dsi->encoder, dw_bridge, NULL, 0); if (ret) { - DRM_DEV_ERROR(dev, "Failed to bind: %d\n", ret); + DRM_DEV_ERROR(dev, "Failed to attach DW DSI bridge: %d\n", ret); return ret; } @@ -947,8 +948,6 @@ static void dw_mipi_dsi_rockchip_unbind(struct device *dev, if (dsi->is_slave) return; - dw_mipi_dsi_unbind(dsi->dmd); - clk_disable_unprepare(dsi->pllref_clk); } -- 2.27.0