  <?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.alsa-project.org/main/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mengdonglin</id>
	<title>AlsaProject - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.alsa-project.org/main/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mengdonglin"/>
	<link rel="alternate" type="text/html" href="https://www.alsa-project.org/wiki/Special:Contributions/Mengdonglin"/>
	<updated>2026-04-18T07:11:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7191</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7191"/>
		<updated>2016-11-27T16:46:45Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. Users can define topology objects that describe the topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. These topology objects can be defined either in a text configuration file or added via C API. And the topology library will parse them and generate a binary file for kernel. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
==== ''How to generate the topology binary file ====&lt;br /&gt;
Users can define topology objects in a text configuration file. The syntax is based on alsaconf syntax, please see alsa-lib/include/alsa/topology.h&lt;br /&gt;
Then users can use alsatplg, the topology tool in alsa-utils, to covert the topology text configuration file to the binary, via command &amp;quot;alsatplg -c &amp;lt;path-of-input-text-configuration-file&amp;gt; -o &amp;lt;path-of-output-binary-file&amp;gt;&amp;quot;. Please see the alsatplg code in directory topology of alsa-utils, and Intel Broadwell and Skylake configurations in alsa-lib/src/conf/topology as examples of the text configuration file.&lt;br /&gt;
&lt;br /&gt;
Users can also write their own application and call topology library API to add objects and generate the binary file. Please see alsa-lib/include/alsa/topology.h for the API definition.&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
==== ''How device drivers use topology'' ====&lt;br /&gt;
Intel Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7190</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7190"/>
		<updated>2016-11-27T16:45:42Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* How to generate the topology binary file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. Users can define topology objects that describe the topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. These topology objects can be defined either in a text configuration file or added via C API. And the topology library will parse them and generate a binary file for kernel. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
==== ''How to generate the topology binary file ====&lt;br /&gt;
Users can define topology objects in a text configuration file. The syntax is based on alsaconf syntax, please see alsa-lib/include/alsa/topology.h&lt;br /&gt;
Then users can use alsatplg, the topology tool in alsa-utils, to covert the topology text configuration file to the binary, via command &amp;quot;alsatplg -c &amp;lt;path-of-input-text-configuration-file&amp;gt; -o &amp;lt;path-of-output-binary-file&amp;gt;&amp;quot;. Please see the alsatplg code in directory topology of alsa-utils, and Intel Broadwell and Skylake configurations in alsa-lib/src/conf/topology as examples of the text configuration file.&lt;br /&gt;
&lt;br /&gt;
Users can also write their own application and call topology library API to add objects and generate the binary file. Please see alsa-lib/include/alsa/topology.h for the API definition.&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7189</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7189"/>
		<updated>2016-11-27T16:41:48Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* User space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. Users can define topology objects that describe the topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. These topology objects can be defined either in a text configuration file or added via C API. And the topology library will parse them and generate a binary file for kernel. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
==== ''How to generate the topology binary file ====&lt;br /&gt;
Users can define topology objects in a text configuration file. The syntax is based on alsaconf syntax, please see alsa-lib/include/alsa/topology.h&lt;br /&gt;
Then users can use alsatplg, the topology tool in alsa-utils, to covert the topology text configuration file to the binary, via command &amp;quot;alsatplg -c &amp;lt;path-of-input-text-configuration-file&amp;gt; -o &amp;lt;path-of-output-binary-file&amp;gt;&amp;quot;. Please see the alsatplg code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7188</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7188"/>
		<updated>2016-11-27T16:12:51Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* User space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
==== ''How to generate topology info in user space'' ====&lt;br /&gt;
TBD&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7187</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7187"/>
		<updated>2016-11-27T16:11:55Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* User space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== ''User space'' ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
==== How to generate topology info in user space ====&lt;br /&gt;
TBD&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7186</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7186"/>
		<updated>2016-11-27T16:11:34Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* How device drivers use topology  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== '''User space''' ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
==== How to generate topology info in user space ====&lt;br /&gt;
TBD&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7185</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7185"/>
		<updated>2016-11-27T16:11:14Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* User space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== '''User space''' ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
==== How to generate topology info in user space ====&lt;br /&gt;
TBD&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7184</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7184"/>
		<updated>2016-11-27T16:10:54Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* 'How to generate topology info in user space' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
