regmap: regmap-irq: Add main status register support
authorMatti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Tue, 22 Jan 2019 09:42:24 +0000 (11:42 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 23 Jan 2019 15:52:15 +0000 (15:52 +0000)
commita2d21848d9211dad5e786aa7368709ca8938834e
tree5fdba49cc44ebfa75bea56581e8ffa56196a22b4
parentbfeffd155283772bbe78c6a05dec7c0128ee500c
regmap: regmap-irq: Add main status register support

There is bunch of devices with multiple logical blocks which
can generate interrupts. It's not a rare case that the interrupt
reason registers are arranged so that there is own status/ack/mask
register for each logical block. In some devices there is also a
'main interrupt register(s)' which can indicate what sub blocks
have interrupts pending.

When such a device is connected via slow bus like i2c the main
part of interrupt handling latency can be caused by bus accesses.
On systems where it is expected that only one (or few) sub blocks
have active interrupts we can reduce the latency by only reading
the main register and those sub registers which have active
interrupts. Support this with regmap-irq for simple cases where
main register does not require acking or masking.

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regmap-irq.c
include/linux/regmap.h