mfd: tps65217: Make an interrupt handler simpler
authorMilo Kim <woogyom.kim@gmail.com>
Tue, 15 Nov 2016 13:02:14 +0000 (22:02 +0900)
committerLee Jones <lee.jones@linaro.org>
Tue, 29 Nov 2016 08:21:40 +0000 (08:21 +0000)
commitfa9170522b362aefb4fef58b5cbff45dbefec258
treef36863519908576ba602394f3fe4ae22195a6ab6
parent6d2c2b9f806a4ec81833af533d57395db856d5a3
mfd: tps65217: Make an interrupt handler simpler

Rework the IRQ handler by using HW IRQ number and status bit.

Each HW IRQ number is matched with TPS65217 register layout[*].
(USB IRQ number is 0, AC is 1, Push button is 2)

When an interrupt is enabled, mask bit should be cleared (unmasked).
If an interrupt is disabled, then mask bit should be set (masked).
This mask value is updated into the TPS65217 register in irq_sync_unlock().

Mask bit and interrupt status bit can be handled with HW IRQ number.
Eventually, additional IRQ data, 'tps65217_irqs[]' and the function,
'irq_to_tps65217_irq()' are not necessary.

[*] TPS65217 interrupt register layout

 Bit7  6     5     4     3    2     1     0
----------------------------------------------
| x | PBM | ACM | USBM | x | PBI | ACI | USBI

PBM:  Push button status change interrupt mask
ACM:  AC interrupt mask
USBM: USB power status change interrupt mask
PBI:  Push button status change interrupt
ACI:  AC power status change interrupt
USBI: USB power status change interrupt
x:    Not used

Signed-off-by: Milo Kim <woogyom.kim@gmail.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/tps65217.c
include/linux/mfd/tps65217.h