[alsa-devel] simple-audio-card vs. platform question

Ricard Wanderlof ricard.wanderlof at axis.com
Tue Jan 27 13:01:58 CET 2015


I'm trying to set up a simple device tree framework so I can do some 
development on an I2S driver. I'm trying to use simple-audio-card, but I 
keep running into the problem that once soc_bind_dai_link() gets called,
dai_link->platform is set to NULL (because it is not initialized by 
simple-card.c when there is a DT node), while dai_link->platform_of_node 
has been set to dai_link->cpu_of_node in asoc_simple_card_parse_of().

This results in the following code in soc-core:soc_bind_dai_link() to set 
platform to NULL, 

        /* if there's no platform we match on the empty platform */
        platform_name = dai_link->platform_name;
        if (!platform_name && !dai_link->platform_of_node)
                platform_name = "snd-soc-dummy";

        /* find one from the set of registered platforms */
        list_for_each_entry(platform, &platform_list, list) {
                if (dai_link->platform_of_node) {
                        if (platform->dev->of_node !=
                            dai_link->platform_of_node)
                                continue;
                } else {
                        if (strcmp(platform->component.name, platform_name))
                                continue;
                }

                rtd->platform = platform;
        }
        if (!rtd->platform) {
                dev_err(card->dev, "ASoC: platform %s not registered\n",
                        dai_link->platform_name);
                return -EPROBE_DEFER;
        }

with -EPROBE_DEFER as a result.

I can't figure out either how to set up a platform (=DMA) driver in this 
environment. Perhaps the case of having a CPU DAI, DMA driver and codec 
DAI is not supported by simple-audio-card?

On other hand, the way it looks there is no way the resulting setup can 
get through soc_bind_dai_link() unless there is a platform and associated 
driver.

This indicates to me that I'm doing something seriously wrong in my setup, 
but having looked at various DT configurations in arch/arm/boot/dts in 
this case, as well as the documentation in 
Documentation/devicetree/bindings/sound/simple-card.txt I can't figure how
to set it up any other way.

/Ricard
-- 
Ricard Wolf Wanderlöf                           ricardw(at)axis.com
Axis Communications AB, Lund, Sweden            www.axis.com
Phone +46 46 272 2016                           Fax +46 46 13 61 30


More information about the Alsa-devel mailing list