[PATCH v6 00/22] ASoC: qcom: Add AudioReach support

Pierre-Louis Bossart pierre-louis.bossart at linux.intel.com
Wed Sep 15 18:32:29 CEST 2021



On 9/15/21 8:13 AM, Srinivas Kandagatla wrote:
> Many thanks for reviewing v5. This version addresses all the comments
> raised as part of v5 review.

Much improved indeed, but still a couple of issues and nit-picks.

The one thing I didn't see before is the use of an 'audioreach.bin'
topology file, retrieved with request_firmware(). That hard-coded name
seems problematic for a signal processing framework precisely geared to
topology changes (I kept the description below for context), and will
prevent the use of a common setup on different platforms, even when they
only differ by the form-factor and processing graph. That doesn't seem
to scale, does it? Or did I miss something?

In the SOF example, we have an initial set of tables based on which
codec/amps are used and DMI identifiers; the topology name is overridden
at boot time to account for hardware variability and changes in processing.

> This patchset adds ASoC driver support to configure signal processing
> framework ("AudioReach") which is integral part of Qualcomm next
> generation audio SDK and will be deployed on upcoming Qualcomm chipsets.
> It makes use of ASoC Topology to load graphs on to the DSP which is then
> managed by APM (Audio Processing Manager) service to prepare/start/stop.
> 
> Here is simplified high-level block diagram of AudioReach:
> 
>  ___________________________________________________________
> |                 CPU (Application Processor)               |
> |  +---------+          +---------+         +----------+    |
> |  |  q6apm  |          |  q6apm  |         |  q6apm   |    |
> |  |   dais  | <------> |         | <-----> |lpass-dais|    |
> |  +---------+          +---------+         +----------+    |
> |                            ^  ^                           |
> |                            |  |           +---------+     |
> |  +---------+               v  +---------->|topology |     |
> |  | q6prm   |          +---------+         |         |     |
> |  |         |<-------->|   GPR   |         +---------+     |
> |  +---------+          +---------+                         |
> |       ^                    ^                              |
> |       |                    |                              |
> |  +----------+              |                              |
> |  |   q6prm  |              |                              |
> |  |lpass-clks|              |                              |
> |  +----------+              |                              |
> |____________________________|______________________________|
>                              |  
>                              | RPMSG (IPC over GLINK)              
>  ____________________________|______________________________
> |                            |                              |
> |    +-----------------------+                              |
> |    |                       |                              |
> |    v                       v              q6 (Audio DSP)  |
> |+-----+    +----------------------------------+            |
> || PRM |    | APM (Audio Processing Manager)   |            |
> |+-----+    |  . Graph Management              |            |  
> |           |  . Command Handing               |            |  
> |           |  . Event Management              |            |  
> |           |  ...                             |            |  
> |           +----------------------------------+            |  
> |                            ^                              |
> |____________________________|______________________________|
>                              |  
>                              |   LPASS AIF
>  ____________________________|______________________________
> |                            |            Audio I/O         |
> |                            v                              |
> |   +--------------------------------------------------+    |
> |    |                Audio devices                     |   |
> |    | CODEC | HDMI-TX | PCM  | SLIMBUS | I2S |MI2S |...|   |
> |    |                                                  |   |
> |    +--------------------------------------------------+   |
> |___________________________________________________________|
> 
> AudioReach has constructs of sub-graph, container and modules.
> Each sub-graph can have N containers and each Container can have N Modules
> and connections between them can be linear or non-linear.
> An audio function can be realized with one or many connected
> sub-graphs. There are also control/event paths between modules that can
> be wired up while building graph to achieve various control mechanism
> between modules. These concepts of Sub-Graph, Containers and Modules
> are represented in ASoC topology.
> 
> Here is simple I2S graph with a Write Shared Memory and a
> Volume control module within a single Subgraph (1) with one Container (1)
> and 5 modules.
> 
>   ____________________________________________________________
>  |                        Sub-Graph [1]                       |
>  |  _______________________________________________________   |
>  | |                       Container [1]                   |  |
>  | | [WR_SH] -> [PCM DEC] -> [PCM CONV] -> [VOL]-> [I2S-EP]|  |
>  | |_______________________________________________________|  |
>  |____________________________________________________________|
> 
> For now this graph is split into two subgraphs to achieve dpcm like below:
>  ________________________________________________    _________________
> |                Sub-Graph [1]                   |  |  Sub-Graph [2]  |
> |  ____________________________________________  |  |  _____________  |
> | |              Container [1]                 | |  | |Container [2]| |
> | | [WR_SH] -> [PCM DEC] -> [PCM CONV] -> [VOL]| |  | |   [I2S-EP]  | |
> | |____________________________________________| |  | |_____________| |
> |________________________________________________|  |_________________|
> 
>                                                       _________________
>                                                     |  Sub-Graph [3]  |
>                                                     |  _____________  |
>                                                     | |Container [3]| |
>                                                     | |  [DMA-EP]   | |
>                                                     | |_____________| |
>                                                     |_________________|
> 
> 
> This patchset adds very minimal support for AudioReach which includes
> supporting sub-graphs containing CODEC DMA ports and simple PCM
> Decoder/Encoder and Logger Modules. Additional capabilities will
> be built over time to expose features offered by AudioReach. 
> 
> This patchset is Tested on SM8250 SoC based Qualcomm Robotics Platform RB5
> and SM9250 MTP with WSA881X Smart Speaker Amplifiers, DMICs connected via
> VA Macro and WCD938x Codec connected via TX and RX Macro and HDMI audio
> via I2S.



More information about the Alsa-devel mailing list