From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> To: bjorn.andersson@linaro.org, broonie@kernel.org, robh@kernel.org Cc: plai@codeaurora.org, tiwai@suse.de, devicetree@vger.kernel.org, perex@perex.cz, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, lgirdwood@gmail.com, bgoswami@codeaurora.org, Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Subject: [PATCH v2 00/16] ASoC: qcom: Add AudioReach support Date: Wed, 14 Jul 2021 16:30:23 +0100 [thread overview] Message-ID: <20210714153039.28373-1-srinivas.kandagatla@linaro.org> (raw) 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 simpified high-level block diagram of AudioReach: ___________________________________________________________ | CPU (Application Processor) | | +---------+ +---------+ +---------+ | | | q6apm | | q6apm | | q6afe | | | | dais | <------> | | <-----> | bedais | | | +---------+ +---------+ +---------+ | | ^ ^ | | | | +---------+ | | +---------+ v +---------->|topology | | | | q6prm | +---------+ | | | | | |<-------->| GPR | +---------+ | | +---------+ +---------+ | | ^ | |____________________________|______________________________| | | 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. Sample WIP ASoC graphs are available at https://git.linaro.org/people/srinivas.kandagatla/audioreach-topology.git/ Thanks, srini Changes since RFC: - moved GPR support into APR driver to avoid code duplication. - Fixed various dt-bindings-check warnings and errors. - Moved include/dt-bindings headers to dt-bindings patch. - added PGA widget support - Fixed few ordering issues while testing with ASoC Topology 2.0 - Removed duplicate defines in various headers Srinivas Kandagatla (16): soc: dt-bindings: qcom: add gpr bindings soc: qcom: apr: make code more reuseable soc: qcom: apr: Add GPR support ASoC: qcom: dt-bindings: add bindings Audio Processing manager ASoC: qcom: audioreach: add basic pkt alloc support ASoC: qcom: audioreach: add q6apm support ASoC: qcom: audioreach: add module configuration command helpers ASoC: qcom: audioreach: add topology support ASoC: qcom: audioreach: add q6apm-dai support ASoC: qcom: audioreach: add bedai support ASoC: qcom: dt-bindings: add bindings for Proxy Resource Manager ASoC: qcom: audioreach: add q6prm support ASoC: qcom: dt-bindings: add audioreach soundcard compatibles ASoC: qcom: audioreach: add volume ctrl module support ASoC: qcom: audioreach: topology add dapm pga support ASoC: qcom: sm8250: Add audioreach support .../bindings/soc/qcom/qcom,gpr.yaml | 83 ++ .../devicetree/bindings/sound/qcom,q6apm.yaml | 87 ++ .../devicetree/bindings/sound/qcom,q6prm.yaml | 43 + .../bindings/sound/qcom,sm8250.yaml | 43 + drivers/soc/qcom/Kconfig | 8 + drivers/soc/qcom/apr.c | 270 +++- include/dt-bindings/soc/qcom,gpr.h | 18 + include/dt-bindings/sound/qcom,q6apm.h | 8 + include/linux/soc/qcom/apr.h | 69 +- include/uapi/sound/snd_ar_tokens.h | 198 +++ sound/soc/qcom/Kconfig | 19 + sound/soc/qcom/Makefile | 1 + sound/soc/qcom/audioreach/Makefile | 12 + sound/soc/qcom/audioreach/audioreach.c | 1162 +++++++++++++++++ sound/soc/qcom/audioreach/audioreach.h | 676 ++++++++++ sound/soc/qcom/audioreach/q6apm-bedai.c | 323 +++++ sound/soc/qcom/audioreach/q6apm-dai.c | 494 +++++++ sound/soc/qcom/audioreach/q6apm.c | 963 ++++++++++++++ sound/soc/qcom/audioreach/q6apm.h | 174 +++ sound/soc/qcom/audioreach/q6prm.c | 414 ++++++ sound/soc/qcom/audioreach/topology.c | 1075 +++++++++++++++ sound/soc/qcom/sm8250.c | 144 +- 22 files changed, 6236 insertions(+), 48 deletions(-) create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,gpr.yaml create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6apm.yaml create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6prm.yaml create mode 100644 include/dt-bindings/soc/qcom,gpr.h create mode 100644 include/dt-bindings/sound/qcom,q6apm.h create mode 100644 include/uapi/sound/snd_ar_tokens.h create mode 100644 sound/soc/qcom/audioreach/Makefile create mode 100644 sound/soc/qcom/audioreach/audioreach.c create mode 100644 sound/soc/qcom/audioreach/audioreach.h create mode 100644 sound/soc/qcom/audioreach/q6apm-bedai.c create mode 100644 sound/soc/qcom/audioreach/q6apm-dai.c create mode 100644 sound/soc/qcom/audioreach/q6apm.c create mode 100644 sound/soc/qcom/audioreach/q6apm.h create mode 100644 sound/soc/qcom/audioreach/q6prm.c create mode 100644 sound/soc/qcom/audioreach/topology.c -- 2.21.0
WARNING: multiple messages have this Message-ID (diff)
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> To: bjorn.andersson@linaro.org, broonie@kernel.org, robh@kernel.org Cc: devicetree@vger.kernel.org, alsa-devel@alsa-project.org, bgoswami@codeaurora.org, lgirdwood@gmail.com, tiwai@suse.de, plai@codeaurora.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 00/16] ASoC: qcom: Add AudioReach support Date: Wed, 14 Jul 2021 16:30:23 +0100 [thread overview] Message-ID: <20210714153039.28373-1-srinivas.kandagatla@linaro.org> (raw) 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 simpified high-level block diagram of AudioReach: ___________________________________________________________ | CPU (Application Processor) | | +---------+ +---------+ +---------+ | | | q6apm | | q6apm | | q6afe | | | | dais | <------> | | <-----> | bedais | | | +---------+ +---------+ +---------+ | | ^ ^ | | | | +---------+ | | +---------+ v +---------->|topology | | | | q6prm | +---------+ | | | | | |<-------->| GPR | +---------+ | | +---------+ +---------+ | | ^ | |____________________________|______________________________| | | 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. Sample WIP ASoC graphs are available at https://git.linaro.org/people/srinivas.kandagatla/audioreach-topology.git/ Thanks, srini Changes since RFC: - moved GPR support into APR driver to avoid code duplication. - Fixed various dt-bindings-check warnings and errors. - Moved include/dt-bindings headers to dt-bindings patch. - added PGA widget support - Fixed few ordering issues while testing with ASoC Topology 2.0 - Removed duplicate defines in various headers Srinivas Kandagatla (16): soc: dt-bindings: qcom: add gpr bindings soc: qcom: apr: make code more reuseable soc: qcom: apr: Add GPR support ASoC: qcom: dt-bindings: add bindings Audio Processing manager ASoC: qcom: audioreach: add basic pkt alloc support ASoC: qcom: audioreach: add q6apm support ASoC: qcom: audioreach: add module configuration command helpers ASoC: qcom: audioreach: add topology support ASoC: qcom: audioreach: add q6apm-dai support ASoC: qcom: audioreach: add bedai support ASoC: qcom: dt-bindings: add bindings for Proxy Resource Manager ASoC: qcom: audioreach: add q6prm support ASoC: qcom: dt-bindings: add audioreach soundcard compatibles ASoC: qcom: audioreach: add volume ctrl module support ASoC: qcom: audioreach: topology add dapm pga support ASoC: qcom: sm8250: Add audioreach support .../bindings/soc/qcom/qcom,gpr.yaml | 83 ++ .../devicetree/bindings/sound/qcom,q6apm.yaml | 87 ++ .../devicetree/bindings/sound/qcom,q6prm.yaml | 43 + .../bindings/sound/qcom,sm8250.yaml | 43 + drivers/soc/qcom/Kconfig | 8 + drivers/soc/qcom/apr.c | 270 +++- include/dt-bindings/soc/qcom,gpr.h | 18 + include/dt-bindings/sound/qcom,q6apm.h | 8 + include/linux/soc/qcom/apr.h | 69 +- include/uapi/sound/snd_ar_tokens.h | 198 +++ sound/soc/qcom/Kconfig | 19 + sound/soc/qcom/Makefile | 1 + sound/soc/qcom/audioreach/Makefile | 12 + sound/soc/qcom/audioreach/audioreach.c | 1162 +++++++++++++++++ sound/soc/qcom/audioreach/audioreach.h | 676 ++++++++++ sound/soc/qcom/audioreach/q6apm-bedai.c | 323 +++++ sound/soc/qcom/audioreach/q6apm-dai.c | 494 +++++++ sound/soc/qcom/audioreach/q6apm.c | 963 ++++++++++++++ sound/soc/qcom/audioreach/q6apm.h | 174 +++ sound/soc/qcom/audioreach/q6prm.c | 414 ++++++ sound/soc/qcom/audioreach/topology.c | 1075 +++++++++++++++ sound/soc/qcom/sm8250.c | 144 +- 22 files changed, 6236 insertions(+), 48 deletions(-) create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,gpr.yaml create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6apm.yaml create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6prm.yaml create mode 100644 include/dt-bindings/soc/qcom,gpr.h create mode 100644 include/dt-bindings/sound/qcom,q6apm.h create mode 100644 include/uapi/sound/snd_ar_tokens.h create mode 100644 sound/soc/qcom/audioreach/Makefile create mode 100644 sound/soc/qcom/audioreach/audioreach.c create mode 100644 sound/soc/qcom/audioreach/audioreach.h create mode 100644 sound/soc/qcom/audioreach/q6apm-bedai.c create mode 100644 sound/soc/qcom/audioreach/q6apm-dai.c create mode 100644 sound/soc/qcom/audioreach/q6apm.c create mode 100644 sound/soc/qcom/audioreach/q6apm.h create mode 100644 sound/soc/qcom/audioreach/q6prm.c create mode 100644 sound/soc/qcom/audioreach/topology.c -- 2.21.0
next reply other threads:[~2021-07-14 15:30 UTC|newest] Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-14 15:30 Srinivas Kandagatla [this message] 2021-07-14 15:30 ` [PATCH v2 00/16] ASoC: qcom: Add AudioReach support Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 01/16] soc: dt-bindings: qcom: add gpr bindings Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 16:05 ` Pierre-Louis Bossart 2021-07-14 16:05 ` Pierre-Louis Bossart 2021-07-14 15:30 ` [PATCH v2 02/16] soc: qcom: apr: make code more reuseable Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 20:36 ` kernel test robot 2021-07-14 20:36 ` kernel test robot 2021-07-14 20:36 ` kernel test robot 2021-07-14 15:30 ` [PATCH v2 03/16] soc: qcom: apr: Add GPR support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 16:20 ` Pierre-Louis Bossart 2021-07-14 16:20 ` Pierre-Louis Bossart 2021-07-15 10:31 ` Srinivas Kandagatla 2021-07-15 10:31 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 04/16] ASoC: qcom: dt-bindings: add bindings Audio Processing manager Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-28 17:36 ` Rob Herring 2021-07-28 17:36 ` Rob Herring 2021-07-29 9:18 ` Srinivas Kandagatla 2021-07-29 9:18 ` Srinivas Kandagatla 2021-07-29 11:13 ` Mark Brown 2021-07-29 11:13 ` Mark Brown 2021-07-30 11:06 ` Srinivas Kandagatla 2021-07-30 11:06 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 05/16] ASoC: qcom: audioreach: add basic pkt alloc support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 16:30 ` Pierre-Louis Bossart 2021-07-14 16:30 ` Pierre-Louis Bossart 2021-07-15 10:31 ` Srinivas Kandagatla 2021-07-15 10:31 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 06/16] ASoC: qcom: audioreach: add q6apm support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 16:40 ` Pierre-Louis Bossart 2021-07-14 16:40 ` Pierre-Louis Bossart 2021-07-15 10:31 ` Srinivas Kandagatla 2021-07-15 10:31 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 07/16] ASoC: qcom: audioreach: add module configuration command helpers Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 16:48 ` Pierre-Louis Bossart 2021-07-14 16:48 ` Pierre-Louis Bossart 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 08/16] ASoC: qcom: audioreach: add topology support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 09/16] ASoC: qcom: audioreach: add q6apm-dai support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 16:59 ` Pierre-Louis Bossart 2021-07-14 16:59 ` Pierre-Louis Bossart 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 10/16] ASoC: qcom: audioreach: add bedai support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 17:03 ` Pierre-Louis Bossart 2021-07-14 17:03 ` Pierre-Louis Bossart 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 11/16] ASoC: qcom: dt-bindings: add bindings for Proxy Resource Manager Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 12/16] ASoC: qcom: audioreach: add q6prm support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 17:09 ` Pierre-Louis Bossart 2021-07-14 17:09 ` Pierre-Louis Bossart 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-15 7:40 ` kernel test robot 2021-07-15 7:40 ` kernel test robot 2021-07-15 7:40 ` kernel test robot 2021-07-14 15:30 ` [PATCH v2 13/16] ASoC: qcom: dt-bindings: add audioreach soundcard compatibles Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 14/16] ASoC: qcom: audioreach: add volume ctrl module support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 15/16] ASoC: qcom: audioreach: topology add dapm pga support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 15:30 ` [PATCH v2 16/16] ASoC: qcom: sm8250: Add audioreach support Srinivas Kandagatla 2021-07-14 15:30 ` Srinivas Kandagatla 2021-07-14 17:12 ` Pierre-Louis Bossart 2021-07-14 17:12 ` Pierre-Louis Bossart 2021-07-15 10:32 ` Srinivas Kandagatla 2021-07-15 10:32 ` Srinivas Kandagatla
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210714153039.28373-1-srinivas.kandagatla@linaro.org \ --to=srinivas.kandagatla@linaro.org \ --cc=alsa-devel@alsa-project.org \ --cc=bgoswami@codeaurora.org \ --cc=bjorn.andersson@linaro.org \ --cc=broonie@kernel.org \ --cc=devicetree@vger.kernel.org \ --cc=lgirdwood@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=perex@perex.cz \ --cc=plai@codeaurora.org \ --cc=robh@kernel.org \ --cc=tiwai@suse.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.