arm64: dts: add the rpmsg and enable rpmsg audio on imx8mn
authorAnson Huang <Anson.Huang@nxp.com>
Tue, 3 Mar 2020 08:05:39 +0000 (16:05 +0800)
committerDong Aisheng <aisheng.dong@nxp.com>
Mon, 14 Dec 2020 03:22:05 +0000 (11:22 +0800)
Enable the RPMSG on iMX8MN DDR4 EVK platform, and verify the rpmsg
audio feature.

Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Acked-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
arch/arm64/boot/dts/freescale/Makefile
arch/arm64/boot/dts/freescale/imx8mn-ddr4-evk-rpmsg.dts [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mn.dtsi

index 5498ce5..f0a0e1f 100644 (file)
@@ -34,7 +34,8 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mm-ddr4-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-var-som-symphony.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-ddr4-evk.dtb
-dtb-$(CONFIG_ARCH_MXC) += imx8mn-ddr4-evk.dtb imx8mn-ddr4-evk-ak5558.dtb imx8mn-ddr4-evk-rm67191.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mn-ddr4-evk.dtb imx8mn-ddr4-evk-ak5558.dtb imx8mn-ddr4-evk-rm67191.dtb \
+                         imx8mn-ddr4-evk-rpmsg.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mn-var-som-symphony.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mq-evk.dtb imx8mq-evk-rpmsg.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-ddr4-evk-rpmsg.dts b/arch/arm64/boot/dts/freescale/imx8mn-ddr4-evk-rpmsg.dts
new file mode 100644 (file)
index 0000000..de2e1d0
--- /dev/null
@@ -0,0 +1,101 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2019 NXP
+ */
+
+#include "imx8mn-ddr4-evk.dts"
+
+/ {
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               m_core_reserved: m_core@0x80000000 {
+                       no-map;
+                       reg = <0 0x80000000 0 0x1000000>;
+               };
+
+               rpmsg_reserved: rpmsg@0xb8000000 {
+                       no-map;
+                       reg = <0 0xb8000000 0 0x400000>;
+               };
+       };
+
+       sound-wm8524 {
+               status = "disabled";
+       };
+
+       wm8524: audio-codec {
+               status = "disabled";
+       };
+
+       rpmsg_i2s: rpmsg-i2s {
+               compatible = "fsl,imx8mn-rpmsg-i2s";
+               /* the audio device index in m4 domain */
+               fsl,audioindex = <0> ;
+               fsl,dma-buffer-size = <0x6000000>;
+               fsl,enable-lpa;
+               status = "okay";
+       };
+
+       sound-rpmsg {
+               compatible = "fsl,imx-audio-rpmsg";
+               model = "wm8524-audio";
+               cpu-dai = <&rpmsg_i2s>;
+               rpmsg-out;
+       };
+};
+
+&clk {
+       init-on-array = <
+       IMX8MN_CLK_UART4_ROOT
+       >;
+};
+
+/*
+ * ATTENTION: M core may use IPs like below
+ * ECSPI2, GPIO1/GPIO5, GPT1, I2C3, I2S3, WDOG1, UART4, PWM3, SDMA1/3 and PDM
+ */
+
+&ecspi2 {
+       status = "disabled";
+};
+
+&i2c3 {
+       status = "disabled";
+};
+
+&pwm3 {
+       status = "disabled";
+};
+
+&rpmsg{
+       /*
+        * 64K for one rpmsg instance:
+        * --0xb8000000~0xb800ffff: pingpong
+        */
+       vdev-nums = <1>;
+       reg = <0x0 0xb8000000 0x0 0x10000>;
+       status = "okay";
+};
+
+&sai3 {
+       status = "disabled";
+};
+
+&uart4 {
+       status = "disabled";
+};
+
+&wdog1 {
+       status = "disabled";
+};
+
+&sdma1{
+       status = "disabled";
+};
+
+&sdma3 {
+       status = "disabled";
+};
index 9a5969f..86666bf 100644 (file)
                                reg = <0x30aa0000 0x10000>;
                                interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&clk IMX8MN_CLK_MU_ROOT>;
+                               clock-names = "mu";
                                #mbox-cells = <2>;
                        };
 
                };
        };
 
+       rpmsg: rpmsg{
+               compatible = "fsl,imx8mq-rpmsg";
+               /* up to now, the following channels are used in imx rpmsg
+                * - tx1/rx1: messages channel.
+                * - general interrupt1: remote proc finish re-init rpmsg stack
+                *   when A core is partition reset.
+                */
+               mbox-names = "tx", "rx", "rxdb";
+               mboxes = <&mu 0 1
+                         &mu 1 1
+                         &mu 3 1>;
+               status = "disabled";
+       };
+
        usbphynop1: usbphynop1 {
                compatible = "usb-nop-xceiv";
                clocks = <&clk IMX8MN_CLK_USB_PHY_REF>;