]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gpiolib: acpi: Switch to use enum in acpi_gpio_in_ignore_list()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 13 May 2025 10:00:31 +0000 (13:00 +0300)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 21 May 2025 09:25:23 +0000 (12:25 +0300)
Switch to use enum instead of pointers in acpi_gpio_in_ignore_list()
which moves towards isolating the GPIO ACPI and quirk APIs. It will
helps splitting them completely in the next changes.

No functional changes.

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

index 3c9535d767e7adfb6e10976d8d776b3f5c93ea45..fb573b5f0ba1d8b8622c8c66ac7b99a4ac41c017 100644 (file)
@@ -350,14 +350,25 @@ static struct gpio_desc *acpi_request_own_gpiod(struct gpio_chip *chip,
        return desc;
 }
 
-static bool acpi_gpio_in_ignore_list(const char *ignore_list, const char *controller_in,
-                                    unsigned int pin_in)
+bool acpi_gpio_in_ignore_list(enum acpi_gpio_ignore_list list, const char *controller_in,
+                             unsigned int pin_in)
 {
-       const char *controller, *pin_str;
+       const char *ignore_list, *controller, *pin_str;
        unsigned int pin;
        char *endp;
        int len;
 
+       switch (list) {
+       case ACPI_GPIO_IGNORE_WAKE:
+               ignore_list = ignore_wake;
+               break;
+       case ACPI_GPIO_IGNORE_INTERRUPT:
+               ignore_list = ignore_interrupt;
+               break;
+       default:
+               return false;
+       }
+
        controller = ignore_list;
        while (controller) {
                pin_str = strchr(controller, '@');
@@ -394,7 +405,7 @@ static bool acpi_gpio_irq_is_wake(struct device *parent,
        if (agpio->wake_capable != ACPI_WAKE_CAPABLE)
                return false;
 
-       if (acpi_gpio_in_ignore_list(ignore_wake, dev_name(parent), pin)) {
+       if (acpi_gpio_in_ignore_list(ACPI_GPIO_IGNORE_WAKE, dev_name(parent), pin)) {
                dev_info(parent, "Ignoring wakeup on pin %u\n", pin);
                return false;
        }
@@ -437,7 +448,7 @@ static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares,
        if (!handler)
                return AE_OK;
 
-       if (acpi_gpio_in_ignore_list(ignore_interrupt, dev_name(chip->parent), pin)) {
+       if (acpi_gpio_in_ignore_list(ACPI_GPIO_IGNORE_INTERRUPT, dev_name(chip->parent), pin)) {
                dev_info(chip->parent, "Ignoring interrupt on pin %u\n", pin);
                return AE_OK;
        }
index 7e1c51d04040be0ac42c37c840ffbec6f2293a78..ef0b1a3c85d7cd219a04f0cdafd6c66049f01545 100644 (file)
@@ -58,4 +58,12 @@ static inline int acpi_gpio_count(const struct fwnode_handle *fwnode,
 }
 #endif
 
+enum acpi_gpio_ignore_list {
+       ACPI_GPIO_IGNORE_WAKE,
+       ACPI_GPIO_IGNORE_INTERRUPT,
+};
+
+bool acpi_gpio_in_ignore_list(enum acpi_gpio_ignore_list list,
+                             const char *controller_in, unsigned int pin_in);
+
 #endif /* GPIOLIB_ACPI_H */