On 03/25/2014 02:10 PM, Benoit Cousson wrote: [...]
+struct snd_soc_dai_link_codec {
For the sake of symmetry maybe name this snd_soc_dai_link_component and drop the 'codec_' prefix in front of the struct fields. There is no reason why this couldn't be used for CPU dais as well at some point.
OK, good point.
+ const char *codec_name; + const struct device_node *codec_of_node; + const char *codec_dai_name;
I'd like to see this split up into the descriptive part that holds the name, of_node etc, and the runtime data that holds the pointer to the DAIs. The descriptive part goes in the dai_link struct the. The pointers to the DAIs go into the snd_soc_pcm_runtime struct. This is how it is used the only place where you need both is in soc_bind_dai_link.
OK, let me try to clarify that. You suggest to create that struct:
+struct snd_soc_dai_link_component { + const char *name; + const struct device_node *of_node; + const char *dai_name; +}
to be inside the snd_soc_dai_link.
And inside the snd_soc_pcm_runtime, to replace these ones + struct snd_soc_dai_link_codec *codecs; + int num_codecs;
with a direct pointers to codecs dais?
+ struct snd_soc_dai **codecs_dai; + int num_codecs;
Is that correct ?
Yes. Should be unsigned int though ;) - Lars