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: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
This commit is contained in:
parent
57017edd46
commit
66f46e370a
@ -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;
|
||||
struct gpio_desc *desc;
|
||||
|
||||
for (i = 0; i != gdev->ngpio; ++i) {
|
||||
struct gpio_desc *desc = &gdev->descs[i];
|
||||
|
||||
if (!desc->name)
|
||||
continue;
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user