From c5a158d0fdab5b7144549ab5682392fa583560d2 Mon Sep 17 00:00:00 2001 From: Mathieu Choplain Date: Wed, 19 Nov 2025 11:15:24 +0100 Subject: [PATCH] drivers: gpio: stm32: use FOR_EACH to instantiate devices Use a list of ports and FOR_EACH to instantiate GPIO devices instead of having one line to instantiate each port. This is much shorter and also makes it easier to add support for new ports, if necessary in the future. While at it, cover all ports from A to Z since it is now trivial to do so. Signed-off-by: Mathieu Choplain --- drivers/gpio/gpio_stm32.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/drivers/gpio/gpio_stm32.c b/drivers/gpio/gpio_stm32.c index fea5c34944d30..e58183b812587 100644 --- a/drivers/gpio/gpio_stm32.c +++ b/drivers/gpio/gpio_stm32.c @@ -775,21 +775,16 @@ __maybe_unused static int gpio_stm32_init(const struct device *dev) IF_ENABLED(DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(gpio##__suffix)), \ (GPIO_DEVICE_INIT_STM32(__suffix, __SUFFIX))) -GPIO_DEVICE_INIT_STM32_IF_OKAY(a, A); -GPIO_DEVICE_INIT_STM32_IF_OKAY(b, B); -GPIO_DEVICE_INIT_STM32_IF_OKAY(c, C); -GPIO_DEVICE_INIT_STM32_IF_OKAY(d, D); -GPIO_DEVICE_INIT_STM32_IF_OKAY(e, E); -GPIO_DEVICE_INIT_STM32_IF_OKAY(f, F); -GPIO_DEVICE_INIT_STM32_IF_OKAY(g, G); -GPIO_DEVICE_INIT_STM32_IF_OKAY(h, H); -GPIO_DEVICE_INIT_STM32_IF_OKAY(i, I); -GPIO_DEVICE_INIT_STM32_IF_OKAY(j, J); -GPIO_DEVICE_INIT_STM32_IF_OKAY(k, K); - -GPIO_DEVICE_INIT_STM32_IF_OKAY(m, M); -GPIO_DEVICE_INIT_STM32_IF_OKAY(n, N); -GPIO_DEVICE_INIT_STM32_IF_OKAY(o, O); -GPIO_DEVICE_INIT_STM32_IF_OKAY(p, P); -GPIO_DEVICE_INIT_STM32_IF_OKAY(q, Q); -GPIO_DEVICE_INIT_STM32_IF_OKAY(z, Z); +/* + * !!!Keep both lists in sync!!! + */ +#define GPIO_PORTS_LWR \ + a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, x, y, z + +#define GPIO_PORTS_UPR \ + A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, X, Y, Z + +#define DEVICE_INIT_IF_OKAY(idx, __suffix) \ + GPIO_DEVICE_INIT_STM32_IF_OKAY(__suffix, GET_ARG_N(UTIL_INC(idx), GPIO_PORTS_UPR)) + +FOR_EACH_IDX(DEVICE_INIT_IF_OKAY, (;), GPIO_PORTS_LWR);