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.