* [PATCH v2] drm/bridge: rename drm_for_each_bridge_in_chain_scoped() to drm_for_each_bridge_in_chain()
@ 2026-06-30 15:34 Luca Ceresoli
2026-07-03 15:59 ` Louis Chauvet
0 siblings, 1 reply; 2+ messages in thread
From: Luca Ceresoli @ 2026-06-30 15:34 UTC (permalink / raw)
To: Miguel Ojeda, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Luca Ceresoli,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, Nathan Chancellor, Nick Desaulniers, Bill Wendling,
Justin Stitt
Cc: Hui Pu, Ian Ray, Thomas Petazzoni, linux-kernel, dri-devel, llvm
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 <luca.ceresoli@bootlin.com>
---
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-0362434ae0eb@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
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2] drm/bridge: rename drm_for_each_bridge_in_chain_scoped() to drm_for_each_bridge_in_chain()
2026-06-30 15:34 [PATCH v2] drm/bridge: rename drm_for_each_bridge_in_chain_scoped() to drm_for_each_bridge_in_chain() Luca Ceresoli
@ 2026-07-03 15:59 ` Louis Chauvet
0 siblings, 0 replies; 2+ messages in thread
From: Louis Chauvet @ 2026-07-03 15:59 UTC (permalink / raw)
To: Luca Ceresoli, Miguel Ojeda, Andrzej Hajda, Neil Armstrong,
Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, Nathan Chancellor, Nick Desaulniers, Bill Wendling,
Justin Stitt
Cc: Hui Pu, Ian Ray, Thomas Petazzoni, linux-kernel, dri-devel, llvm
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 <luca.ceresoli@bootlin.com>
Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com>
> ---
> 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-0362434ae0eb@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
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-07-03 15:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-30 15:34 [PATCH v2] drm/bridge: rename drm_for_each_bridge_in_chain_scoped() to drm_for_each_bridge_in_chain() Luca Ceresoli
2026-07-03 15:59 ` Louis Chauvet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox