summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-08-14 13:53:28 +0100
committerMark Brown <broonie@kernel.org>2026-08-14 13:53:28 +0100
commitac47e22fcfcb62ff6b373cbca5139e7141ed33f2 (patch)
treed32a94e085b3c8105016c3d8a3459225640fd829 /drivers
parentba5401135aa508f0cb5414f269edba1fe90460da (diff)
parent243ca1fb53834dfa445ccb5d4dd8c7411e89b878 (diff)
ASoC: cs35l56: Switch to using the IRQ from the SoundWire core
Richard Fitzgerald <rf@opensource.cirrus.com> says: At the time the cs35l56 driver was written the only way to get interrupts from the SoundWire core was to implement a custom handler inside the interrupt_callback() function. The SoundWire core now provides a virtual IRQ for notifying ImpDef interrupts, and switching to this simplifies the code and also makes it more similar to the normal interrupt handling of I2C/SPI (though some SoundWire specials are still needed). Patches #1 and #2 do some preparatory code shuffling so that there is less clutter in patch #4. Patch #3 changes the SoundWire core code to create the virtual ImpDef IRQ before calling the codec drive probe() so that the IRQ can be requested in probe(). Link: https://patch.msgid.link/20260810104045.60701-1-rf@opensource.cirrus.com
Diffstat (limited to 'drivers')
-rw-r--r--drivers/soundwire/bus_type.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/soundwire/bus_type.c b/drivers/soundwire/bus_type.c
index e73c1bea9059..d61a97c5b41e 100644
--- a/drivers/soundwire/bus_type.c
+++ b/drivers/soundwire/bus_type.c
@@ -105,6 +105,9 @@ static int sdw_bus_probe(struct device *dev)
}
slave->index = ret;
+ /* Create IRQ mapping now so the driver can get it in probe() */
+ sdw_irq_create_mapping(slave);
+
ret = drv->probe(slave, id);
if (ret) {
ida_free(&slave->bus->slave_ida, slave->index);
@@ -117,9 +120,6 @@ static int sdw_bus_probe(struct device *dev)
if (drv->ops && drv->ops->read_prop)
drv->ops->read_prop(slave);
- if (slave->prop.use_domain_irq)
- sdw_irq_create_mapping(slave);
-
/* init the dynamic sysfs attributes we need */
ret = sdw_slave_sysfs_dpn_init(slave);
if (ret < 0)