[alsa-devel] ASoC - Support for multiple components

Timur Tabi timur at freescale.com
Wed Apr 21 23:07:00 CEST 2010

On Mon, Apr 19, 2010 at 9:09 AM, Liam Girdwood <lrg at slimlogic.co.uk> wrote:

> I've CC'ed folks on this mail who have either contributed or maintain
> ASoC architecture code. Please have a look at your architecture and test
> if you can. I only have access to OMAP and pxa3xx hardware and as such
> have only tested the changes on these two architectures only. I'd
> appreciated anyone else testing on the other architectures too.

A few things:

First, you probably need to add this:

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 38d94d7..c2df201 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1364,8 +1364,10 @@ static void snd_soc_instantiate_card(struct
snd_soc_card *card)
                soc_bind_dai_link(card, i);

        /* bind completed ? */
-       if (card->num_rtd != card->num_links)
+       if (card->num_rtd != card->num_links) {
+               mutex_unlock(&card->mutex);
+       }

        /* card bind complete so register a sound card */
        ret = snd_card_create(SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
@@ -1373,6 +1375,7 @@ static void snd_soc_instantiate_card(struct
snd_soc_card *card)
        if (ret < 0) {
                printk(KERN_ERR "asoc: can't create sound card for card %s\n",
+               mutex_unlock(&card->mutex);
        card->snd_card->dev = card->dev;

Secondly, I'm seeing this when I turn on debugging:

Cirrus Logic CS4270 ALSA SoC Codec Driver
cs4270 0-004f: found device at i2c address 4F
cs4270 0-004f: hardware revision 3
cs4270 0-004f: codec register CS4270 79
cs4270 0-004f: dai register cs4270 0
Registered DAI 'cs4270.0'
Registered codec 'CS4270.79'

soc-audio soc-audio: CODEC CS4270 not registered

Does this mean that my fabric driver should be looking for "CS4270.79"
instead of just "CS4270"?

Timur Tabi
Linux kernel developer at Freescale

More information about the Alsa-devel mailing list