When a Slave device is resumed, it may resume the bus and restart the enumeration. And Slave drivers will wait for initialization_complete complete in their resume function, however initialization_complete will complete after sdw_update_slave_status function is finished and codec driver usually call some IO functions in the update_status callback function. It will become a deadlock if we use regular read/write routines during the resuming process.
This series touches both soundwire and regmap trees. commit fb5103f9d6ce ("regmap/SoundWire: sdw: add support for SoundWire 1.2 MBQ") is needed for soundwire tree to complie. On the other hands, commit 6e06a85556f9 ("soundwire: bus: add comments to explain interrupt loop filter") to commit 47b8520997a8 ("soundwire: bus: only clear valid DPN interrupts") are needed for regmap tree.
v2: - Separate commits according to maintainer's comments.
Bard Liao (4): soundwire: export sdw_write/read_no_pm functions regmap: sdw: use _no_pm functions in regmap_read/write regmap: sdw: use no_pm routines for SoundWire 1.2 MBQ regmap: sdw-mbq: use MODULE_LICENSE("GPL")
Pierre-Louis Bossart (5): soundwire: bus: use sdw_update_no_pm when initializing a device soundwire: bus: use sdw_write_no_pm when setting the bus scale registers soundwire: bus: use no_pm IO routines for all interrupt handling soundwire: bus: fix confusion on device used by pm_runtime soundwire: bus: clarify dev_err/dbg device references
drivers/base/regmap/regmap-sdw-mbq.c | 10 +- drivers/base/regmap/regmap-sdw.c | 4 +- drivers/soundwire/bus.c | 136 +++++++++++++++------------ include/linux/soundwire/sdw.h | 2 + 4 files changed, 85 insertions(+), 67 deletions(-)