aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/sti
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2016-11-28 10:59:08 -0500
committerArchit Taneja <architt@codeaurora.org>2016-12-18 06:01:45 -0500
commit3bb80f249525c059572d4bc89ac77ac2e511bcbe (patch)
tree4c67445f057de2a7bbffbbe9ce004bbf1ebd0a4a /drivers/gpu/drm/sti
parent2407d1dc04789bfb2f39d248644981d2233feb0e (diff)
drm: bridge: Link encoder and bridge in core code
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@ideasonboard.com> Acked-by: Stefan Agner <stefan@agner.ch> # For DCU Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com> # For atmel-hlcdc Acked-by: Vincent Abriou <vincent.abriou@st.com> # For STI Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> # For sun4i Acked-by: Xinliang Liu <z.liuxinliang@hisilicon.com> # For hisilicon Acked-by: Jyri Sarha <jsarha@ti.com> # For tilcdc Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Archit Taneja <architt@codeaurora.org> Link: http://patchwork.freedesktop.org/patch/msgid/1481709550-29226-4-git-send-email-laurent.pinchart+renesas@ideasonboard.com
Diffstat (limited to 'drivers/gpu/drm/sti')
-rw-r--r--drivers/gpu/drm/sti/sti_dvo.c3
-rw-r--r--drivers/gpu/drm/sti/sti_hda.c3
-rw-r--r--drivers/gpu/drm/sti/sti_hdmi.c3
3 files changed, 3 insertions, 6 deletions
diff --git a/drivers/gpu/drm/sti/sti_dvo.c b/drivers/gpu/drm/sti/sti_dvo.c
index e8c1ed08a9f7..411dc6ec976e 100644
--- a/drivers/gpu/drm/sti/sti_dvo.c
+++ b/drivers/gpu/drm/sti/sti_dvo.c
@@ -478,14 +478,13 @@ static int sti_dvo_bind(struct device *dev, struct device *master, void *data)
478 return err; 478 return err;
479 } 479 }
480 480
481 err = drm_bridge_attach(drm_dev, bridge); 481 err = drm_bridge_attach(encoder, bridge, NULL);
482 if (err) { 482 if (err) {
483 DRM_ERROR("Failed to attach bridge\n"); 483 DRM_ERROR("Failed to attach bridge\n");
484 return err; 484 return err;
485 } 485 }
486 486
487 dvo->bridge = bridge; 487 dvo->bridge = bridge;
488 encoder->bridge = bridge;
489 connector->encoder = encoder; 488 connector->encoder = encoder;
490 dvo->encoder = encoder; 489 dvo->encoder = encoder;
491 490
diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
index 96f336dd0e29..66d37d78152a 100644
--- a/drivers/gpu/drm/sti/sti_hda.c
+++ b/drivers/gpu/drm/sti/sti_hda.c
@@ -707,9 +707,8 @@ static int sti_hda_bind(struct device *dev, struct device *master, void *data)
707 707
708 bridge->driver_private = hda; 708 bridge->driver_private = hda;
709 bridge->funcs = &sti_hda_bridge_funcs; 709 bridge->funcs = &sti_hda_bridge_funcs;
710 drm_bridge_attach(drm_dev, bridge); 710 drm_bridge_attach(encoder, bridge, NULL);
711 711
712 encoder->bridge = bridge;
713 connector->encoder = encoder; 712 connector->encoder = encoder;
714 713
715 drm_connector = (struct drm_connector *)connector; 714 drm_connector = (struct drm_connector *)connector;
diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index 376b0763c874..f0af1ae82ee9 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1308,9 +1308,8 @@ static int sti_hdmi_bind(struct device *dev, struct device *master, void *data)
1308 1308
1309 bridge->driver_private = hdmi; 1309 bridge->driver_private = hdmi;
1310 bridge->funcs = &sti_hdmi_bridge_funcs; 1310 bridge->funcs = &sti_hdmi_bridge_funcs;
1311 drm_bridge_attach(drm_dev, bridge); 1311 drm_bridge_attach(encoder, bridge, NULL);
1312 1312
1313 encoder->bridge = bridge;
1314 connector->encoder = encoder; 1313 connector->encoder = encoder;
1315 1314
1316 drm_connector = (struct drm_connector *)connector; 1315 drm_connector = (struct drm_connector *)connector;