Hi,
We're successfully using RPMSG for communication between M4 and A53 cores as well as M4 waking A53 from suspend on i.MX8mm with BSP 5.10.35_2.0.0
While updating to imx-yocto-bsp-5.15.52-2.1.0, the linux-imx build fails. The error relates to parsing our DTS file which contains RPMSG stanza's and includes imx8mm.dtsi for the following :-
+ 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";
+ };
The linux-imx git history shows that the rpmsg stanza was removed from imx8mm.dtsi (and others) in BSP 5.15 :-
commit 9bfd8f73de67f2bd36026a093d24d3dcbb2b6c6b
Author: Richard Zhu <hongxing.zhu@nxp.com>
Date: Mon Jul 12 16:49:42 2021 +0800
LF-4134-2 arm64: dts: imx8m: remove the local rpmsg support
Since the i.MX8 RPMSG support had been switched to remote proc.
To clean up the codes, remove the local i.MX RPMSG supports.
What is meant by the commit comment, "i.MX8 RPMSG support had been switched to remote proc" ?
Has something changed in the RPMSG implementation and configuration in BSP 5.15, if so, how do we perform the configuration we previously did in the DTS file ?
If not, can we simply add the missing rpmsg stanza to our platform DTS file ??
Thanks in advance.
已解决! 转到解答。
Please refer arch/arm64/boot/dts/freescale/imx8mm-evk-rpmsg.dts:
imx8mm-cm4 {
compatible = "fsl,imx8mm-cm4";
rsc-da = <0xb8000000>;
clocks = <&clk IMX8MM_CLK_M4_DIV>;
mbox-names = "tx", "rx", "rxdb";
mboxes = <&mu 0 1
&mu 1 1
&mu 3 1>;
memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
syscon = <&src>;
fsl,startup-delay-ms = <500>;
};
The driver is located in /drivers/remoteproc/imx_rproc.c
Please refer arch/arm64/boot/dts/freescale/imx8mm-evk-rpmsg.dts:
imx8mm-cm4 {
compatible = "fsl,imx8mm-cm4";
rsc-da = <0xb8000000>;
clocks = <&clk IMX8MM_CLK_M4_DIV>;
mbox-names = "tx", "rx", "rxdb";
mboxes = <&mu 0 1
&mu 1 1
&mu 3 1>;
memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
syscon = <&src>;
fsl,startup-delay-ms = <500>;
};
The driver is located in /drivers/remoteproc/imx_rproc.c