• Mika Westerberg's avatar
    pinctrl: baytrail: Rework interrupt handling · 31e4329f
    Mika Westerberg authored
    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: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    31e4329f
pinctrl-baytrail.c 16.9 KB