summaryrefslogtreecommitdiff
path: root/drivers/irqchip
diff options
context:
space:
mode:
authorMika Westerberg <mika.westerberg@linux.intel.com>2015-02-23 14:53:12 +0200
committerLinus Walleij <linus.walleij@linaro.org>2015-03-06 12:22:41 +0100
commit31e4329f99062a06dca5a493bb4495a63b2dc6ba (patch)
treea0df5223e51622480ddad730d6ed093e0fa8388d /drivers/irqchip
parent95f0972c7e4cbf3fc68160131c5ac2f033481d00 (diff)
downloadlinux-31e4329f99062a06dca5a493bb4495a63b2dc6ba.tar.gz
linux-31e4329f99062a06dca5a493bb4495a63b2dc6ba.tar.bz2
linux-31e4329f99062a06dca5a493bb4495a63b2dc6ba.zip
pinctrl: baytrail: Rework interrupt handling
Instead of handling everything in the driver's first level interrupt handler, we can take advantage of already existing flow handlers that are provided by the IRQ core. This changes the functionality a bit also. Previously the driver looped over pending interrupts in a single loop, restarting the loop if some interrupt changed state. This caused problem with Lenovo Thinkpad 10 digitizer that it was not able to deassert the interrupt before the driver disabled the interrupt for good (looplimit was exhausted). Rework the interrupt handling logic a bit so that we provide proper mask, ack and unmask operations in terms of Baytrail GPIO hardware and loop over pending interrupts only once. If the interrupt remains asserted the first level handler will be re-triggered automatically. Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/irqchip')
0 files changed, 0 insertions, 0 deletions