aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorSander Vanheule <sander@svanheule.net>2021-10-31 14:41:54 +0100
committerChristian Lamparter <chunkeey@gmail.com>2021-11-01 00:56:51 +0100
commitc735d2e2187ff13b305fc4b73ba047cc3d43f2d5 (patch)
tree6e0660cc6459dd26a5c5bf82fe504efa36568459 /target/linux
parentb69dfb0a99cf228d99ff4bc9a0848df85969ce7d (diff)
downloadupstream-c735d2e2187ff13b305fc4b73ba047cc3d43f2d5.tar.gz
upstream-c735d2e2187ff13b305fc4b73ba047cc3d43f2d5.tar.bz2
upstream-c735d2e2187ff13b305fc4b73ba047cc3d43f2d5.zip
realtek: backport GPIO IRQ index fix
Backport the patch queued upstream for 5.16. The patch differs slightly from the upstream patch due to an upstream change that added a convenience function. Signed-off-by: Sander Vanheule <sander@svanheule.net>
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/realtek/patches-5.10/007-5.16-gpio-realtek-realtek-otto-fix-gpio-line-irq-offset.patch21
1 files changed, 21 insertions, 0 deletions
diff --git a/target/linux/realtek/patches-5.10/007-5.16-gpio-realtek-realtek-otto-fix-gpio-line-irq-offset.patch b/target/linux/realtek/patches-5.10/007-5.16-gpio-realtek-realtek-otto-fix-gpio-line-irq-offset.patch
new file mode 100644
index 0000000000..f1f739d470
--- /dev/null
+++ b/target/linux/realtek/patches-5.10/007-5.16-gpio-realtek-realtek-otto-fix-gpio-line-irq-offset.patch
@@ -0,0 +1,21 @@
+gpio: realtek-otto: fix GPIO line IRQ offset
+
+The irqchip uses one domain for all GPIO lines, so th line offset should be
+determined w.r.t. the first line of the first port, not the first line of the
+triggered port.
+
+Fixes: 0d82fb1127fb ("gpio: Add Realtek Otto GPIO support")
+Signed-off-by: Sander Vanheule <sander@svanheule.net>
+Link: https://lore.kernel.org/linux-gpio/20211028085243.34360-1-sander@svanheule.net/
+
+--- a/drivers/gpio/gpio-realtek-otto.c
++++ b/drivers/gpio/gpio-realtek-otto.c
+@@ -206,7 +206,7 @@ static void realtek_gpio_irq_handler(str
+ status = realtek_gpio_read_isr(ctrl, lines_done / 8);
+ port_pin_count = min(gc->ngpio - lines_done, 8U);
+ for_each_set_bit(offset, &status, port_pin_count) {
+- irq = irq_find_mapping(gc->irq.domain, offset);
++ irq = irq_find_mapping(gc->irq.domain, offset + lines_done);
+ generic_handle_irq(irq);
+ }
+ }