]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/bridge: add drm_bridge_chain_get_last_bridge()
authorLuca Ceresoli <luca.ceresoli@bootlin.com>
Fri, 1 Aug 2025 17:05:24 +0000 (19:05 +0200)
committerLuca Ceresoli <luca.ceresoli@bootlin.com>
Tue, 2 Sep 2025 09:38:29 +0000 (11:38 +0200)
Add an equivalent of drm_bridge_chain_get_first_bridge() to get the last
bridge.

Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20250801-drm-bridge-alloc-getput-drm_bridge_get_next_bridge-v2-2-888912b0be13@bootlin.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
include/drm/drm_bridge.h

index 8d9d4fd078e72977677fd992d725261232754e3e..788517ab00d3cc4b4c8125fad4b281c286d80f51 100644 (file)
@@ -1410,6 +1410,24 @@ drm_bridge_chain_get_first_bridge(struct drm_encoder *encoder)
                                                       struct drm_bridge, chain_node));
 }
 
+/**
+ * drm_bridge_chain_get_last_bridge() - Get the last bridge in the chain
+ * @encoder: encoder object
+ *
+ * The refcount of the returned bridge is incremented. Use drm_bridge_put()
+ * when done with it.
+ *
+ * RETURNS:
+ * the last bridge in the chain, or NULL if @encoder has no bridge attached
+ * to it.
+ */
+static inline struct drm_bridge *
+drm_bridge_chain_get_last_bridge(struct drm_encoder *encoder)
+{
+       return drm_bridge_get(list_last_entry_or_null(&encoder->bridge_chain,
+                                                     struct drm_bridge, chain_node));
+}
+
 /**
  * drm_for_each_bridge_in_chain() - Iterate over all bridges present in a chain
  * @encoder: the encoder to iterate bridges on