mfd: ab8500: actually handle the AB8500 GPIO IRQs correctly
authorLinus Walleij <linus.walleij@stericsson.com>
Wed, 6 Feb 2013 20:54:34 +0000 (21:54 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 8 Feb 2013 13:25:32 +0000 (14:25 +0100)
commite2ddf46ab4ab40a657a1808cf4e358c46ae1ba68
tree542563712b202faa18aefaff44c94feab5b312e4
parent9c677b9b74d4314ed7f222bf802d6d1e7585eb65
mfd: ab8500: actually handle the AB8500 GPIO IRQs correctly

The patch:
"mfd: ab8500: prepare to handle AB8500 GPIO's IRQs correctly"
altered the AB8500 IRQ mask/unmask functions such that they
would handle masking on/off the falling edge IRQ if this was
requested by the consumer. However the bit mask for hwirqs
43 and 44 was shifting the bit mask incorrectly, resulting in
the wrong IRQ being mased/unmasked.

Further while the patch would mask/unmask the correct line,
when the interrupt actually came in, it would still be treated
as a valid hwirq. The offsetting applied when masking/unmasking
was not applied when handling the IRQ, i.e. the falling edge
lines were not routed back to the rising edge lines.

This fixes both cases. The end result has been tested with
the SIM detect IRQ, GPIO12, hwirq 46 and 62.

Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
drivers/mfd/ab8500-core.c