]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
soundwire: Move wait for initialisation helper to header
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Tue, 23 Jun 2026 10:18:10 +0000 (11:18 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 23 Jun 2026 11:52:30 +0000 (12:52 +0100)
commit5714c8359f4fc171ab8e0bd0dfc4c61fb36e1db6
tree3f1183154fce8a20b2dec1c40e09e8a5ead3d35d
parent4346d91cfa47b0d9303533edde8acd33e4b9ca40
soundwire: Move wait for initialisation helper to header

As SoundWire devices tend to enumerate on the bus after probe, drivers
frequently need to wait for the device to initialise from common driver
code. The common system is to split drivers into a core module and then
a module for each communication bus. These two facts tend to cause
Kconfig issues, the issue tends to be when SOUNDWIRE=m and DRIVER_I2C=y,
this usually selects DRIVER=y. The driver code then wants to call
sdw_slave_wait_for_init(), but this results in calling a module function
from built in code. A depends on SOUNDWIRE | !SOUNDWIRE could be added to
the end driver but this seems slightly off as it adds a lot of counter
intuitive depends.

A simpler solution is to make sdw_slave_wait_for_init() a static inline
function. As part of doing this add a check for the slave device being
NULL acknowledging that this is likely called from code that is shared
between control buses. It does require dropping the call to
sdw_show_ping_status() but this can be added back in end drivers that
used it originally.

Currently this is causing rand config issues on RT5682 and will soon
also cause similar problems on cs42l43.

Acked-by: Vinod Koul <vkoul@kernel.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://patch.msgid.link/20260623101814.24044-2-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/soundwire/bus.c
include/linux/soundwire/sdw.h