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

Timur Tabi timur at freescale.com
Tue May 29 20:47:45 CEST 2007


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;	<-----

-- 
Timur Tabi
Linux Kernel Developer @ Freescale


More information about the Alsa-devel mailing list