Commit 57017edd authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Bartosz Golaszewski
Browse files

gpiolib: Embed iterator variable into for_each_gpio_desc_with_flag()



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: default avatarBartosz Golaszewski <brgl@bgdev.pl>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarBartosz Golaszewski <brgl@bgdev.pl>
parent 24a9dbb1
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -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);
}
+1 −2
Original line number Diff line number Diff line
@@ -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);
}

+1 −2
Original line number Diff line number Diff line
@@ -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);
}

+4 −4
Original line number Diff line number Diff line
@@ -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,