diff options
| author | Mark Brown <broonie@kernel.org> | 2026-08-14 13:53:28 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-08-14 13:53:28 +0100 |
| commit | ac47e22fcfcb62ff6b373cbca5139e7141ed33f2 (patch) | |
| tree | d32a94e085b3c8105016c3d8a3459225640fd829 /drivers | |
| parent | ba5401135aa508f0cb5414f269edba1fe90460da (diff) | |
| parent | 243ca1fb53834dfa445ccb5d4dd8c7411e89b878 (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.c | 6 |
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) |
