[alsa-devel] Need general idea how to architect driver for multi-codec board

Caleb Crome caleb at crome.org
Thu May 26 23:23:03 CEST 2011

Hi Mark,
   You previously indicated that I can instantiate multiple tlv320aic33
drivers.  Can you please give me a clue how to do that?  I've been staring
at this for days, and I still don't really get how it's supposed to be done.

I tried adding the I2C devices, and it does get to the probe functions.
 However, when it comes to adding the mixer controls (SND_SOC_XXXX), it
fails because there are already controls with those names, like "Right PGA
Mixer" etc.  The alsa layer doesn't seem to allow multiple registrations of
the same control.  How do I give each instantiation a unique identifier?
 Since the tlv320aic33 has about 80 controls, I'm going to end up with over
600 controls in alsamixer.

Are there any examples in the world that show multiple codecs in the same
sound card that I can get a clue from?

Again, any help would be most welcome.


On Wed, May 11, 2011 at 10:50 AM, Mark Brown <
broonie at opensource.wolfsonmicro.com> wrote:

> On Wed, May 11, 2011 at 10:31:15AM -0700, Caleb Crome wrote:
> > 1)  Simply instantiate multiple TLV320IAC33 codec drivers, as the AIC33
> > driver is already written.
> Yes.
> >     This seems like it won't work because I'd end up with multiple
> > user-space 'cards', yet I want the card to appear as a single 16-channel
> > sound card.  Also, when you start one PCM interface for one codec, they
> No, you shouldn't.  You'll end up with a single card.
> > would all start automatically, which I imagine the linux system wouldn't
> > get.  Also, the PCM interface needs to be configured differently for each
> > codec (the TDM offset must be 0, 16, 32, 48, etc. bits).
> The TDM stuff should be configured with the existing TDM API (you may
> need to implement this in the CODEC driver).

More information about the Alsa-devel mailing list