==== How to generate topology info in user space ====&lt;br /&gt;
TBD&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7183</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7183"/>
		<updated>2016-11-27T16:10:29Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* User space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
==== 'How to generate topology info in user space' ====&lt;br /&gt;
TBD&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7182</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7182"/>
		<updated>2016-11-27T16:10:05Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* User space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
==== '''How to generate topology info in user space''' ====&lt;br /&gt;
TBD&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7181</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7181"/>
		<updated>2016-11-27T16:09:19Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Topology Objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== Topology Objects ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7180</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7180"/>
		<updated>2016-11-27T16:08:54Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Topology Objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
=== '''Topology Objects''' ===&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7179</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7179"/>
		<updated>2016-11-27T16:08:11Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Topology Objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7178</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7178"/>
		<updated>2016-11-27T16:07:52Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* How to generate topology info in user space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
Topology objects can be loaded from the user space include controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
Please check alsa-lib include/topology.h, which include the syntax for all supported objects.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7177</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7177"/>
		<updated>2016-11-27T16:07:02Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Topology Architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
The topology objects that can be configured by user space include:  controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
Topology objects can be loaded from the user space include controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
Please check alsa-lib include/topology.h, which include the syntax for all supported objects.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''How to generate topology info in user space''' ==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7176</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7176"/>
		<updated>2016-11-27T16:00:28Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Kernel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
The topology kernel driver provides API for device drivers to load the topology binary file from the user space, then it will parse the ABI objects in the file, create controls, widgets, routes, front end DAI and DAI links (PCMs) and configure existing physical DAI and DAI links. It will also let the device driver do platform specific initialization on these objects via topology ops registered by the device driver. Please see code of sound/soc/soc-topology.c in kernel.&lt;br /&gt;
And Skylake platform driver is an example how device drivers use topology, please see code of sound/soc/intel/skylake/skl-topology.c in kernel.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
Topology objects can be loaded from the user space include controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
Please check alsa-lib include/topology.h, which include the syntax for all supported objects.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''How to generate topology info in user space''' ==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7175</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7175"/>
		<updated>2016-11-27T15:26:53Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* User space */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
The topology library is part of alsa-lib. It can generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP embedded in SOC or an off-SOC codec. Please see the source code in directory src/topology of alsa-lib.&lt;br /&gt;
&lt;br /&gt;
The topology tool in alsa-utils, alsatplg, can covert a topology text configuration file to the binary. Please see the source code in directory topology of alsa-utils.&lt;br /&gt;
&lt;br /&gt;
The generated topology binary file consists of a manifest and a list of blocks. The manifest data provides overall info of the topology object types in the file, i.e. number of controls, widgets, routes, PCMs, physical DAI and physical DAI links. Each block consists of a blocker header and a specific type of topology objects. For the layout of file and topology object, please see the ABI file in alsa-lib include/sound/asoc.h and tlv.h&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
Provide generic support to import the topology info from user space to ASoC framework and generate  different audio components for the sound card.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
Topology objects can be loaded from the user space include controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
Please check alsa-lib include/topology.h, which include the syntax for all supported objects.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''How to generate topology info in user space''' ==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7174</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7174"/>
		<updated>2016-11-10T01:24:53Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
Provide a tool &amp;amp; library to generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP in SOC or 3rd party codec.  Please check source files of alsa-lib in directory src/topology.&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
Provide generic support to import the topology info from user space to ASoC framework and generate  different audio components for the sound card.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
Topology objects can be loaded from the user space include controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
Please check alsa-lib include/topology.h, which include the syntax for all supported objects.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;br /&gt;
&lt;br /&gt;
== '''How to generate topology info in user space''' ==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== '''How device drivers use topology ''' ==&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7173</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7173"/>
		<updated>2016-11-10T01:08:31Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Topology Objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
Provide a tool &amp;amp; library to generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP in SOC or 3rd party codec.  Please check source files of alsa-lib in directory src/topology.&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
Provide generic support to import the topology info from user space to ASoC framework and generate  different audio components for the sound card.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
Topology objects can be loaded from the user space include controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links.&lt;br /&gt;
Please check alsa-lib include/topology.h, which include the syntax for all supported objects.&lt;br /&gt;
&lt;br /&gt;
Here is an example.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7172</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7172"/>
		<updated>2016-11-10T01:04:14Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
Provide a tool &amp;amp; library to generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP in SOC or 3rd party codec.  Please check source files of alsa-lib in directory src/topology.&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
Provide generic support to import the topology info from user space to ASoC framework and generate  different audio components for the sound card.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Objects''' ==&lt;br /&gt;
&lt;br /&gt;
Topology objects can be loaded from the user space include controls, widgets, routes, PCMs and configurations for physical DAI &amp;amp; DAI links,&lt;br /&gt;
&lt;br /&gt;
[[File:Topology-objects.png]]&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=File:Topology-objects.png&amp;diff=7171</id>
		<title>File:Topology-objects.png</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=File:Topology-objects.png&amp;diff=7171"/>
		<updated>2016-11-10T00:58:38Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7170</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7170"/>
		<updated>2016-11-07T16:28:45Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Topology Architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;br /&gt;
