[alsa-devel] About ALSA SoC cpu/codec asymmetry
Hi Mark, Stephen, Lars
Now, ALSA SoC is using "component" style, and its image is like this.
ALSA SoC - platform - component (as CPU) - codec - component
It is still not symmetry, and confusable. I guess this is understandable.
ALSA SoC - platform - cpu - component - codec - component
If we add "cpu", it needs "cpu name", same as current "codec name" on soc_bind_dai_link(). I guess it can keep compatible if it allows "NULL" name on "cpu name" at this point. (but print warning ?)
What do you think ?
Best regards --- Kuninori Morimoto
On 03/10/2014 03:10 AM, Kuninori Morimoto wrote:
Hi Mark, Stephen, Lars
Now, ALSA SoC is using "component" style, and its image is like this.
ALSA SoC
- platform
- component (as CPU)
- codec
- component
It is still not symmetry, and confusable. I guess this is understandable.
ALSA SoC
- platform
- cpu
- component
- codec
- component
If we add "cpu", it needs "cpu name", same as current "codec name" on soc_bind_dai_link(). I guess it can keep compatible if it allows "NULL" name on "cpu name" at this point. (but print warning ?)
There is already a cpu_name field for the DAI link struct and it is ignored when it is NULL. See http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/sound/so...
I have a patch that makes using cpu_name mandatory for new component drivers. And then we can slowly start to convert old platforms.
- Lars
Hi Lars
There is already a cpu_name field for the DAI link struct and it is ignored when it is NULL. See http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/sound/so...
indeed Thanks
I have a patch that makes using cpu_name mandatory for new component drivers. And then we can slowly start to convert old platforms.
Nice !
Basically, my worry is cpu/codec "asymmetry" data structure. (Maybe it came from "historical" reason?)
I would like to have new "struct snd_soc_cpu" and "snd_soc_register_cpu()" instead of current "component" if possible. It is understandable.
On 03/10/2014 08:03 AM, Kuninori Morimoto wrote:
Hi Lars
There is already a cpu_name field for the DAI link struct and it is ignored when it is NULL. See http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/sound/so...
indeed Thanks
I have a patch that makes using cpu_name mandatory for new component drivers. And then we can slowly start to convert old platforms.
Nice !
Basically, my worry is cpu/codec "asymmetry" data structure. (Maybe it came from "historical" reason?)
Yep.
I would like to have new "struct snd_soc_cpu" and "snd_soc_register_cpu()" instead of current "component" if possible. It is understandable.
The patchset I'm working goes the other direction. The idea is to eventually remove snd_soc_codec and only have snd_soc_component. With modern SoCs the CPU side isn't just a dumb DAI anymore, but you often have signal routing and mixing capabilities, sample rate converters, sometimes even a full DSP. And then there are also those SoCs which have a DAC and/or ADC directly built-in. This makes them complexity wise similar to the CODEC side and having things like DAPM and our set of standard predefined kcontrols makes it easier to manage them.
- Lars
Hi Lars
I would like to have new "struct snd_soc_cpu" and "snd_soc_register_cpu()" instead of current "component" if possible. It is understandable.
The patchset I'm working goes the other direction. The idea is to eventually remove snd_soc_codec and only have snd_soc_component. With modern SoCs the CPU side isn't just a dumb DAI anymore, but you often have signal routing and mixing capabilities, sample rate converters, sometimes even a full DSP. And then there are also those SoCs which have a DAC and/or ADC directly built-in. This makes them complexity wise similar to the CODEC side and having things like DAPM and our set of standard predefined kcontrols makes it easier to manage them.
Ahh, very nice ! I can 100% agree to your idea :) Sorry for my noise, I didn't know your (or ALSA SoC ?) plan
Please let me know if you need my help (maybe some test ?)
On 03/10/2014 08:20 AM, Kuninori Morimoto wrote:
Hi Lars
I would like to have new "struct snd_soc_cpu" and "snd_soc_register_cpu()" instead of current "component" if possible. It is understandable.
The patchset I'm working goes the other direction. The idea is to eventually remove snd_soc_codec and only have snd_soc_component. With modern SoCs the CPU side isn't just a dumb DAI anymore, but you often have signal routing and mixing capabilities, sample rate converters, sometimes even a full DSP. And then there are also those SoCs which have a DAC and/or ADC directly built-in. This makes them complexity wise similar to the CODEC side and having things like DAPM and our set of standard predefined kcontrols makes it easier to manage them.
Ahh, very nice ! I can 100% agree to your idea :) Sorry for my noise, I didn't know your (or ALSA SoC ?) plan
Please let me know if you need my help (maybe some test ?)
Sure, I'll keep you on Cc for the patches.
- Lars
participants (2)
-
Kuninori Morimoto
-
Lars-Peter Clausen