[alsa-devel] [Question][ASoC][Topology] Question about ASoC Topology

Mengdong Lin mengdong.lin at linux.intel.com
Wed Jul 20 05:16:57 CEST 2016


Hi Takashi,

Thanks for your explanation on how topology works! I cc the ML since 
potential users may also benefit from this info.

Hi Lee,

Now Intel SKL (Skylake) audio driver is using topology, which might be a 
reference for you.

For the text conf file in user space, please see 
alsa-lib/src/conf/topology/sklrt286/skl_i2s.conf. The topology user 
space tool alsatplg will generate the SKL topology binary file for kernel.
The doxygen doc also introduces the syntax.

Besides the text conf file, you may also define topology objects by C 
API, declared in alsa-lib/include/topology.h

For how the SKL platform driver loads the toplogy binary file, please 
see the kernel src code: sound/soc/intel/skylake/skl-topology.c, where 
snd_soc_tplg_component_load() is called to load the topology info and 
trigger ops binding in kernel.

Now the upstreamed topology code support: controls, widgets, routes and 
PCM (Front-ends DAI & DAI links).

And now we're upstreaming support for Back-end DAIs and BE links. This 
may be bring some ABI update and last for several weeks. You may try 
using topology atm, but you'll need to rebuild your topology binary info 
after the ABI update. I'll keep you updated when it's done.

If you have any further questions, please let us know.

Thanks
Mengdong

On 07/18/2016 03:19 PM, Takashi Sakamoto wrote:
> Hi,
>
> (C.C.ed to Intel developers, who committed to ALSA topology feature.)
>
> On Jul 18 2016 14:07, 이경택 wrote:
>> At first, sorry about interrupting you and thank you for giving your
>> attention to an email from stranger.
>
> No worry.
>
>> I'm a software engineer in Samsung and writing a device driver for
>> our audio.
>>
>> In recent kernel source code(version 4.4), I found out there is a new
>> feature called topology.
>>
>> I thought that it is a framework for seperating data and logic of audio
>> drivers,
>>
>> so I wanted to write my driver on that framework.
>>
>> But, it is hard to find out a starting point. (example, documentation,
>> ......)
>>
>> If you give me an starting point, it would be very helpful to me.
>
> The feature of 'topology' was originally developed by Intel developers.
> So I think it better to ask your questions to them.
>
>
> As long as I know, the original goal of this feature is to write
> parsable blobs for new HDA driver to PCH in Skylake architecture
> (Skylake, Kabylake, etc).
>
> The new HDA driver (snd-soc-skl) doesn't directly enumerate widgets in
> HDA codecs at all. Instead, the parsable blob represents the codec
> internal. As a result of parsing the blob, some control elements, some
> DAI links and so on are added. When you're interested in the functions
> to add them, please start at soc_tplg_load_header().
> http://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/soc/soc-topology.c#n1772
>
> In kernel driver side, the blobs are loaded by usual way;
> request_firmware().
> https://www.kernel.org/doc/Documentation/firmware_class/README
>
> Then, each kernel drivers parse the image by snd_soc_tplg_component_load().
> http://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/soc/soc-topology.c#n1864
>
> Of cource, you need to put the blobs to typical file path; /lib/firmware.
>
>
> When writing files to generate the blob, you need to check two items;
> one is UAPI of ASoC (include/uapi/sound/asoc.h) and another is runtime
> configuration of ALSA userspace library.
>
> What you can do via topology feature is defined in the UAPI header. The
> way to describe them to files is the same way as runtime configuration
> of ALSA userspace library.
> http://www.alsa-project.org/alsa-doc/alsa-lib/conf.html
>
> When you write the files, you can generate the blobs by 'alsatplg' utils
> in alsa-utils.git. I believe it can detect parse errors.
> http://git.alsa-project.org/?p=alsa-utils.git;a=tree;f=topology
>
> That's all of what I know. I hope this will help you or you can get
> enough support about the new feature from Intel developers.
>
> p.s. I'm committing to ALSA in my private time, so I sometimes need to
> stop discussions because of my limited time. I'm not a developer belongs
> to semi-conductors or hardware vendors and have paid work for my life.
>
>
> Regards
>
> Takashi Sakamoto
>


More information about the Alsa-devel mailing list