On 12/14/16 11:59, Laurent Pinchart wrote: > Instead of linking encoders and bridges in every driver (and getting it > wrong half of the time, as many drivers forget to set the drm_bridge > encoder pointer), do so in core code. The drm_bridge_attach() function > needs the encoder and optional previous bridge to perform that task, > update all the callers. > > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> > Acked-by: Stefan Agner <stefan@xxxxxxxx> # For DCU > Acked-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx> # For atmel-hlcdc > Acked-by: Vincent Abriou <vincent.abriou@xxxxxx> # For STI Acked-by: Jyri Sarha <jsarha@xxxxxx> # For tilcdc > --- > drivers/gpu/drm/arc/arcpgu_hdmi.c | 5 +-- > drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c | 4 +- > drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 4 +- > drivers/gpu/drm/bridge/dw-hdmi.c | 3 +- > drivers/gpu/drm/drm_bridge.c | 46 ++++++++++++++++------ > drivers/gpu/drm/drm_simple_kms_helper.c | 4 +- > drivers/gpu/drm/exynos/exynos_dp.c | 5 +-- > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 6 +-- > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_rgb.c | 5 +-- > drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c | 5 +-- > drivers/gpu/drm/imx/imx-ldb.c | 6 +-- > drivers/gpu/drm/imx/parallel-display.c | 4 +- > drivers/gpu/drm/mediatek/mtk_dpi.c | 8 ++-- > drivers/gpu/drm/mediatek/mtk_dsi.c | 24 ++--------- > drivers/gpu/drm/mediatek/mtk_hdmi.c | 11 +++--- > drivers/gpu/drm/msm/dsi/dsi_manager.c | 17 +++++--- > drivers/gpu/drm/msm/edp/edp_bridge.c | 2 +- > drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 2 +- > drivers/gpu/drm/rcar-du/rcar_du_hdmienc.c | 5 +-- > drivers/gpu/drm/sti/sti_dvo.c | 3 +- > drivers/gpu/drm/sti/sti_hda.c | 3 +- > drivers/gpu/drm/sti/sti_hdmi.c | 3 +- > drivers/gpu/drm/sun4i/sun4i_rgb.c | 13 +++--- > drivers/gpu/drm/tilcdc/tilcdc_external.c | 4 +- ... > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c > index c67d7cd7d57e..b0dd5e8634ae 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c > @@ -167,10 +167,8 @@ int tilcdc_attach_bridge(struct drm_device *ddev, struct drm_bridge *bridge) > int ret; > > priv->external_encoder->possible_crtcs = BIT(0); > - priv->external_encoder->bridge = bridge; > - bridge->encoder = priv->external_encoder; > > - ret = drm_bridge_attach(ddev, bridge); > + ret = drm_bridge_attach(priv->external_encoder, bridge, NULL); > if (ret) { > dev_err(ddev->dev, "drm_bridge_attach() failed %d\n", ret); > return ret; > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h > index 530a1d6e8cde..94e5ee96b3b5 100644 > --- a/include/drm/drm_bridge.h > +++ b/include/drm/drm_bridge.h > @@ -201,7 +201,8 @@ struct drm_bridge { > int drm_bridge_add(struct drm_bridge *bridge); > void drm_bridge_remove(struct drm_bridge *bridge); > struct drm_bridge *of_drm_find_bridge(struct device_node *np); > -int drm_bridge_attach(struct drm_device *dev, struct drm_bridge *bridge); > +int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge, > + struct drm_bridge *previous); > void drm_bridge_detach(struct drm_bridge *bridge); > > bool drm_bridge_mode_fixup(struct drm_bridge *bridge, > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel