aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/apm821xx/patches-4.19/100-powerpc-4xx-uic-clear-pending-interrupt-after-irq-ty.patch
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@gmail.com>2019-06-15 19:13:30 +0200
committerChristian Lamparter <chunkeey@gmail.com>2019-06-20 19:58:27 +0200
commit971f31bedcad0a954a4a4e79140346cc896d352e (patch)
treea797c541d44b1b6f160332694099e5829bbc5139 /target/linux/apm821xx/patches-4.19/100-powerpc-4xx-uic-clear-pending-interrupt-after-irq-ty.patch
parenta95ddaba0272f254a3aeade3aa0c086e1625d672 (diff)
downloadupstream-971f31bedcad0a954a4a4e79140346cc896d352e.tar.gz
upstream-971f31bedcad0a954a4a4e79140346cc896d352e.tar.bz2
upstream-971f31bedcad0a954a4a4e79140346cc896d352e.zip
apm821xx: fix bogus key-presses on boot
"There are often transient line events when the system is powered up and initialized and it is often necessary for the gpio_chip driver to clear any interrupt flags in hardware before setting up the gpio chip, especially the irqchip portions of it." <http://lists.infradead.org/pipermail/openwrt-devel/2019-June/017630.html> This patch adds a fix for the APM821XX's interrupt controller to clear any bogus pending toggled interrupts that happens on various APM821XX boards on boot. The patch also changes the debouce-interval from the default 5ms debounce interval to 60ms all around. The default setting caused on occasions that the button state became stuck in a pressed state, even though the button was released. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Diffstat (limited to 'target/linux/apm821xx/patches-4.19/100-powerpc-4xx-uic-clear-pending-interrupt-after-irq-ty.patch')
-rw-r--r--target/linux/apm821xx/patches-4.19/100-powerpc-4xx-uic-clear-pending-interrupt-after-irq-ty.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/target/linux/apm821xx/patches-4.19/100-powerpc-4xx-uic-clear-pending-interrupt-after-irq-ty.patch b/target/linux/apm821xx/patches-4.19/100-powerpc-4xx-uic-clear-pending-interrupt-after-irq-ty.patch
new file mode 100644
index 0000000000..ee4eeb6963
--- /dev/null
+++ b/target/linux/apm821xx/patches-4.19/100-powerpc-4xx-uic-clear-pending-interrupt-after-irq-ty.patch
@@ -0,0 +1,30 @@
+From 9b84ad676e248a3e3c81db7f5d39e1739b3780aa Mon Sep 17 00:00:00 2001
+From: Christian Lamparter <chunkeey@gmail.com>
+Date: Sat, 15 Jun 2019 16:35:26 +0200
+Subject: [PATCH] powerpc/4xx/uic: clear pending interrupt after irq type/pol
+ change
+
+When testing out gpio-keys with a button, a spurious
+interrupt (and therefore a key press or release event)
+gets triggered as soon as the driver enables the irq
+line for the first time.
+
+This patch clears any potential bogus generated interrupt
+that was caused by the switching of the associated irq's
+type and polarity.
+
+Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
+---
+ arch/powerpc/platforms/4xx/uic.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/powerpc/platforms/4xx/uic.c
++++ b/arch/powerpc/platforms/4xx/uic.c
+@@ -158,6 +158,7 @@ static int uic_set_irq_type(struct irq_d
+
+ mtdcr(uic->dcrbase + UIC_PR, pr);
+ mtdcr(uic->dcrbase + UIC_TR, tr);
++ mtdcr(uic->dcrbase + UIC_SR, ~mask);
+
+ raw_spin_unlock_irqrestore(&uic->lock, flags);
+