regmap: irq: clear status when disable irq
authorYi Zhang <yizhang@marvell.com>
Tue, 22 Oct 2013 10:44:32 +0000 (18:44 +0800)
committerMark Brown <broonie@linaro.org>
Tue, 22 Oct 2013 12:28:08 +0000 (13:28 +0100)
commit4bd7145b194af7cd96fc56d2ebee583b3edf03d3
tree44faf0df0702c6a3f7cf86c542eadabbd7a4e5e3
parent31d141e3a666269a3b6fcccddb0351caf7454240
regmap: irq: clear status when disable irq

clear the status bit if the mask register doesn't prevent
the chip level irq from being asserted

OR in the following sequence, there will be irq storm happens:
1) interrupt is triggered;
2) another thread disables it(the mask bit is set);
3) _Then_ the interrupt thread is not ACKed(the status bit is not cleared),
   and it's ignored;
4) if the irq is still asserted because of the uncleared status bit,
   the irq storm happens;

Signed-off-by: Yi Zhang <yizhang@marvell.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/base/regmap/regmap-irq.c