MSM8916 and MSM8939 do not have a dedicated ADSP. Instead, the audio
services via APR are also implemented by the modem DSP. Audio can be
either routed via the modem DSP (necessary for voice call audio etc)
or directly sent to the LPASS hardware (currently used by DB410c).
Bypassing QDSP6 audio is only possible with special firmware
(on DB410c) or when the modem DSP is completely disabled.

Add the typical nodes for QDSP6 audio to msm8916.dtsi and msm8939.dtsi.
The apr node is disabled by default to avoid changing behavior for
devices like DB410c that use the bypassed audio path.

Signed-off-by: Stephan Gerhold <step...@gerhold.net>
---
 arch/arm64/boot/dts/qcom/msm8916.dtsi | 49 +++++++++++++++++++++++++++++++++++
 arch/arm64/boot/dts/qcom/msm8939.dtsi | 49 +++++++++++++++++++++++++++++++++++
 2 files changed, 98 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi 
b/arch/arm64/boot/dts/qcom/msm8916.dtsi
index 4f799b536a92..e8a14dd7e7c2 100644
--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -10,6 +10,7 @@
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/reset/qcom,gcc-msm8916.h>
+#include <dt-bindings/soc/qcom,apr.h>
 #include <dt-bindings/thermal/thermal.h>
 
 / {
@@ -1989,6 +1990,54 @@ smd-edge {
 
                                label = "hexagon";
 
+                               apr: apr {
+                                       compatible = "qcom,apr-v2";
+                                       qcom,smd-channels = "apr_audio_svc";
+                                       qcom,domain = <APR_DOMAIN_ADSP>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       status = "disabled";
+
+                                       q6core: service@3 {
+                                               compatible = "qcom,q6core";
+                                               reg = <APR_SVC_ADSP_CORE>;
+                                       };
+
+                                       q6afe: service@4 {
+                                               compatible = "qcom,q6afe";
+                                               reg = <APR_SVC_AFE>;
+
+                                               q6afedai: dais {
+                                                       compatible = 
"qcom,q6afe-dais";
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       #sound-dai-cells = <1>;
+                                               };
+                                       };
+
+                                       q6asm: service@7 {
+                                               compatible = "qcom,q6asm";
+                                               reg = <APR_SVC_ASM>;
+
+                                               q6asmdai: dais {
+                                                       compatible = 
"qcom,q6asm-dais";
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       #sound-dai-cells = <1>;
+                                               };
+                                       };
+
+                                       q6adm: service@8 {
+                                               compatible = "qcom,q6adm";
+                                               reg = <APR_SVC_ADM>;
+
+                                               q6routing: routing {
+                                                       compatible = 
"qcom,q6adm-routing";
+                                                       #sound-dai-cells = <0>;
+                                               };
+                                       };
+                               };
+
                                fastrpc {
                                        compatible = "qcom,fastrpc";
                                        qcom,smd-channels = 
"fastrpcsmd-apps-dsp";
diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi 
b/arch/arm64/boot/dts/qcom/msm8939.dtsi
index 65c68e0e88d5..95610a32750a 100644
--- a/arch/arm64/boot/dts/qcom/msm8939.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
@@ -10,6 +10,7 @@
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/reset/qcom,gcc-msm8939.h>
+#include <dt-bindings/soc/qcom,apr.h>
 #include <dt-bindings/thermal/thermal.h>
 
 / {
@@ -1615,6 +1616,54 @@ smd-edge {
                                qcom,remote-pid = <1>;
 
                                label = "hexagon";
+
+                               apr: apr {
+                                       compatible = "qcom,apr-v2";
+                                       qcom,smd-channels = "apr_audio_svc";
+                                       qcom,domain = <APR_DOMAIN_ADSP>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       status = "disabled";
+
+                                       q6core: service@3 {
+                                               compatible = "qcom,q6core";
+                                               reg = <APR_SVC_ADSP_CORE>;
+                                       };
+
+                                       q6afe: service@4 {
+                                               compatible = "qcom,q6afe";
+                                               reg = <APR_SVC_AFE>;
+
+                                               q6afedai: dais {
+                                                       compatible = 
"qcom,q6afe-dais";
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       #sound-dai-cells = <1>;
+                                               };
+                                       };
+
+                                       q6asm: service@7 {
+                                               compatible = "qcom,q6asm";
+                                               reg = <APR_SVC_ASM>;
+
+                                               q6asmdai: dais {
+                                                       compatible = 
"qcom,q6asm-dais";
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
+                                                       #sound-dai-cells = <1>;
+                                               };
+                                       };
+
+                                       q6adm: service@8 {
+                                               compatible = "qcom,q6adm";
+                                               reg = <APR_SVC_ADM>;
+
+                                               q6routing: routing {
+                                                       compatible = 
"qcom,q6adm-routing";
+                                                       #sound-dai-cells = <0>;
+                                               };
+                                       };
+                               };
                        };
                };
 

-- 
2.42.0

Reply via email to