Liam Girdwood wrote:
On Fri, 2010-07-23 at 13:56 -0500, Timur Tabi wrote:
Liam Girdwood wrote:
My mistake, I'd missed something in the forward port. I've fixed the DAI naming problem and you should see your DAI use the correct name.
Looks like you forgot something:
CC sound/soc/soc-core.o sound/soc/soc-core.c: In function 'snd_soc_register_dai': sound/soc/soc-core.c:2872: error: 'struct snd_soc_dai' has no member
named 'id'
sound/soc/soc-core.c: In function 'snd_soc_register_dais': sound/soc/soc-core.c:2949: error: 'struct snd_soc_dai' has no member
named 'id'
sound/soc/soc-core.c: In function 'snd_soc_register_platform': sound/soc/soc-core.c:3004: error: 'struct snd_soc_platform' has no member named 'id' sound/soc/soc-core.c: In function 'snd_soc_register_codec': sound/soc/soc-core.c:3102: error: 'struct snd_soc_codec' has no member
named
'id' make[2]: *** [sound/soc/soc-core.o] Error 1 make[1]: *** [sound/soc] Error 2 make: *** [sound] Error 2
Sorry, now fixed. Sound had somehow been disabled in my upstream .config and hence would build kernels.
I'm still seeing the problem:
fsl_ssi_probe:658 cpu_dai_drv.name=ssi@16000 fsl_ssi_probe:713 name=snd-soc-mpc8610hpcd mpc8610_hpcd_probe:312 cpu_dai_name=ssi@16000 soc_bind_dai_link:1136 cpu_dai->name=e0016000.ssi, dai_link->cpu_dai_name=ssi@16000 soc_bind_dai_link:1136 cpu_dai->name=cs4270-hifi, dai_link->cpu_dai_name=ssi@16000 soc_bind_dai_link:1159 codec->name=cs4270-codec.0-004f, dai_link->codec_name=cs4270-codec soc_bind_dai_link:1194 platform->name=e0021180.dma-channel, dai_link->platform_name=/soc@e0000000/dma@21300/dma-channel@0 soc_bind_dai_link:1194 platform->name=e0021100.dma-channel, dai_link->platform_name=/soc@e0000000/dma@21300/dma-channel@0 soc_bind_dai_link:1136 cpu_dai->name=e0016000.ssi, dai_link->cpu_dai_name=ssi@16000 soc_bind_dai_link:1136 cpu_dai->name=cs4270-hifi, dai_link->cpu_dai_name=ssi@16000 soc_bind_dai_link:1159 codec->name=cs4270-codec.0-004f, dai_link->codec_name=cs4270-codec soc_bind_dai_link:1194 platform->name=e0021180.dma-channel, dai_link->platform_name=/soc@e0000000/dma@21300/dma-channel@1 soc_bind_dai_link:1194 platform->name=e0021100.dma-channel, dai_link->platform_name=/soc@e0000000/dma@21300/dma-channel@1 ALSA device list: No soundcards found.
Here's the code that sets the CPU DAI name (in fsl_ssi.c):
/* The DAI name is the last part of the full name of the node. */ p = strrchr(np->full_name, '/') + 1; ssi_private = kzalloc(sizeof(struct fsl_ssi_private) + strlen(p), GFP_KERNEL); if (!ssi_private) { dev_err(&of_dev->dev, "could not allocate DAI object\n"); return -ENOMEM; }
strcpy(ssi_private->name, p);
/* Initialize this copy of the CPU DAI driver structure */ memcpy(&ssi_private->cpu_dai_drv, &fsl_ssi_dai_template, sizeof(fsl_ssi_dai_template)); ssi_private->cpu_dai_drv.name = ssi_private->name; printk(KERN_INFO "%s:%u cpu_dai_drv.name=%s\n", __func__, __LINE__, ssi_private->cpu_dai_drv.name);
...
ret = snd_soc_register_dai(&of_dev->dev, &ssi_private->cpu_dai_drv);
You can see above that cpu_dai_drv.name is set to "ssi@16000", but when soc_bind_dai_link() looks for it, cpu_dai->name is set to "e0016000.ssi". I don't know where that string comes from, but it's not coming from my code.