>>> Qualcomm Soundwire controller drivers do not support multi-link setups, >>> so DAI .set_stream() callback will not be used. What's more, if called >>> it will overwrite the sdw_stream_runtime runtime set in DAI .startup >>> (qcom_swrm_startup()) causing issues (unsupported multi-link error) when >>> two Soundwire controllers are passed as codec DAIs. >> >> This last sentence is confusing at best. >> >> A controller can have one or more managers, each of whom can have one or >> more peripherals. >> >> only peripherals should expose codec DAIs, managers should expose CPU DAIs. >> >> Put differently, the controller is the host part while the peripheral is >> the codec part. "controllers passed as codec DAIs" is not really >> possible, or this was a typo? > > No, it wasn't a typo. Take a look here: > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts#n1023 > > The <&swr0 0> is the controller, although probably I should call it > manager, but in case of Qualcomm I think they are 1-to-1. Is this a case where the SoundWire manager is part of a codec? In that case, how are the SoundWire peripheral modeled? The .set_stream callback was really meant to be used when you have a CPU DAI for the manager and a codec DAI for the peripheral(s). This seems to be a different configuration where CPU and codec DAIs are mixed.