gpiolib: Embed iterator variable into for_each_gpio_desc_with_flag()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 8 Apr 2022 18:18:50 +0000 (21:18 +0300)
committerBartosz Golaszewski <brgl@bgdev.pl>
Sat, 9 Apr 2022 20:37:48 +0000 (22:37 +0200)
The iterator loop is used exclusively to get a descriptor, which in its
turn is what is being used by the caller. Embed the iterator variable
into the loop in the for_each_gpio_desc_with_flag() macro helper.

Suggested-by: Bartosz Golaszewski <brgl@bgdev.pl>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpiolib-of.c
drivers/gpio/gpiolib-sysfs.c
drivers/gpio/gpiolib.c
drivers/gpio/gpiolib.h

index ae1ce31..47c0e07 100644 (file)
@@ -712,9 +712,8 @@ static void of_gpiochip_remove_hog(struct gpio_chip *chip,
                                   struct device_node *hog)
 {
        struct gpio_desc *desc;
-       unsigned int i;
 
-       for_each_gpio_desc_with_flag(i, chip, desc, FLAG_IS_HOGGED)
+       for_each_gpio_desc_with_flag(chip, desc, FLAG_IS_HOGGED)
                if (desc->hog == hog)
                        gpiochip_free_own_desc(desc);
 }
index d44ffea..cd27bf1 100644 (file)
@@ -760,7 +760,6 @@ void gpiochip_sysfs_unregister(struct gpio_device *gdev)
 {
        struct gpio_desc *desc;
        struct gpio_chip *chip = gdev->chip;
-       unsigned int i;
 
        if (!gdev->mockdev)
                return;
@@ -773,7 +772,7 @@ void gpiochip_sysfs_unregister(struct gpio_device *gdev)
        mutex_unlock(&sysfs_lock);
 
        /* unregister gpiod class devices owned by sysfs */
-       for_each_gpio_desc_with_flag(i, chip, desc, FLAG_SYSFS)
+       for_each_gpio_desc_with_flag(chip, desc, FLAG_SYSFS)
                gpiod_free(desc);
 }
 
index 1e4aa35..d410419 100644 (file)
@@ -4119,9 +4119,8 @@ int gpiod_hog(struct gpio_desc *desc, const char *name,
 static void gpiochip_free_hogs(struct gpio_chip *gc)
 {
        struct gpio_desc *desc;
-       int id;
 
-       for_each_gpio_desc_with_flag(id, gc, desc, FLAG_IS_HOGGED)
+       for_each_gpio_desc_with_flag(gc, desc, FLAG_IS_HOGGED)
                gpiochip_free_own_desc(desc);
 }
 
index 06f3faa..7bac62d 100644 (file)
@@ -100,10 +100,10 @@ struct gpio_array {
 
 struct gpio_desc *gpiochip_get_desc(struct gpio_chip *gc, unsigned int hwnum);
 
-#define for_each_gpio_desc_with_flag(i, gc, desc, flag)                \
-       for (i = 0, desc = gpiochip_get_desc(gc, i);            \
-            i < gc->ngpio;                                     \
-            i++, desc = gpiochip_get_desc(gc, i))              \
+#define for_each_gpio_desc_with_flag(gc, desc, flag)                   \
+       for (unsigned int __i = 0;                                      \
+            __i < gc->ngpio && (desc = gpiochip_get_desc(gc, __i));    \
+            __i++)                                                     \
                if (!test_bit(flag, &desc->flags)) {} else
 
 int gpiod_get_array_value_complex(bool raw, bool can_sleep,