[alsa-devel] Different codecs for playback and capture?

Lars-Peter Clausen lars at metafoo.de
Thu Jun 4 15:52:49 CEST 2015


On 06/04/2015 01:46 PM, Ricard Wanderlof wrote:
>
> On Wed, 3 Jun 2015, Lars-Peter Clausen wrote:
>
>> There has been support for multiple CODECs on the same DAI link for a while
>> now. Have a look at
>> http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=88bd870f02dff5c9445286e185f21873f25a977f.
>>
>> Instead of setting the codec_name/codec_dai_name fields in the dai_link
>> create a snd_soc_link_component array with a entry for each of the CODECs
>> and assign that to the codecs field in the DAI link.
>>
>> I'm not too sure how well it works if one CODEC is playback only and the
>> other is capture only and there might be some issues. But this is the way to
>> go and if there are problems fix them.
>
> It doesn't seem as if snd_soc_dai_link_component is used in any (in-tree)
> driver; a grep in sound/soc just returns soc-core.c . Perhaps some
> out-of-tree driver has been used to test it?

This is the only example I'm aware of:
http://wiki.analog.com/resources/tools-software/linux-drivers/sound/ssm4567#multi_ssm4567_example_configuration

>
> How are the different component codecs accessed when accessing the device?
> Or does this happen automatically? For instance, normally I would register
> one card with the single dai and coec, which would come up as #0, so I
> could access the resulting device with hw:0,0 . But when I have two codecs
> on the same dai_link, what mechanism does ALSA use to differentiate
> between the two? Or is it supposed to happen automatically depending on
> the capabilities of the respective codecs.

It will be exposed as a single card with one capture and one playback PCM. 
So it will be the same as if the CODEC side was only a single device 
supporting both.



More information about the Alsa-devel mailing list