FAILED: patch "[PATCH] gpiolib: acpi: Add ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER quirk" failed to apply to 5.10-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 62d5247d239d4b48762192a251c647d7c997616a Mon Sep 17 00:00:00 2001
From: Andy Shevchenko <[email protected]>
Date: Thu, 25 Feb 2021 18:33:18 +0200
Subject: [PATCH] gpiolib: acpi: Add ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER quirk
On some systems the ACPI tables has wrong pin number and instead of having a relative one it provides an absolute one in the global GPIO number space.
Add ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER quirk to cope with such cases.
Depends-on: 0ea683931adb ("gpio: dwapb: Convert driver to using the GPIO-lib-based IRQ-chip")
drivers/gpio/gpiolib-acpi.c +6 -1
@@ -677,6 +677,7 @@ static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data)if (!lookup->desc) {const struct acpi_resource_gpio *agpio = &ares->data.gpio;bool gpioint = agpio->connection_type ==ACPI_RESOURCE_GPIO_TYPE_INT ; +struct gpio_desc *desc;u16 pin_index;if (lookup->info.quirks &ACPI_GPIO_QUIRK_ONLY_GPIOIO && gpioint)
@@ -689,8 +690,12 @@ static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data)if (pin_index >= agpio->pin_table_length)return 1 ; - lookup->desc =acpi_get_gpiod (agpio->resource_source.string_ptr, +if (lookup->info.quirks &ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER ) + desc =gpio_to_desc (agpio->pin_table[pin_index]); +else + desc =acpi_get_gpiod (agpio->resource_source.string_ptr, agpio->pin_table[pin_index]); + lookup->desc = desc; lookup->info.pin_config = agpio->pin_config; lookup->info.debounce = agpio->debounce_timeout; lookup->info.gpioint = gpioint;
include/linux/gpio/consumer.h +2 -0
@@ -674,6 +674,8 @@ struct acpi_gpio_mapping {* get GpioIo type explicitly, this quirk may be used. */ #define ACPI_GPIO_QUIRK_ONLY_GPIOIO BIT(1) +/* Use given pin as an absolute GPIO number in the system */ +#define ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER BIT(2)unsigned int quirks; };
Quoted 5 lines · On Thu, Mar 11, 2021 at 07:12:55PM +0100, [email protected] wrote:
The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
I will send an updated version.
Quoted 22 lines
From
62d5247d239d4b48762192a251c647d7c997616aMon Sep 17 00:00:00 2001
From: Andy Shevchenko <[email protected]>
Date: Thu, 25 Feb 2021 18:33:18 +0200
Subject: [PATCH] gpiolib: acpi: AddACPI_GPIO_QUIRK_ABSOLUTE_NUMBERquirkOn some systems the ACPI tables has wrong pin number and instead of having a relative one it provides an absolute one in the global GPIO number space.
Add
ACPI_GPIO_QUIRK_ABSOLUTE_NUMBERquirk to cope with such cases.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 <[email protected]>Acked-by Mika Westerberg <[email protected]>Acked-by Linus Walleij <[email protected]>drivers/gpio/gpiolib-acpi.c +0
-0
drivers/gpio/gpiolib-acpi.c static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data) · line 682
Quoted 6 lines
drivers/gpio/gpiolib-acpi.c +1
-0@@ -677,6 +677,7 @@ static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data)if (!lookup->desc) {const struct acpi_resource_gpio *agpio = &ares->data.gpio;bool gpioint = agpio->connection_type ==ACPI_RESOURCE_GPIO_TYPE_INT ; +struct gpio_desc *desc;u16 pin_index;
It's simply old type of this variable in old tree.
Quoted 30 lines
drivers/gpio/gpiolib-acpi.c +5
-1if (lookup->info.quirks &ACPI_GPIO_QUIRK_ONLY_GPIOIO && gpioint)@@ -689,8 +690,12 @@ static int acpi_populate_gpio_lookup(struct acpi_resource *ares, void *data)if (pin_index >= agpio->pin_table_length)return 1 ; - lookup->desc =acpi_get_gpiod (agpio->resource_source.string_ptr, +if (lookup->info.quirks &ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER ) + desc =gpio_to_desc (agpio->pin_table[pin_index]); +else + desc =acpi_get_gpiod (agpio->resource_source.string_ptr, agpio->pin_table[pin_index]); + lookup->desc = desc; lookup->info.pin_config = agpio->pin_config; lookup->info.debounce = agpio->debounce_timeout; lookup->info.gpioint = gpioint;include/linux/gpio/consumer.h +2
-0@@ -674,6 +674,8 @@ struct acpi_gpio_mapping {* get GpioIo type explicitly, this quirk may be used. */ #define ACPI_GPIO_QUIRK_ONLY_GPIOIO BIT(1) +/* Use given pin as an absolute GPIO number in the system */ +#define ACPI_GPIO_QUIRK_ABSOLUTE_NUMBER BIT(2)unsigned int quirks; };
Signature · 2 lines
With Best Regards, Andy Shevchenko
Quoted 8 lines · Andy Shevchenko
Quoted 5 lines · On Thu, Mar 11, 2021 at 07:12:55PM +0100, [email protected] wrote:
The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.I will send an updated version.
Here we are: https://lore.kernel.org/stable/[email protected]/T/#u
Signature · 2 lines
With Best Regards, Andy Shevchenko