Hi again, I have a multi-codec board up and running, and need a little guidance. I've got 8 I2S codecs connected to a beagleboard. I have the first codec up and running, but I don't know how to add more codecs to the same alsa card.
I have it set for multiple DAI links. Is that the correct way to have multiple codecs bound to the same card, and bound to eachother? The struct is below.
When I do this, I have the problem, that the codec driver, which registers its mixer controls using macros like SOC_DOUBLE_R_TLV("PCM Playback Volume, LDAC_VOL, RDAC_VOL,...), they fail when the 2nd codec is getting probed.
Am I supposed to use multiple snd_soc_dai_link declarations? How do I end up with a single 16-channel sound card built from multiple 2 channel devices?
Do I use subdevices? Substreams? multiple dai_links? How do i instantiate them?
Any pointers would be greatly appreciated.
Thanks,
-Caleb
static struct snd_soc_dai_link puppy_dai[] = { { .name = "tlv320aic33-se-a", .stream_name = "tlv320aic33-se", .cpu_dai_name = "omap-mcbsp-dai.2", .platform_name = "omap-pcm-audio", .codec_dai_name = "tlv320aic3x-se-hifi", .codec_name = "tlv320aic3x-se-codec.2-0018", .ops = &puppy_ops, .symmetric_rates = 1, // I think this requires send and receive be the same rate. .init = puppy_dai_link_init, }, { .name = "tlv320aic33-se-b", .stream_name = "tlv320aic33-se", .cpu_dai_name = "omap-mcbsp-dai.2", .platform_name = "omap-pcm-audio", .codec_dai_name = "tlv320aic3x-se-hifi", .codec_name = "tlv320aic3x-se-codec.2-0019", .ops = &puppy_ops, .symmetric_rates = 1, // I think this requires send and receive be the same rate. .init = puppy_dai_link_init, }, };