]> git.baikalelectronics.ru Git - kernel.git/commit
pinctrl: baytrail: Rework interrupt handling
authorMika Westerberg <mika.westerberg@linux.intel.com>
Mon, 23 Feb 2015 12:53:12 +0000 (14:53 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 6 Mar 2015 11:22:41 +0000 (12:22 +0100)
commit1a1f96b58d6f1f810e075ca79354543965c66a93
treea0df5223e51622480ddad730d6ed093e0fa8388d
parent1e9cf439ce7b11b3d1800be0354d689a85aa3a11
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>
drivers/pinctrl/intel/pinctrl-baytrail.c