On Mon, Oct 12, 2009 at 5:36 PM, Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> 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. In codec: "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 platform_device_alloc("soc-audio",...)/platform_device_add() twice with duplicated struct snd_soc_device. Don't know whether I lost something. _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel