On 10/10/2019 15:01, Pierre-Louis Bossart wrote:
It's been a while since this thread started, and I still don't
quite get the concepts or logic.
First, I don't understand what the problem with "aux" devices is.
All the SoundWire stuff is based on the concept of DAI, so I guess
I am
That is the actual problem! Some aux devices does not have dais.
Usually aux devices are used for things like analog amplifiers that
clearly don't have a digital interface, thus it really makes no sense
to have a DAI link connecting them. So I guess my question here
would be what is the thinking on making the "smart amplifier" dailess?
It feels like having a CODEC to CODEC DAI between the CODEC and
the AMP would be a more obvious way to connect the two devices
and would presumably avoid the issues being discussed around the
patch.
Ah, now I get it, I missed the point about not having DAIs for the
amplifier.
I will second Charles' point, the code you have in the machine driver at
I agree with Charles,
WSA8810/WSA8815 is connected via SoundWire digital interface, so I can
try to model this amplifier with dais and see how it ends up.
I still need to figure out prefixing multiple instances of this
Amplifier controls with "Left" and "Right"
[1] gets a SoundWire stream context from the SLIMbus codec dai. It's a
bit odd to mix layers this way.
Yep we have a very mixed setup on this SoC.
So it looks like this.
Main WCD934X Codec which is connected via SLIMBus which has SoundWire
Controller block along with other analog + digital blocks.
Again the SoundWire Controller from that WCD934X codec is wired up to
WSA881X Smart speaker amplifiers.
And if I look at the code below, taken from [1], if you have more than
one codec, then your code looks problematic: data->sruntime would be
overriden and you'd use the info from the last codec dai on the dailink...
This code has been written very much specific to DB845c which has only
one codec. But I agree with your point.
--srini
case SLIMBUS_0_RX...SLIMBUS_6_TX:
for (i = 0 ; i < dai_link->num_codecs; i++) {
[snip]
data->sruntime[cpu_dai->id] =
snd_soc_dai_get_sdw_stream(rtd->codec_dais[i], 0); << same
destination for multiple codec_dais...
If you keep the amp dai-less, then the stream concept should be somehow
allocated on the master (or machine) side and passed to the codec dais
that are associated to the same 'stream'.
[1]
https://git.linaro.org/people/srinivas.kandagatla/linux.git/tree/sound/soc/qcom/db845c.c?h=release/db845c/qcomlt-5.2