[alsa-devel] [PATCH v2 3/5] ASoC: core: add support to snd_soc_dai_get_sdw_stream()

Srinivas Kandagatla srinivas.kandagatla at linaro.org
Thu Oct 10 16:52:56 CEST 2019



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 
> 
> 


More information about the Alsa-devel mailing list