+++ /dev/null
-From 809390219fb9c2421239afe5c9eb862d73978ba0 Mon Sep 17 00:00:00 2001
-From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Date: Thu, 25 Feb 2021 18:33:19 +0200
-Subject: gpiolib: acpi: Allow to find GpioInt() resource by name and index
-
-From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-
-commit 809390219fb9c2421239afe5c9eb862d73978ba0 upstream.
-
-Currently only search by index is supported. However, in some cases
-we might need to pass the quirks to the acpi_dev_gpio_irq_get().
-
-For this, split out acpi_dev_gpio_irq_get_by() and replace
-acpi_dev_gpio_irq_get() by calling above with NULL for name parameter.
-
-Fixes: ba8c90c61847 ("gpio: pca953x: Override IRQ for one of the expanders on Galileo Gen 2")
-Depends-on: 0ea683931adb ("gpio: dwapb: Convert driver to using the GPIO-lib-based IRQ-chip")
-Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
-Acked-by: Linus Walleij <linus.walleij@linaro.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/gpio/gpiolib-acpi.c | 12 ++++++++----
- include/linux/acpi.h | 10 ++++++++--
- 2 files changed, 16 insertions(+), 6 deletions(-)
-
---- a/drivers/gpio/gpiolib-acpi.c
-+++ b/drivers/gpio/gpiolib-acpi.c
-@@ -904,8 +904,9 @@ struct gpio_desc *acpi_node_get_gpiod(st
- }
-
- /**
-- * acpi_dev_gpio_irq_get() - Find GpioInt and translate it to Linux IRQ number
-+ * acpi_dev_gpio_irq_get_by() - Find GpioInt and translate it to Linux IRQ number
- * @adev: pointer to a ACPI device to get IRQ from
-+ * @name: optional name of GpioInt resource
- * @index: index of GpioInt resource (starting from %0)
- *
- * If the device has one or more GpioInt resources, this function can be
-@@ -915,9 +916,12 @@ struct gpio_desc *acpi_node_get_gpiod(st
- * The function is idempotent, though each time it runs it will configure GPIO
- * pin direction according to the flags in GpioInt resource.
- *
-+ * The function takes optional @name parameter. If the resource has a property
-+ * name, then only those will be taken into account.
-+ *
- * Return: Linux IRQ number (> %0) on success, negative errno on failure.
- */
--int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index)
-+int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int index)
- {
- int idx, i;
- unsigned int irq_flags;
-@@ -927,7 +931,7 @@ int acpi_dev_gpio_irq_get(struct acpi_de
- struct acpi_gpio_info info;
- struct gpio_desc *desc;
-
-- desc = acpi_get_gpiod_by_index(adev, NULL, i, &info);
-+ desc = acpi_get_gpiod_by_index(adev, name, i, &info);
-
- /* Ignore -EPROBE_DEFER, it only matters if idx matches */
- if (IS_ERR(desc) && PTR_ERR(desc) != -EPROBE_DEFER)
-@@ -964,7 +968,7 @@ int acpi_dev_gpio_irq_get(struct acpi_de
- }
- return -ENOENT;
- }
--EXPORT_SYMBOL_GPL(acpi_dev_gpio_irq_get);
-+EXPORT_SYMBOL_GPL(acpi_dev_gpio_irq_get_by);
-
- static acpi_status
- acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
---- a/include/linux/acpi.h
-+++ b/include/linux/acpi.h
-@@ -1019,19 +1019,25 @@ void __acpi_handle_debug(struct _ddebug
- #if defined(CONFIG_ACPI) && defined(CONFIG_GPIOLIB)
- bool acpi_gpio_get_irq_resource(struct acpi_resource *ares,
- struct acpi_resource_gpio **agpio);
--int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index);
-+int acpi_dev_gpio_irq_get_by(struct acpi_device *adev, const char *name, int index);
- #else
- static inline bool acpi_gpio_get_irq_resource(struct acpi_resource *ares,
- struct acpi_resource_gpio **agpio)
- {
- return false;
- }
--static inline int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index)
-+static inline int acpi_dev_gpio_irq_get_by(struct acpi_device *adev,
-+ const char *name, int index)
- {
- return -ENXIO;
- }
- #endif
-
-+static inline int acpi_dev_gpio_irq_get(struct acpi_device *adev, int index)
-+{
-+ return acpi_dev_gpio_irq_get_by(adev, NULL, index);
-+}
-+
- /* Device properties */
-
- #ifdef CONFIG_ACPI