Forráskód Böngészése

drm: bridge: Detach all bridges in a chain at encoder cleanup time

Instead of detaching only the bridge directly connected to the encoder,
detach all bridges in the chain.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
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-6-git-send-email-laurent.pinchart+renesas@ideasonboard.com
Laurent Pinchart 8 éve
szülő
commit
6e15174ecd
1 módosított fájl, 10 hozzáadás és 2 törlés
  1. 10 2
      drivers/gpu/drm/drm_encoder.c

+ 10 - 2
drivers/gpu/drm/drm_encoder.c

@@ -159,8 +159,16 @@ void drm_encoder_cleanup(struct drm_encoder *encoder)
 	 * the indices on the drm_encoder after us in the encoder_list.
 	 */
 
-	if (encoder->bridge)
-		drm_bridge_detach(encoder->bridge);
+	if (encoder->bridge) {
+		struct drm_bridge *bridge = encoder->bridge;
+		struct drm_bridge *next;
+
+		while (bridge) {
+			next = bridge->next;
+			drm_bridge_detach(bridge);
+			bridge = next;
+		}
+	}
 
 	drm_mode_object_unregister(dev, &encoder->base);
 	kfree(encoder->name);