Hi Pierre > > >>> codec_name > > >>> codec_of_node > > >>> codec_dai_name > > >>> platform_name > > >>> platform_of_node > (snip) > > The problem is that it's not just a renaming, there are multiple cases > > where the codec_name, codec_dai_name fields are explicitly > > handled. See my initial (compile-tested only) changes at [1] BTW, do you think having macro for it can help us ? This is just sample, it is including modern style multi-CPU so far, but, conversion will be a little bit easier. It is using samsung/bells.c driver for single CPU/Codec/Platform sample. We can adjust for multi CPU/Codec/Platform, I guess. ----------- diff --git a/include/sound/soc.h b/include/sound/soc.h index c18e076..0796b15 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -919,6 +919,8 @@ struct snd_soc_dai_link { */ const char *cpu_dai_name; + struct snd_soc_dai_link_component *cpus; + unsigned int num_cpus; /* * codec_name * codec_of_node @@ -1031,6 +1033,40 @@ struct snd_soc_dai_link { struct list_head list; /* DAI link list of the soc card */ struct snd_soc_dobj dobj; /* For topology */ }; +#define LINK_SET_LATER { } +#define LINK_CPU(_dai) { .dai_name = _dai, } +#define LINK_CODEC(_name, _dai) { .name = _name, .dai_name = _dai, } +#define LINK_PLATFORM(_name) { .name = _name } + +#define SND_SOC_DAI_LINK_COMPONENT_CPU(name) \ + struct snd_soc_dai_link_component name##_cpu[] +#define SND_SOC_DAI_LINK_COMPONENT_CODEC(name) \ + struct snd_soc_dai_link_component name##_codec[] +#define SND_SOC_DAI_LINK_COMPONENT_PLATFORM(name) \ + struct snd_soc_dai_link_component name##_platform[] + +#define SND_SOC_DAI_LINK_COMPONENT_CC(name, cpu, codec) \ + SND_SOC_DAI_LINK_COMPONENT_CPU(name) = {cpu};\ + SND_SOC_DAI_LINK_COMPONENT_CODEC(codec) = {codec} + +#define SND_SOC_DAI_LINK_COMPONENT_CCP(name, cpu, codec, platform) \ + SND_SOC_DAI_LINK_COMPONENT_CPU(name) = {cpu}; \ + SND_SOC_DAI_LINK_COMPONENT_CODEC(name) = {codec}; \ + SND_SOC_DAI_LINK_COMPONENT_PLATFORM(name) = {platform} + +#define SND_SOC_LINK_CPU(name) .cpus = name, .num_cpus = ARRAY_SIZE(name) +#define SND_SOC_LINK_CODEC(name) .codecs = name, .num_codecs = ARRAY_SIZE(name) +#define SND_SOC_LINK_PLATFORM(name) .platforms = name, .num_platforms = ARRAY_SIZE(name) + +#define SND_SOC_LINK_CC(name) \ + SND_SOC_LINK_CPU(name##_cpu), \ + SND_SOC_LINK_CODEC(name##_codec) + +#define SND_SOC_LINK_CCP(name) \ + SND_SOC_LINK_CPU(name##_cpu), \ + SND_SOC_LINK_CODEC(name##_codec), \ + SND_SOC_LINK_PLATFORM(name##_platform) + #define for_each_link_codecs(link, i, codec) \ for ((i) = 0; \ ((i) < link->num_codecs) && ((codec) = &link->codecs[i]); \ diff --git a/sound/soc/samsung/bells.c b/sound/soc/samsung/bells.c index 0e66cd8..4ec2f5b 100644 --- a/sound/soc/samsung/bells.c +++ b/sound/soc/samsung/bells.c @@ -317,14 +317,16 @@ static struct snd_soc_dai_link bells_dai_wm5102[] = { }, }; +SND_SOC_DAI_LINK_COMPONENT_CCP(cpu_dsp, + LINK_CPU("samsung-i2s.0"), + LINK_CODEC("spi0.0", "wm0010-sdi1"), + LINK_PLATFORM("samsung-i2s.0")); + static struct snd_soc_dai_link bells_dai_wm5110[] = { { .name = "CPU-DSP", .stream_name = "CPU-DSP", - .cpu_dai_name = "samsung-i2s.0", - .codec_dai_name = "wm0010-sdi1", - .platform_name = "samsung-i2s.0", - .codec_name = "spi0.0", + SND_SOC_LINK_CCP(cpu_dsp), .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM, }, -- 2.7.4 _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel