gpiolib: acpi: Add acpi_gpio_update_gpiod_lookup_flags() helper
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 10 Apr 2019 15:39:20 +0000 (18:39 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 23 Apr 2019 08:55:24 +0000 (10:55 +0200)
This helper consolidates all settings of GPIO descriptor lookup flags and
quirks in the future if any.

No functional change intended.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpiolib-acpi.c
drivers/gpio/gpiolib.c
drivers/gpio/gpiolib.h

index 878c7a7..9c6ebaa 100644 (file)
@@ -525,6 +525,15 @@ acpi_gpio_update_gpiod_flags(enum gpiod_flags *flags, struct acpi_gpio_info *inf
        return ret;
 }
 
+int acpi_gpio_update_gpiod_lookup_flags(unsigned long *lookupflags,
+                                       struct acpi_gpio_info *info)
+{
+       if (info->polarity == GPIO_ACTIVE_LOW)
+               *lookupflags |= GPIO_ACTIVE_LOW;
+
+       return 0;
+}
+
 struct acpi_gpio_lookup {
        struct acpi_gpio_info info;
        int index;
@@ -745,10 +754,8 @@ struct gpio_desc *acpi_find_gpio(struct device *dev,
                return ERR_PTR(-ENOENT);
        }
 
-       if (info.polarity == GPIO_ACTIVE_LOW)
-               *lookupflags |= GPIO_ACTIVE_LOW;
-
        acpi_gpio_update_gpiod_flags(dflags, &info);
+       acpi_gpio_update_gpiod_lookup_flags(lookupflags, &info);
        return desc;
 }
 
index b8e4c9c..bfbe5d7 100644 (file)
@@ -4350,9 +4350,7 @@ struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
                        return desc;
 
                acpi_gpio_update_gpiod_flags(&dflags, &info);
-
-               if (info.polarity == GPIO_ACTIVE_LOW)
-                       lflags |= GPIO_ACTIVE_LOW;
+               acpi_gpio_update_gpiod_lookup_flags(&lflags, &info);
        }
 
        /* Currently only ACPI takes this path */
index 5dbfce6..e1636e1 100644 (file)
@@ -125,6 +125,8 @@ void acpi_gpiochip_free_interrupts(struct gpio_chip *chip);
 
 int acpi_gpio_update_gpiod_flags(enum gpiod_flags *flags,
                                 struct acpi_gpio_info *info);
+int acpi_gpio_update_gpiod_lookup_flags(unsigned long *lookupflags,
+                                       struct acpi_gpio_info *info);
 
 struct gpio_desc *acpi_find_gpio(struct device *dev,
                                 const char *con_id,
@@ -153,6 +155,12 @@ acpi_gpio_update_gpiod_flags(enum gpiod_flags *flags, struct acpi_gpio_info *inf
 {
        return 0;
 }
+static inline int
+acpi_gpio_update_gpiod_lookup_flags(unsigned long *lookupflags,
+                                   struct acpi_gpio_info *info)
+{
+       return 0;
+}
 
 static inline struct gpio_desc *
 acpi_find_gpio(struct device *dev, const char *con_id,