gpio: pcf857x: handle only enabled irqs
authorGrygorii Strashko <grygorii.strashko@ti.com>
Wed, 10 Jun 2015 21:01:09 +0000 (00:01 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 16 Jun 2015 08:57:58 +0000 (10:57 +0200)
commit84f28998cc96546bb0733d2c238b23f38442ed89
treee1b3fe33b616ac79df4742769f157f04c9055a93
parentf35bbf61ab772cc312f64dddd1c89ab161893cee
gpio: pcf857x: handle only enabled irqs

Now pcf857x_irq() IRQ's dispatcher will try to run nested
IRQ handlers for each GPIO pin which state has changed.
Such IRQs are, actually, spurious and nested IRQ handlers
have to be called only for IRQs wich were enabled by users.
This is not critical issue - just  /proc/interrupts
will display counters for unused IRQS:
399:          4          0   pcf857x   0 Edge
428:          1          0   pcf857x  13 Edge
430:          1          0   pcf857x  15 Edge

Hence, fix it by adding irq_enabled field in struct pcf857x to track
enabled GPIO IRQs and corresponding callbacks in pcf857x_irq_chip.

Similar functionality was presented in pcf857x driver, commit
21fd3cd1874a ('gpio: pcf857x: call the gpio user handler iff...')

and then it was removed by commit
 a39294bdf4b0 ('gpio: pcf857x: Switch to use gpiolib irqchip...')

Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Fixes: a39294bdf4b0 ('gpio: pcf857x: Switch to use gpiolib irqchip helpers')
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-pcf857x.c