summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruce Chen <bruce.chen@unisoc.com>2019-09-16 17:56:56 +0800
committerBartosz Golaszewski <bgolaszewski@baylibre.com>2019-10-01 11:50:40 +0200
commite91aafcb51f3c5001ae76c3ee027beb0b8506447 (patch)
tree45ba4868f2272cf1d7bd6f87d47230a3cb3043cd
parentbe7ae45cfea97e787234e00e1a9eb341acacd84e (diff)
downloadlinux-e91aafcb51f3c5001ae76c3ee027beb0b8506447.tar.bz2
gpio: eic: sprd: Fix the incorrect EIC offset when toggling
When toggling the level trigger to emulate the edge trigger, the EIC offset is incorrect without adding the corresponding bank index, thus fix it. Fixes: 7bf0d7f62282 ("gpio: eic: Add edge trigger emulation for EIC") Cc: stable@vger.kernel.org Signed-off-by: Bruce Chen <bruce.chen@unisoc.com> Signed-off-by: Baolin Wang <baolin.wang@linaro.org> Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
-rw-r--r--drivers/gpio/gpio-eic-sprd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpio/gpio-eic-sprd.c b/drivers/gpio/gpio-eic-sprd.c
index fe7a73f52329..bb287f35cf40 100644
--- a/drivers/gpio/gpio-eic-sprd.c
+++ b/drivers/gpio/gpio-eic-sprd.c
@@ -530,11 +530,12 @@ static void sprd_eic_handle_one_type(struct gpio_chip *chip)
}
for_each_set_bit(n, &reg, SPRD_EIC_PER_BANK_NR) {
- girq = irq_find_mapping(chip->irq.domain,
- bank * SPRD_EIC_PER_BANK_NR + n);
+ u32 offset = bank * SPRD_EIC_PER_BANK_NR + n;
+
+ girq = irq_find_mapping(chip->irq.domain, offset);
generic_handle_irq(girq);
- sprd_eic_toggle_trigger(chip, girq, n);
+ sprd_eic_toggle_trigger(chip, girq, offset);
}
}
}