&lt;br /&gt;
=== User space ===&lt;br /&gt;
Provide a tool &amp;amp; library to generate a binary file that describes the internal topology of a customer firmware, e.g. for an ADSP in SOC or 3rd party codec.  Please check source files of alsa-lib in directory src/topology.&lt;br /&gt;
&lt;br /&gt;
=== Kernel ===   &lt;br /&gt;
Provide generic support to import the topology info from user space to ASoC framework and generate  different audio components for the sound card.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7169</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7169"/>
		<updated>2016-11-05T17:44:31Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ALSA Topology provides a method for audio drivers to load their mixers, routing, PCMs and capabilities from user space at runtime without changing any driver source code. The intention is to write the driver once and do the differentiation in topology.&lt;br /&gt;
 &lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7168</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7168"/>
		<updated>2016-11-05T17:41:06Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Why we need topology? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topology can help users to configure Audio DSP firmware topology at runtime. The audio DSP can be either embedded in SoC or codec chips. Now it's only for ASoC, and may be extended for ALSA.&lt;br /&gt;
&lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different devices. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ALSA topology project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7167</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7167"/>
		<updated>2016-11-05T17:38:49Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Topology Architecture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topology can help users to configure Audio DSP firmware topology at runtime. The audio DSP can be either embedded in SoC or codec chips. Now it's only for ASoC, and may be extended for ALSA.&lt;br /&gt;
&lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different device. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ASoC topology (DFW) project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.png]]&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=File:Topology.png&amp;diff=7166</id>
		<title>File:Topology.png</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=File:Topology.png&amp;diff=7166"/>
		<updated>2016-11-05T17:37:11Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7165</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7165"/>
		<updated>2016-11-05T17:35:15Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Why we need topology? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topology can help users to configure Audio DSP firmware topology at runtime. The audio DSP can be either embedded in SoC or codec chips. Now it's only for ASoC, and may be extended for ALSA.&lt;br /&gt;
&lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different device. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ASoC topology (DFW) project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;br /&gt;
&lt;br /&gt;
== '''Topology Architecture''' ==&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7164</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7164"/>
		<updated>2016-11-05T17:34:44Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topology can help users to configure Audio DSP firmware topology at runtime. The audio DSP can be either embedded in SoC or codec chips. Now it's only for ASoC, and may be extended for ALSA.&lt;br /&gt;
&lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different device. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ASoC topology (DFW) project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7163</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7163"/>
		<updated>2016-11-05T17:33:12Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* ALSA Topology */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topology allows users to configure Audio DSP firmware topology at runtime. The audio DSP can be either embedded in SoC or codec chips. Now it's major for ASoC, and maybe extended for ALSA.&lt;br /&gt;
&lt;br /&gt;
== '''Why we need topology?''' ==&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different device. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ASoC topology (DFW) project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7162</id>
		<title>ALSA topology</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=ALSA_topology&amp;diff=7162"/>
		<updated>2016-11-05T17:32:37Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: Created page with &amp;quot;== '''ALSA Topology''' ==  Topology allows users to configure Audio DSP firmware topology at runtime. The audio DSP can be either embedded in SoC or codec chips. Now it's majo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''ALSA Topology''' ==&lt;br /&gt;
