[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180426094606.4775-1-srinivas.kandagatla@linaro.org>
Date: Thu, 26 Apr 2018 10:45:42 +0100
From: srinivas.kandagatla@...aro.org
To: andy.gross@...aro.org, broonie@...nel.org,
linux-arm-msm@...r.kernel.org, alsa-devel@...a-project.org,
robh+dt@...nel.org, bgoswami@...eaurora.org
Cc: gregkh@...uxfoundation.org, david.brown@...aro.org,
mark.rutland@....com, lgirdwood@...il.com, plai@...eaurora.org,
tiwai@...e.com, perex@...ex.cz, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
rohkumar@....qualcomm.com, spatakok@....qualcomm.com,
Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
Subject: [PATCH v6 00/24] ASoC: qcom: Add support to QDSP based Audio
From: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
Thankyou everyone for providing feedback and testing v5 patchset.
This patchset aims to provide a basic version of QCOM DSP based
audio support which is available in downstream andriod kernels.
This patchset support audio playback on HDMI-RX, MI2S, SLIMBus and
will add support to other features as we move on.
QDSP has both static and dynamic modules. static modules like AFE
(Audio FrontEnd), ADM (Audio Device Manager), ASM(Audio Stream Manager)
and CORE to provide this audio services.
All these services use APR (Asynchronous Packet Router) protocol
via smd/glink transport to communicate with Application processor.
More details on each module is availble in there respective patch.
This patchset is tested on DB820c, with HDMI audio playback, MI2S on
DB410c on top of mainline, Also tested SLIMBus analog audio using
wcd9355 with an additional patches. Patches are also tested on
SDM845 by Rohit.
Here is my test branch incase someone want to try these patches
https://git.linaro.org/people/srinivas.kandagatla/linux.git/log/?h=v4.17-qdsp6
Here is block diagram to give a quick overview of the components
+---------+ +---------+ +---------+
| q6asm | |q6routing| | q6afe |
| dais | <------> | mixers | <-----> | dais |
+---------+ +---------+ +---------+
^ ^ ^
| | |
| +------------------+----------------+ |
| | | | |
v v v v v
+---------+ +---------+ +---------+
| q6ASM | | q6ADM | | q6AFE |
+---------+ +---------+ +---------+
^ ^ ^ ^
| | | CPU Side |
------+---------------------+-------------------+--------
| | |
| |APR(smd/glink) |
| | |
| +------------------+----------------+ |
| | | | |
+-----+--+-----------------------------------+--+-------
| | | | | QDSP Side |
v v v v v v
+---------+ +---------+ +---------+
| ASM | <------> | ADM | <-----> | AFE |
+---------+ +---------+ +---------+
^
|
+-------------------+
|
---------------------------+--------------------------
| Audio I/O |
v v
+--------------------------------------------------+
| Audio devices |
| CODEC | HDMI-TX | PCM | SLIMBUS | I2S |MI2S |...|
| |
+--------------------------------------------------+
Changes since v5 (https://lkml.org/lkml/2018/4/18/553)
- updated bindings as reviewed by Rob H.
- added missing binding for q6core
- fixed copp double count reported by Amit Pundir
- Updated proper SPDX licence on headers
- reorder patches to fix bisect errors reported by kbuild
Srinivas Kandagatla (24):
soc: qcom dt-bindings: Add APR bus bindings
soc: qcom: Add APR bus driver
ASoC: qdsp6: dt-bindings: Add q6core dt bindings
ASoC: qdsp6: dt-bindings: Add q6afe dt bindings
ASoC: qdsp6: dt-bindings: Add q6adm dt bindings
ASoC: qdsp6: dt-bindings: Add q6asm dt bindings
ASoC: qdsp6: q6common: Add qdsp6 helper functions
ASoC: qdsp6: q6core: Add q6core driver
ASoC: qdsp6: q6afe: Add q6afe driver
ASoC: qdsp6: qdafe: Add SLIMBus port Support
ASoC: qdsp6: q6afe: Add support to MI2S ports
ASoC: qdsp6: q6afe: Add support to MI2S sysclks
ASoC: qdsp6: q6adm: Add q6adm driver
ASoC: qdsp6: q6asm: Add q6asm driver
ASoC: qdsp6: q6asm: Add support to memory map and unmap
ASoC: qdsp6: q6asm: Add support to audio stream apis
ASoC: qdsp6: q6routing: Add q6routing driver
ASoC: qdsp6: q6routing: Add support to all SLIMBus Mixers
ASoC: qdsp6: q6routing: Add support to MI2S Mixers
ASoC: qdsp6: q6afe: Add q6afe dai driver
ASoC: qdsp6: q6asm: Add q6asm dai driver
ASoC: qdsp6: dt-bindings: Add apq8096 machine bindings
ASoC: qcom: apq8096: Add db820c machine driver
MAINTAINERS: Add myself as co-maintainer of qcom audio
.../devicetree/bindings/soc/qcom/qcom,apr.txt | 84 ++
.../devicetree/bindings/sound/qcom,apq8096.txt | 109 ++
.../devicetree/bindings/sound/qcom,q6adm.txt | 33 +
.../devicetree/bindings/sound/qcom,q6afe.txt | 88 ++
.../devicetree/bindings/sound/qcom,q6asm.txt | 33 +
.../devicetree/bindings/sound/qcom,q6core.txt | 21 +
MAINTAINERS | 1 +
drivers/soc/qcom/Kconfig | 9 +
drivers/soc/qcom/Makefile | 1 +
drivers/soc/qcom/apr.c | 384 ++++++
include/dt-bindings/soc/qcom,apr.h | 28 +
include/dt-bindings/sound/qcom,q6afe.h | 31 +
include/dt-bindings/sound/qcom,q6asm.h | 22 +
include/linux/mod_devicetable.h | 11 +
include/linux/soc/qcom/apr.h | 130 ++
sound/soc/qcom/Kconfig | 50 +
sound/soc/qcom/Makefile | 5 +
sound/soc/qcom/apq8096.c | 238 ++++
sound/soc/qcom/qdsp6/Makefile | 8 +
sound/soc/qcom/qdsp6/q6adm.c | 635 ++++++++++
sound/soc/qcom/qdsp6/q6adm.h | 25 +
sound/soc/qcom/qdsp6/q6afe-dai.c | 752 +++++++++++
sound/soc/qcom/qdsp6/q6afe.c | 1071 ++++++++++++++++
sound/soc/qcom/qdsp6/q6afe.h | 193 +++
sound/soc/qcom/qdsp6/q6asm-dai.c | 632 ++++++++++
sound/soc/qcom/qdsp6/q6asm.c | 1312 ++++++++++++++++++++
sound/soc/qcom/qdsp6/q6asm.h | 69 +
sound/soc/qcom/qdsp6/q6core.c | 380 ++++++
sound/soc/qcom/qdsp6/q6core.h | 15 +
sound/soc/qcom/qdsp6/q6dsp-common.c | 66 +
sound/soc/qcom/qdsp6/q6dsp-common.h | 24 +
sound/soc/qcom/qdsp6/q6dsp-errno.h | 51 +
sound/soc/qcom/qdsp6/q6routing.c | 982 +++++++++++++++
sound/soc/qcom/qdsp6/q6routing.h | 9 +
34 files changed, 7502 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt
create mode 100644 Documentation/devicetree/bindings/sound/qcom,apq8096.txt
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6adm.txt
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6afe.txt
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6asm.txt
create mode 100644 Documentation/devicetree/bindings/sound/qcom,q6core.txt
create mode 100644 drivers/soc/qcom/apr.c
create mode 100644 include/dt-bindings/soc/qcom,apr.h
create mode 100644 include/dt-bindings/sound/qcom,q6afe.h
create mode 100644 include/dt-bindings/sound/qcom,q6asm.h
create mode 100644 include/linux/soc/qcom/apr.h
create mode 100644 sound/soc/qcom/apq8096.c
create mode 100644 sound/soc/qcom/qdsp6/Makefile
create mode 100644 sound/soc/qcom/qdsp6/q6adm.c
create mode 100644 sound/soc/qcom/qdsp6/q6adm.h
create mode 100644 sound/soc/qcom/qdsp6/q6afe-dai.c
create mode 100644 sound/soc/qcom/qdsp6/q6afe.c
create mode 100644 sound/soc/qcom/qdsp6/q6afe.h
create mode 100644 sound/soc/qcom/qdsp6/q6asm-dai.c
create mode 100644 sound/soc/qcom/qdsp6/q6asm.c
create mode 100644 sound/soc/qcom/qdsp6/q6asm.h
create mode 100644 sound/soc/qcom/qdsp6/q6core.c
create mode 100644 sound/soc/qcom/qdsp6/q6core.h
create mode 100644 sound/soc/qcom/qdsp6/q6dsp-common.c
create mode 100644 sound/soc/qcom/qdsp6/q6dsp-common.h
create mode 100644 sound/soc/qcom/qdsp6/q6dsp-errno.h
create mode 100644 sound/soc/qcom/qdsp6/q6routing.c
create mode 100644 sound/soc/qcom/qdsp6/q6routing.h
--
2.16.2
Powered by blists - more mailing lists