]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
gpiolib: acpi: Switch to use enum in acpi_gpio_in_ignore_list()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 31 Dec 2025 14:32:12 +0000 (09:32 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Jan 2026 09:14:59 +0000 (10:14 +0100)
[ Upstream commit b24fd5bc8e6d6b6006db65b5956c2c2cd0ee5a7b ]

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>
Stable-dep-of: 2d967310c49e ("gpiolib: acpi: Add quirk for Dell Precision 7780")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpio/gpiolib-acpi.c
drivers/gpio/gpiolib-acpi.h

index 148b4d1788a21905d488b411a0e179e8ec467e34..6b6f6a82b82d66be02c881f77bce8c878a261879 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 */