&lt;br /&gt;
Topology allows users to configure Audio DSP firmware topology at runtime. The audio DSP can be either embedded in SoC or codec chips. Now it's major for ASoC, and maybe extended for ALSA.&lt;br /&gt;
&lt;br /&gt;
Why we need topology?&lt;br /&gt;
&lt;br /&gt;
Current audio drivers typically hard code topology information in the driver sources:&lt;br /&gt;
This tightly couples the audio driver to the development board making it time consuming to modify a driver to work on a different device. &lt;br /&gt;
The driver is also tightly coupled to the DSP firmware version meaning extra care is needed to keep the driver and firmware version in sync. New firmware features also mean driver updates.&lt;br /&gt;
&lt;br /&gt;
The ASoC topology (DFW) project removes the need for re-writing or porting audio drivers to different devices or different firmwares:&lt;br /&gt;
Drivers have no hard coded topology data meaning a single driver can be used on different devices by updating the topology data from the file system.  &lt;br /&gt;
Firmware updates can be pushed without having to update the drivers. The new firmware just needs to include an updated topology file describing the update.&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=Developer_Zone&amp;diff=7161</id>
		<title>Developer Zone</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Developer_Zone&amp;diff=7161"/>
		<updated>2016-11-05T17:23:05Z</updated>

		<summary type="html">&lt;p&gt;Mengdonglin: /* Zone for ALSA developers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Zone for ALSA developers==&lt;br /&gt;
&lt;br /&gt;
* [[ApplicationDevelopment]] - Technical Info to aid application developers.&lt;br /&gt;
* [[ALSA_Driver_Documentation]] - Info to aid driver developers.&lt;br /&gt;
* [[DriversInDevelopment]] - Technical Info on various drivers in development&lt;br /&gt;
* [[DevelAPI]] - discussions/proposals/prototypes about API changes, extensions, new API design etc.&lt;br /&gt;
* [[GIT_Server]] - How to use the new git repository.&lt;br /&gt;
* [http://git.alsa-project.org/ Online GIT Repository]&lt;br /&gt;
* [[:Category:DevToDoLists]] - Developers with TODO lists.&lt;br /&gt;
* [[DevEmbedded]] - How to build ALSA for embedded applications.&lt;br /&gt;
* [[ASoC]] - ALSA for System on Chip processors.&lt;br /&gt;
* [[DAPM]] - Dynamic Audio Power Management.&lt;br /&gt;
* [[http://alsa-project.org/~james/ James's development area]]&lt;br /&gt;
* [[Scenario]] - ALSA scenario / use case API (in progress).&lt;br /&gt;
* [[Conferences]] - ALSA conferences.&lt;br /&gt;
* [[BAT]] - Basic Audio Tester util.&lt;br /&gt;
* [[Firmware]] - Sound Open Firmware.&lt;br /&gt;
* [[ALSA topology]] - Technical information for generating runtime topologies.&lt;br /&gt;
&lt;br /&gt;
[[PCM Ring Buffer|Some Details about PCM Ring Buffer]].&lt;br /&gt;
&lt;br /&gt;
==Migration from dev wiki==&lt;br /&gt;
===TODO===&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=JamesCourtierDutton only some questions?&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=jcdutton JCD todo list&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=LiamGirdwood todo list&lt;br /&gt;
* Pages linked from [[DriversInDevelopment]]&lt;br /&gt;
&lt;br /&gt;
===Won't do?===&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=Audigy empty&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=Audigy4 empty except link to capture info&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=KelNat empty&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=MidiQuest historical, inconclusive&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=MultipleCards Q&amp;amp;A on card indexing belongs elsewhere?&lt;br /&gt;
* https://bugtrack.alsa-project.org/wiki/wikka.php?wakka=NormanSchleicher Empty, will be [[User:NormanSchleicher]] on this wiki&lt;br /&gt;
* TroubleShooting - No sound? System panics? Look here for help! ''?Doesn't belong in developer category?'' seems to be very similar to [[alsawiki:TroubleShooting|unofficial wiki TroubleShooting guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]] [[Category:MigratedFromDev]]&lt;/div&gt;</summary>
		<author><name>Mengdonglin</name></author>
	</entry>
</feed>