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

Lars-Peter Clausen lars at metafoo.de
Tue Jan 27 19:11:36 CET 2015


On 01/27/2015 05:31 PM, Ricard Wanderlof wrote:
>
> On Tue, 27 Jan 2015, Lars-Peter Clausen wrote:
>
>> On 01/27/2015 01:01 PM, Ricard Wanderlof wrote:
>>>
>>> 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().
>>>
>> [...]
>>>
>>> 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?
>> [...]
>>
>> Usually in such a setup the CPU DAI driver also register the platform
>> component. Which then as the same of_node as the CPU DAI and so the matching
>> works. There are plenty of examples e.g. check the drivers using
>> devm_snd_dmaengine_pcm_register().
>
> Thanks for the hint, that helps me back on track!
>
> Curious though, wouldn't it be more natural to bind it all together in the
> simple-audio-card DT entry, having a "simple-audio-card,platform"
> specification? Or is the idea that normally the CPU DAI driver is fairly
> tightly coupled to the PCM driver so it makes more sense to make that
> connection in the code?

Usually there is no representation of the platform object in the devicetree. 
E.g. typically this is a external shared DMA controller which is referenced 
by the dmas property in the CPU DAI node.

- Lars



More information about the Alsa-devel mailing list