Add an overlay used for remote processor inter-core communication
between A55 and M33 cores on the phyCORE-i.MX93 SoM based boards.
Overlay adds the required reserved memory regions and enables the
mailbox unit and the M33 core for RPMsg (Remote Processor Messaging
Framework).
Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
---
arch/arm64/boot/dts/freescale/Makefile | 4 ++
.../dts/freescale/imx93-phycore-rpmsg.dtso | 60 +++++++++++++++++++
2 files changed, 64 insertions(+)
create mode 100644 arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 0b473a23d120..08a1de299538 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -324,6 +324,10 @@ dtb-$(CONFIG_ARCH_MXC) += imx93-14x14-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-kontron-bl-osm-s.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-nash.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-segin.dtb
+
+imx93-phycore-rpmsg-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-segin.dtb imx93-phycore-rpmsg.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx93-phycore-rpmsg.dtb
+
dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba91xxca.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba93xxca.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba93xxla.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso b/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
new file mode 100644
index 000000000000..9200113c9ec3
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Primoz Fiser <primoz.fiser@norik.com>
+ */
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ vdev0vring0: vdev0vring0@a4000000 {
+ reg = <0 0xa4000000 0 0x8000>;
+ no-map;
+ };
+
+ vdev0vring1: vdev0vring1@a4008000 {
+ reg = <0 0xa4008000 0 0x8000>;
+ no-map;
+ };
+
+ vdev1vring0: vdev1vring0@a4010000 {
+ reg = <0 0xa4010000 0 0x8000>;
+ no-map;
+ };
+
+ vdev1vring1: vdev1vring1@a4018000 {
+ reg = <0 0xa4018000 0 0x8000>;
+ no-map;
+ };
+
+ rsc_table: rsc-table@2021e000 {
+ reg = <0 0x2021e000 0 0x1000>;
+ no-map;
+ };
+
+ vdevbuffer: vdevbuffer@a4020000 {
+ compatible = "shared-dma-pool";
+ reg = <0 0xa4020000 0 0x100000>;
+ no-map;
+ };
+ };
+};
+
+&cm33 {
+ mbox-names = "tx", "rx", "rxdb";
+ mboxes = <&mu1 0 1>,
+ <&mu1 1 1>,
+ <&mu1 3 1>;
+ memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>,
+ <&vdev1vring0>, <&vdev1vring1>, <&rsc_table>;
+ status = "okay";
+};
+
+&mu1 {
+ status = "okay";
+};
--
2.34.1
On Thu, Jun 19, 2025 at 08:39:51AM +0200, Primoz Fiser wrote:
> Add an overlay used for remote processor inter-core communication
> between A55 and M33 cores on the phyCORE-i.MX93 SoM based boards.
>
> Overlay adds the required reserved memory regions and enables the
> mailbox unit and the M33 core for RPMsg (Remote Processor Messaging
> Framework).
>
> Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
> ---
> arch/arm64/boot/dts/freescale/Makefile | 4 ++
> .../dts/freescale/imx93-phycore-rpmsg.dtso | 60 +++++++++++++++++++
> 2 files changed, 64 insertions(+)
> create mode 100644 arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
>
> diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
> index 0b473a23d120..08a1de299538 100644
> --- a/arch/arm64/boot/dts/freescale/Makefile
> +++ b/arch/arm64/boot/dts/freescale/Makefile
> @@ -324,6 +324,10 @@ dtb-$(CONFIG_ARCH_MXC) += imx93-14x14-evk.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx93-kontron-bl-osm-s.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-nash.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-segin.dtb
> +
> +imx93-phycore-rpmsg-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-segin.dtb imx93-phycore-rpmsg.dtbo
> +dtb-$(CONFIG_ARCH_MXC) += imx93-phycore-rpmsg.dtb
> +
> dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba91xxca.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba93xxca.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba93xxla.dtb
> diff --git a/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso b/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
> new file mode 100644
> index 000000000000..9200113c9ec3
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
> @@ -0,0 +1,60 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
> + * Author: Primoz Fiser <primoz.fiser@norik.com>
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +&{/} {
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + vdev0vring0: vdev0vring0@a4000000 {
> + reg = <0 0xa4000000 0 0x8000>;
> + no-map;
> + };
> +
> + vdev0vring1: vdev0vring1@a4008000 {
> + reg = <0 0xa4008000 0 0x8000>;
> + no-map;
> + };
> +
> + vdev1vring0: vdev1vring0@a4010000 {
> + reg = <0 0xa4010000 0 0x8000>;
> + no-map;
> + };
> +
> + vdev1vring1: vdev1vring1@a4018000 {
> + reg = <0 0xa4018000 0 0x8000>;
> + no-map;
> + };
> +
> + rsc_table: rsc-table@2021e000 {
Can we sort the node in order of unit-address?
Shawn
> + reg = <0 0x2021e000 0 0x1000>;
> + no-map;
> + };
> +
> + vdevbuffer: vdevbuffer@a4020000 {
> + compatible = "shared-dma-pool";
> + reg = <0 0xa4020000 0 0x100000>;
> + no-map;
> + };
> + };
> +};
> +
> +&cm33 {
> + mbox-names = "tx", "rx", "rxdb";
> + mboxes = <&mu1 0 1>,
> + <&mu1 1 1>,
> + <&mu1 3 1>;
> + memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>,
> + <&vdev1vring0>, <&vdev1vring1>, <&rsc_table>;
> + status = "okay";
> +};
> +
> +&mu1 {
> + status = "okay";
> +};
> --
> 2.34.1
>
Hi Shawn,
On 7. 07. 25 05:36, Shawn Guo wrote:
> On Thu, Jun 19, 2025 at 08:39:51AM +0200, Primoz Fiser wrote:
>> Add an overlay used for remote processor inter-core communication
>> between A55 and M33 cores on the phyCORE-i.MX93 SoM based boards.
>>
>> Overlay adds the required reserved memory regions and enables the
>> mailbox unit and the M33 core for RPMsg (Remote Processor Messaging
>> Framework).
>>
>> Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
>> ---
>> arch/arm64/boot/dts/freescale/Makefile | 4 ++
>> .../dts/freescale/imx93-phycore-rpmsg.dtso | 60 +++++++++++++++++++
>> 2 files changed, 64 insertions(+)
>> create mode 100644 arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
>>
>> diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
>> index 0b473a23d120..08a1de299538 100644
>> --- a/arch/arm64/boot/dts/freescale/Makefile
>> +++ b/arch/arm64/boot/dts/freescale/Makefile
>> @@ -324,6 +324,10 @@ dtb-$(CONFIG_ARCH_MXC) += imx93-14x14-evk.dtb
>> dtb-$(CONFIG_ARCH_MXC) += imx93-kontron-bl-osm-s.dtb
>> dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-nash.dtb
>> dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-segin.dtb
>> +
>> +imx93-phycore-rpmsg-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-segin.dtb imx93-phycore-rpmsg.dtbo
>> +dtb-$(CONFIG_ARCH_MXC) += imx93-phycore-rpmsg.dtb
>> +
>> dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba91xxca.dtb
>> dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba93xxca.dtb
>> dtb-$(CONFIG_ARCH_MXC) += imx93-tqma9352-mba93xxla.dtb
>> diff --git a/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso b/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
>> new file mode 100644
>> index 000000000000..9200113c9ec3
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/freescale/imx93-phycore-rpmsg.dtso
>> @@ -0,0 +1,60 @@
>> +// SPDX-License-Identifier: GPL-2.0
>> +/*
>> + * Copyright (C) 2025 PHYTEC Messtechnik GmbH
>> + * Author: Primoz Fiser <primoz.fiser@norik.com>
>> + */
>> +
>> +/dts-v1/;
>> +/plugin/;
>> +
>> +&{/} {
>> + reserved-memory {
>> + #address-cells = <2>;
>> + #size-cells = <2>;
>> +
>> + vdev0vring0: vdev0vring0@a4000000 {
>> + reg = <0 0xa4000000 0 0x8000>;
>> + no-map;
>> + };
>> +
>> + vdev0vring1: vdev0vring1@a4008000 {
>> + reg = <0 0xa4008000 0 0x8000>;
>> + no-map;
>> + };
>> +
>> + vdev1vring0: vdev1vring0@a4010000 {
>> + reg = <0 0xa4010000 0 0x8000>;
>> + no-map;
>> + };
>> +
>> + vdev1vring1: vdev1vring1@a4018000 {
>> + reg = <0 0xa4018000 0 0x8000>;
>> + no-map;
>> + };
>> +
>> + rsc_table: rsc-table@2021e000 {
>
> Can we sort the node in order of unit-address?
Sure. I will move rsc_table to the top in v2.
BR,
Primoz
>
> Shawn
>
>> + reg = <0 0x2021e000 0 0x1000>;
>> + no-map;
>> + };
>> +
>> + vdevbuffer: vdevbuffer@a4020000 {
>> + compatible = "shared-dma-pool";
>> + reg = <0 0xa4020000 0 0x100000>;
>> + no-map;
>> + };
>> + };
>> +};
>> +
>> +&cm33 {
>> + mbox-names = "tx", "rx", "rxdb";
>> + mboxes = <&mu1 0 1>,
>> + <&mu1 1 1>,
>> + <&mu1 3 1>;
>> + memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>,
>> + <&vdev1vring0>, <&vdev1vring1>, <&rsc_table>;
>> + status = "okay";
>> +};
>> +
>> +&mu1 {
>> + status = "okay";
>> +};
>> --
>> 2.34.1
>>
>
--
Primoz Fiser
phone: +386-41-390-545
email: primoz.fiser@norik.com
--
Norik systems d.o.o.
Your embedded software partner
Slovenia, EU
phone: +386-41-540-545
email: info@norik.com
© 2016 - 2026 Red Hat, Inc.