[PATCH v4 3/5] drm: bridge: Link encoder and bridge in core code
Jyri Sarha
jsarha at ti.com
Fri Dec 16 09:17:42 UTC 2016
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 at ideasonboard.com>
> Acked-by: Stefan Agner <stefan at agner.ch> # For DCU
> Acked-by: Boris Brezillon <boris.brezillon at free-electrons.com> # For atmel-hlcdc
> Acked-by: Vincent Abriou <vincent.abriou at st.com> # For STI
Acked-by: Jyri Sarha <jsarha at ti.com> # 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,
>
More information about the dri-devel
mailing list