Commit 66f46e37 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Bartosz Golaszewski
Browse files

gpiolib: Split out for_each_gpio_desc() macro



In some cases we want to traverse all GPIO descriptors for given
chip, let's split out for_each_gpio_desc() macro for such cases.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarBartosz Golaszewski <brgl@bgdev.pl>
parent 57017edd
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -308,15 +308,10 @@ static struct gpio_desc *gpio_name_to_desc(const char * const name)
	spin_lock_irqsave(&gpio_lock, flags);

	list_for_each_entry(gdev, &gpio_devices, list) {
		int i;

		for (i = 0; i != gdev->ngpio; ++i) {
			struct gpio_desc *desc = &gdev->descs[i];

			if (!desc->name)
				continue;
		struct gpio_desc *desc;

			if (!strcmp(desc->name, name)) {
		for_each_gpio_desc(gdev->chip, desc) {
			if (desc->name && !strcmp(desc->name, name)) {
				spin_unlock_irqrestore(&gpio_lock, flags);
				return desc;
			}
+4 −1
Original line number Diff line number Diff line
@@ -100,10 +100,13 @@ struct gpio_array {

struct gpio_desc *gpiochip_get_desc(struct gpio_chip *gc, unsigned int hwnum);

#define for_each_gpio_desc_with_flag(gc, desc, flag)			\
#define for_each_gpio_desc(gc, desc)					\
	for (unsigned int __i = 0;					\
	     __i < gc->ngpio && (desc = gpiochip_get_desc(gc, __i));	\
	     __i++)							\

#define for_each_gpio_desc_with_flag(gc, desc, flag)			\
	for_each_gpio_desc(gc, desc)					\
		if (!test_bit(flag, &desc->flags)) {} else

int gpiod_get_array_value_complex(bool raw, bool can_sleep,