[alsa-devel] dev_* output functions and ASoC codecs
21cnbao at gmail.com
Mon Oct 12 12:34:56 CEST 2009
On Mon, Oct 12, 2009 at 5:36 PM, Mark Brown
<broonie at opensource.wolfsonmicro.com> wrote:
> On Mon, Oct 12, 2009 at 10:26:09AM +0800, Barry Song wrote:
> Please don't top post and please start new threads for new topics.
>> We use many global variables in asoc now, except defining two/multi
>> groups of global variables to fulfill two/multi codecs work at the
>> same time in one system, is there any other way?
> Could you be more specific about which variables you are talking about
> here? In general you should just use the struct device driver data or
> a private data field in one of the ASoC structures for any per-device
> data, in much the same way as you would do for any other system.
Let me take wm8903 as an example.
"static struct snd_soc_codec *wm8903_codec" is a global variable to
describe a codec. The global variable limit the codec driver can only
support one to work.
If we use num_links = 2, it seems codec_dai for wm8903 should be duplicated too.
In CPU dai:
in case there are two same I2S interfaces connecting two same wm8903,
then an array with two elements for CPU dai is needed.
For the two struct snd_soc_dai, all fields(like probe, remove) are
same except private_data.
In machin driver:
snd_soc_dai_link connect the multi same CPU dai and codec dai together.
If we don't use num_links =2, we need to call
with duplicated struct snd_soc_device.
Don't know whether I lost something.
More information about the Alsa-devel