On 6/30/26 17:34, Luca Ceresoli wrote:
drm_for_each_bridge_in_chain_scoped() was added in commit e46efc6a7d28
("drm/bridge: add drm_for_each_bridge_in_chain_scoped()") to provide a
safer alternative to drm_for_each_bridge_in_chain().

Following commits converted all users to the _scoped variant.

Finally commit 2f08387a444c ("drm/bridge: remove
drm_for_each_bridge_in_chain()") removed the old
drm_for_each_bridge_in_chain() macro.

It's time to rename drm_for_each_bridge_in_chain_scoped() back to the
original name.

Signed-off-by: Luca Ceresoli <[email protected]>

Reviewed-by: Louis Chauvet <[email protected]>

---
Changes in v2:
- Rebased on drm-misc-next, fixed conflicts, renamed new occurrences
- Link to v1: 
https://lore.kernel.org/r/20251223-drm-bridge-alloc-getput-for_each_bridge-2-v1-1-0362434ae...@bootlin.com
---
  .clang-format                                  |  2 +-
  drivers/gpu/drm/display/drm_bridge_connector.c |  4 ++--
  drivers/gpu/drm/drm_atomic.c                   |  2 +-
  drivers/gpu/drm/drm_bridge.c                   |  2 +-
  drivers/gpu/drm/tests/drm_bridge_test.c        |  2 +-
  include/drm/drm_bridge.h                       | 11 +++++------
  6 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/.clang-format b/.clang-format
index 6a3de86ab27a..5ef5743b77c9 100644
--- a/.clang-format
+++ b/.clang-format
@@ -167,7 +167,7 @@ ForEachMacros:
    - 'drm_connector_for_each_possible_encoder'
    - 'drm_exec_for_each_locked_object'
    - 'drm_exec_for_each_locked_object_reverse'
-  - 'drm_for_each_bridge_in_chain_scoped'
+  - 'drm_for_each_bridge_in_chain'
    - 'drm_for_each_connector_iter'
    - 'drm_for_each_crtc'
    - 'drm_for_each_crtc_reverse'
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c 
b/drivers/gpu/drm/display/drm_bridge_connector.c
index 92f8a2d7aab4..8b54069fa53a 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -147,7 +147,7 @@ static void drm_bridge_connector_hpd_notify(struct 
drm_connector *connector,
                to_drm_bridge_connector(connector);
/* Notify all bridges in the pipeline of hotplug events. */
-       drm_for_each_bridge_in_chain_scoped(bridge_connector->encoder, bridge) {
+       drm_for_each_bridge_in_chain(bridge_connector->encoder, bridge) {
                if (bridge->funcs->hpd_notify)
                        bridge->funcs->hpd_notify(bridge, connector, status);
        }
@@ -854,7 +854,7 @@ struct drm_connector *drm_bridge_connector_init(struct 
drm_device *drm,
         * detection are available, we don't support hotplug detection at all.
         */
        connector_type = DRM_MODE_CONNECTOR_Unknown;
-       drm_for_each_bridge_in_chain_scoped(encoder, bridge) {
+       drm_for_each_bridge_in_chain(encoder, bridge) {
                if (!bridge->interlace_allowed)
                        connector->interlace_allowed = false;
                if (!bridge->ycbcr_420_allowed)
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 735ab7badc2e..e5c8ef06caed 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -1554,7 +1554,7 @@ drm_atomic_add_encoder_bridges(struct drm_atomic_commit 
*state,
                       "Adding all bridges for [encoder:%d:%s] to %p\n",
                       encoder->base.id, encoder->name, state);
- drm_for_each_bridge_in_chain_scoped(encoder, bridge) {
+       drm_for_each_bridge_in_chain(encoder, bridge) {
                /* Skip bridges that don't implement the atomic state hooks. */
                if (!bridge->funcs->atomic_duplicate_state)
                        continue;
diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index 6ead9b75ae3d..dfab82923c85 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -1817,7 +1817,7 @@ static int encoder_bridges_show(struct seq_file *m, void 
*data)
        struct drm_printer p = drm_seq_file_printer(m);
        unsigned int idx = 0;
- drm_for_each_bridge_in_chain_scoped(encoder, bridge)
+       drm_for_each_bridge_in_chain(encoder, bridge)
                drm_bridge_debugfs_show_bridge(&p, bridge, idx++, false, true);
return 0;
diff --git a/drivers/gpu/drm/tests/drm_bridge_test.c 
b/drivers/gpu/drm/tests/drm_bridge_test.c
index 10a32620e962..430d9bc67a10 100644
--- a/drivers/gpu/drm/tests/drm_bridge_test.c
+++ b/drivers/gpu/drm/tests/drm_bridge_test.c
@@ -1071,7 +1071,7 @@ static void drm_test_bridge_chain_verify_fmt(struct kunit 
*test,
        struct drm_bridge_state *bstate;
        unsigned int i = 0;
- drm_for_each_bridge_in_chain_scoped(&priv->encoder, bridge) {
+       drm_for_each_bridge_in_chain(&priv->encoder, bridge) {
                KUNIT_ASSERT_LT(test, i, num_expected);
bstate = drm_bridge_get_current_state(bridge);
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 18f3db367dc1..0fadc39dfc12 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -1474,9 +1474,9 @@ static inline struct drm_bridge 
*__drm_for_each_bridge_in_chain_next(struct drm_
  DEFINE_FREE(__drm_for_each_bridge_in_chain_cleanup, struct drm_bridge *,
        if (_T) { mutex_unlock(&_T->encoder->bridge_chain_mutex); 
drm_bridge_put(_T); })
-/* Internal to drm_for_each_bridge_in_chain_scoped() */
+/* Internal to drm_for_each_bridge_in_chain() */
  static inline struct drm_bridge *
-__drm_for_each_bridge_in_chain_scoped_start(struct drm_encoder *encoder)
+__drm_for_each_bridge_in_chain_start(struct drm_encoder *encoder)
  {
        mutex_lock(&encoder->bridge_chain_mutex);
@@ -1489,8 +1489,7 @@ __drm_for_each_bridge_in_chain_scoped_start(struct drm_encoder *encoder)
  }
/**
- * drm_for_each_bridge_in_chain_scoped - iterate over all bridges attached
- *                                       to an encoder
+ * drm_for_each_bridge_in_chain - iterate over all bridges attached to an 
encoder
   * @encoder: the encoder to iterate bridges on
   * @bridge: a bridge pointer updated to point to the current bridge at each
   *        iteration
@@ -1500,9 +1499,9 @@ __drm_for_each_bridge_in_chain_scoped_start(struct 
drm_encoder *encoder)
   * Automatically gets/puts the bridge reference while iterating and locks
   * the encoder chain mutex to prevent chain modifications while iterating.
   */
-#define drm_for_each_bridge_in_chain_scoped(encoder, bridge)                   
        \
+#define drm_for_each_bridge_in_chain(encoder, bridge)                          
        \
        for (struct drm_bridge *bridge 
__free(__drm_for_each_bridge_in_chain_cleanup) = \
-               __drm_for_each_bridge_in_chain_scoped_start((encoder));         
        \
+               __drm_for_each_bridge_in_chain_start((encoder));                
        \
             bridge;                                                            
        \
             bridge = __drm_for_each_bridge_in_chain_next(bridge))              
        \
---
base-commit: 377939b713ca89de92573e3f3662b805fecc95d5
change-id: 20251223-drm-bridge-alloc-getput-for_each_bridge-2-2318aa93b69e

Best regards,
--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


Reply via email to