arm64: dts: qcom: msm8916: Add common msm8916-modem-qdsp6.dtsi
authorStephan Gerhold <stephan@gerhold.net>
Tue, 3 Oct 2023 13:18:22 +0000 (15:18 +0200)
committerBjorn Andersson <andersson@kernel.org>
Sat, 21 Oct 2023 20:06:57 +0000 (13:06 -0700)
Most MSM8916/MSM8939 devices use very similar setups for the modem,
because most of the device-specific details are abstracted by the modem
firmware. There are several definitions (status switches, DAI links
etc) that will be exactly the same for every board.

Introduce a common msm8916-modem-qdsp6.dtsi include that can be used to
simplify enabling the modem for such devices. By default the
digital/analog codec in the SoC/PMIC is used, but boards can define
additional codecs by adding additional backend DAI links.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Link: https://lore.kernel.org/r/20231003-msm8916-modem-v2-4-61b684be55c0@gerhold.net
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/msm8916-modem-qdsp6.dtsi [new file with mode: 0644]

diff --git a/arch/arm64/boot/dts/qcom/msm8916-modem-qdsp6.dtsi b/arch/arm64/boot/dts/qcom/msm8916-modem-qdsp6.dtsi
new file mode 100644 (file)
index 0000000..0399616
--- /dev/null
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+/*
+ * msm8916-modem-qdsp6.dtsi describes the typical modem setup on MSM8916 devices
+ * (or similar SoCs) with audio routed via the QDSP6 services provided by the
+ * modem firmware. The digital/analog codec in the SoC/PMIC is used by default,
+ * but boards can define additional codecs by adding additional backend DAI links.
+ */
+
+#include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
+
+&apr {
+       status = "okay";
+};
+
+&bam_dmux {
+       status = "okay";
+};
+
+&bam_dmux_dma {
+       status = "okay";
+};
+
+&lpass {
+       status = "reserved"; /* Controlled by QDSP6 */
+};
+
+&lpass_codec {
+       status = "okay";
+};
+
+&mba_mem {
+       status = "okay";
+};
+
+&mpss {
+       status = "okay";
+};
+
+&mpss_mem {
+       status = "okay";
+};
+
+&pm8916_codec {
+       status = "okay";
+};
+
+&q6afedai {
+       dai@16 {
+               reg = <PRIMARY_MI2S_RX>;
+               qcom,sd-lines = <0 1>;
+       };
+       dai@20 {
+               reg = <TERTIARY_MI2S_TX>;
+               qcom,sd-lines = <0 1>;
+       };
+};
+
+&q6asmdai {
+       dai@0 {
+               reg = <0>;
+               direction = <Q6ASM_DAI_RX>;
+       };
+       dai@1 {
+               reg = <1>;
+               direction = <Q6ASM_DAI_TX>;
+       };
+       dai@2 {
+               reg = <2>;
+               direction = <Q6ASM_DAI_RX>;
+       };
+       dai@3 {
+               reg = <3>;
+               direction = <Q6ASM_DAI_RX>;
+               is-compress-dai;
+       };
+};
+
+&sound {
+       compatible = "qcom,msm8916-qdsp6-sndcard";
+       model = "msm8916";
+
+       pinctrl-0 = <&cdc_pdm_default>;
+       pinctrl-1 = <&cdc_pdm_sleep>;
+       pinctrl-names = "default", "sleep";
+
+       status = "okay";
+
+       frontend0-dai-link {
+               link-name = "MultiMedia1";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
+               };
+       };
+
+       frontend1-dai-link {
+               link-name = "MultiMedia2";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
+               };
+       };
+
+       frontend2-dai-link {
+               link-name = "MultiMedia3";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
+               };
+       };
+
+       frontend3-dai-link {
+               link-name = "MultiMedia4";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
+               };
+       };
+
+       sound_link_backend0: backend0-dai-link {
+               link-name = "Primary MI2S";
+
+               cpu {
+                       sound-dai = <&q6afedai PRIMARY_MI2S_RX>;
+               };
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+               codec {
+                       sound-dai = <&lpass_codec 0>, <&pm8916_codec 0>;
+               };
+       };
+
+       sound_link_backend1: backend1-dai-link {
+               link-name = "Tertiary MI2S";
+
+               cpu {
+                       sound-dai = <&q6afedai TERTIARY_MI2S_TX>;
+               };
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+               codec {
+                       sound-dai = <&lpass_codec 1>, <&pm8916_codec 1>;
+               };
+       };
+};