[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