[alsa-devel] ASoC and a codec that can't be controlled

Liam Girdwood lg at opensource.wolfsonmicro.com
Wed May 30 14:20:51 CEST 2007


On Tue, 2007-05-29 at 13:47 -0500, Timur Tabi wrote:
> Liam Girdwood wrote:
> > On Fri, 2007-05-25 at 15:17 -0500, Timur Tabi wrote:
> >> Liam Girdwood wrote:
> >>
> >>> These are used for setting up the dynamic audio power management and
> >>> won't be needed in stand alone mode.
> >> So if I don't care about power management, can I completely ignore anything with "dapm" in it?
> > 
> > Yes.
> > 
> >> Also, do I need a codec driver at all, even if I can't control the codec?  That is, can I 
> >> do stuff like this:
> >>
> >> static struct snd_soc_device mysoc_snd_devdata = {
> >> 	.machine = &snd_soc_machine_mysoc,
> >> 	.platform = &mysoc_soc_platform,
> >> };
> >>
> >> static struct snd_soc_dai_link mpc8610hpcd_dai = {
> >> 	.name = "CS4270",
> >> 	.stream_name = "CS4270",
> >> 	.cpu_dai = &mysoc_i2s_dai,
> >> 	.init = mpc8610hpcd_machine_init,
> >> 	.ops = &mpc8610hpcd_ops,
> >> };
> > 
> > Yes, although my feeling is that a codec "driver" would still be needed
> > to define the capabilities of your codec within the audio subsystem.
> 
> Another question:
> 
> Why do I need to specify the codec DAI in two different structures?
> 
> eti_b1_wm8731.c:
> 
> static struct snd_soc_dai_link eti_b1_dai = {
> 	.name = "WM8731",
> 	.stream_name = "WM8731",
> 	.cpu_dai = &at91_i2s_dai[1],
> 	.codec_dai = &wm8731_dai,	<----
> 	.init = eti_b1_wm8731_init,
> 	.ops = &eti_b1_ops,
> };
> 
> wm8731.c:
> 
> static int wm8731_init(struct snd_soc_device *socdev)
> {
> 	struct snd_soc_codec *codec = socdev->codec;
> ...
> 	int reg, ret = 0;
> 
> 	codec->dai = &wm8731_dai;	<-----
> 

Looks like some naming confusion on my part here, so his probably needs
a little refactoring in the codec struct.  

The codec struct contains a pointer to _all_ the digital audio
interfaces it supports (e.g. some codecs support more than 1 DAI),
whilst the link struct contains a mapping between codec interface n and
SoC interface n. In this example the WM8731 only has 1 DAI, so it does
look like duplication.

I'll refactor this in a future patch.

Liam



More information about the Alsa-devel mailing list