soundwire: bus: Allow SoundWire peripherals to register IRQ handlers
authorLucas Tanure <tanureal@opensource.cirrus.com>
Fri, 4 Aug 2023 10:45:57 +0000 (11:45 +0100)
committerLee Jones <lee@kernel.org>
Thu, 17 Aug 2023 11:06:11 +0000 (12:06 +0100)
commit12a95123bfe1dd1a6020a35f5e67a560591bb02a
treef9347266d9b91e946be9ce51990aa5762e090083
parent06c2afb862f9da8dc5efa4b6076a0e48c3fbaaa5
soundwire: bus: Allow SoundWire peripherals to register IRQ handlers

Currently the in-band alerts for SoundWire peripherals can only
be communicated to the driver through the interrupt_callback
function. This however is slightly inconvenient for devices that wish
to share IRQ handling code between SoundWire and I2C/SPI, the later
would normally register an IRQ handler with the IRQ subsystem. However
there is no reason the SoundWire in-band IRQs can not also be
communicated as an actual IRQ to the driver.

Add support for SoundWire peripherals to register a normal IRQ
handler to receive SoundWire in-band alerts, allowing code to be
shared across control buses. Note that we allow users to use both the
interrupt_callback and the IRQ handler, this is useful for devices
which must clear additional chip specific SoundWire registers that are
not a part of the normal IRQ flow, or the SoundWire specification.

Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Acked-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Acked-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230804104602.395892-2-ckeepax@opensource.cirrus.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/soundwire/bus.c
drivers/soundwire/bus_type.c
include/linux/soundwire/sdw.h