* [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
2026-10-15 14:39 [PATCH v5 0/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
@ 2026-10-15 14:39 ` Frank.Li
2026-10-15 20:08 ` Rob Herring (Arm)
2026-10-15 14:39 ` [PATCH v5 2/3] remoteproc: imx_rpoc: use " Frank.Li
2026-10-15 14:39 ` [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage Frank.Li
2 siblings, 1 reply; 7+ messages in thread
From: Frank.Li @ 2026-10-15 14:39 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan
Cc: linux-remoteproc, devicetree, imx, linux-arm-kernel,
linux-kernel, Laurentiu Mihalcea, Frank Li
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Document the optional memory-region-names property.
The driver currently derives the memory region type from the referenced
memory node name, creating a hidden DT ABI. Since memory node names are
not constrained by the binding, incorrect names can silently pass DT
validation, as seen in examples using "vdevbuffer" instead of
"vdev0buffer" ([1] and [2]).
Add memory-region-names to explicitly identify the expected memory regions
and avoid relying on memory node names as ABI.
Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Use optional property to keep back compatible with old platform.
New platform should use memory-region-names.
---
.../devicetree/bindings/remoteproc/fsl,imx-rproc.yaml | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index c18f71b648890..f87036299a7b6 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -62,6 +62,15 @@ properties:
minItems: 1
maxItems: 32
+ memory-region-names:
+ minItems: 1
+ maxItems: 32
+ items:
+ anyOf:
+ - const: rsc-table
+ - pattern: "^vdev[0-9]+(buffer|vring[0-9]+)$"
+ - pattern: "^m(4|7|33)-reserved(-[a-z0-9-]+)+$"
+
power-domains:
minItems: 2
maxItems: 8
@@ -134,6 +143,7 @@ examples:
imx7d-cm4 {
compatible = "fsl,imx7d-cm4";
memory-region = <&m4_reserved_sysmem1>, <&m4_reserved_sysmem2>;
+ memory-region-names = "m4-reserved-sysmem1", "m4-reserved-sysmem2";
syscon = <&src>;
clocks = <&clks IMX7D_ARM_M4_ROOT_CLK>;
};
@@ -149,6 +159,7 @@ examples:
&mu 1 1
&mu 3 1>;
memory-region = <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
+ memory-region-names = "vdev0buffer", "vdev0vring0", "vdev0vring1", "rsc-table";
syscon = <&src>;
};
...
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document memory-region-names to avoid hidden ABI
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
@ 2026-10-15 20:08 ` Rob Herring (Arm)
0 siblings, 0 replies; 7+ messages in thread
From: Rob Herring (Arm) @ 2026-10-15 20:08 UTC (permalink / raw)
To: Frank.Li
Cc: Bjorn Andersson, Laurentiu Mihalcea, devicetree, Mathieu Poirier,
Pengutronix Kernel Team, Krzysztof Kozlowski, Frank Li,
linux-kernel, Peng Fan, Fabio Estevam, linux-arm-kernel,
linux-remoteproc, Conor Dooley, Sascha Hauer, imx
On Thu, 15 Oct 2026 10:39:22 -0400, Frank.Li@oss.nxp.com wrote:
> From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
>
> Document the optional memory-region-names property.
>
> The driver currently derives the memory region type from the referenced
> memory node name, creating a hidden DT ABI. Since memory node names are
> not constrained by the binding, incorrect names can silently pass DT
> validation, as seen in examples using "vdevbuffer" instead of
> "vdev0buffer" ([1] and [2]).
>
> Add memory-region-names to explicitly identify the expected memory regions
> and avoid relying on memory node names as ABI.
>
> Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
> Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
> Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> Use optional property to keep back compatible with old platform.
> New platform should use memory-region-names.
> ---
> .../devicetree/bindings/remoteproc/fsl,imx-rproc.yaml | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 2/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
2026-10-15 14:39 [PATCH v5 0/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
@ 2026-10-15 14:39 ` Frank.Li
2026-10-15 20:26 ` Francesco Valla
2026-10-15 14:39 ` [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage Frank.Li
2 siblings, 1 reply; 7+ messages in thread
From: Frank.Li @ 2026-10-15 14:39 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan
Cc: linux-remoteproc, devicetree, imx, linux-arm-kernel,
linux-kernel, Laurentiu Mihalcea, Frank Li
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
The driver currently derives the memory region type from the referenced
memory node name, creating a hidden DT ABI. Since memory node names are
not constrained by the binding, incorrect names can silently pass DT
validation, as seen in examples using "vdevbuffer" instead of
"vdev0buffer" ([1] and [2]).
Parse memory-region-names to identify the expected memory regions and avoid
relying on memory node names as ABI.
Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/remoteproc/imx_rproc.c | 13 +++++++++++--
drivers/remoteproc/imx_rproc.h | 21 +++++++++++++++++++++
2 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 581bb07f5893f..63a1a6d87141a 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -648,7 +648,7 @@ static int imx_rproc_prepare(struct rproc *rproc)
int err;
struct resource res;
- err = of_reserved_mem_region_to_resource(np, i++, &res);
+ err = imx_rproc_rmem_to_resource(np, i++, &res);
if (err)
break;
@@ -823,11 +823,20 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
if (nph <= 0)
return 0;
+ if (!of_property_present(np, "memory-region-names")) {
+ dev_warn(dev, "using node names for carveouts should be avoided\n");
+ } else {
+ if (nph != of_property_count_strings(np, "memory-region-names")) {
+ dev_err(dev, "invalid reserved memory name count\n");
+ return -EINVAL;
+ }
+ }
+
/* remap optional addresses */
for (a = 0; a < nph; a++) {
struct resource res;
- err = of_reserved_mem_region_to_resource(np, a, &res);
+ err = imx_rproc_rmem_to_resource(np, a, &res);
if (err) {
dev_err(dev, "unable to resolve memory region\n");
return err;
diff --git a/drivers/remoteproc/imx_rproc.h b/drivers/remoteproc/imx_rproc.h
index 0d7d48352a109..3632bc375c711 100644
--- a/drivers/remoteproc/imx_rproc.h
+++ b/drivers/remoteproc/imx_rproc.h
@@ -7,6 +7,8 @@
#ifndef _IMX_RPROC_H
#define _IMX_RPROC_H
+#include <linux/of_reserved_mem.h>
+
/* address translation table */
struct imx_rproc_att {
u32 da; /* device address (From Cortex M4 view)*/
@@ -45,4 +47,23 @@ struct imx_rproc_dcfg {
u32 reset_vector_mask;
};
+static inline int imx_rproc_rmem_to_resource(struct device_node *np,
+ int index,
+ struct resource *res)
+{
+ int ret;
+
+ ret = of_reserved_mem_region_to_resource(np, index, res);
+ if (ret)
+ return ret;
+
+ /* "memory-region-names" is optional */
+ ret = of_property_read_string_index(np, "memory-region-names",
+ index, &res->name);
+ if (ret == -EINVAL)
+ return 0;
+
+ return ret;
+}
+
#endif /* _IMX_RPROC_H */
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH v5 2/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
2026-10-15 14:39 ` [PATCH v5 2/3] remoteproc: imx_rpoc: use " Frank.Li
@ 2026-10-15 20:26 ` Francesco Valla
2026-10-15 21:22 ` Frank Li
0 siblings, 1 reply; 7+ messages in thread
From: Francesco Valla @ 2026-10-15 20:26 UTC (permalink / raw)
To: Frank.Li
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan,
linux-remoteproc, devicetree, imx, linux-arm-kernel,
linux-kernel, Laurentiu Mihalcea, Frank Li
Hello Frank,
> The driver currently derives the memory region type from the referenced
> memory node name, creating a hidden DT ABI. Since memory node names are
> not constrained by the binding, incorrect names can silently pass DT
> validation, as seen in examples using "vdevbuffer" instead of
> "vdev0buffer" ([1] and [2]).
>
> Parse memory-region-names to identify the expected memory regions and avoid
> relying on memory node names as ABI.
>
> Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
> Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
>
> Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
> Reviewed-by: Peng Fan <peng.fan@nxp.com>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
>
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 745ce52cd822..ce9bdfc1fa98 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -643,7 +643,7 @@ static int imx_rproc_prepare(struct rproc *rproc)
> int err;
> struct resource res;
>
> - err = of_reserved_mem_region_to_resource(np, i++, &res);
> + err = imx_rproc_rmem_to_resource(np, i++, &res);
> if (err)
> break;
>
> @@ -818,11 +818,20 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
> if (nph <= 0)
> return 0;
>
> + if (!of_property_present(np, "memory-region-names")) {
> + dev_warn(dev, "using node names for carveouts should be avoided\n");
> + } else {
> + if (nph != of_property_count_strings(np, "memory-region-names")) {
> + dev_err(dev, "invalid reserved memory name count\n");
> + return -EINVAL;
> + }
> + }
> +
> /* remap optional addresses */
> for (a = 0; a < nph; a++) {
> struct resource res;
>
> - err = of_reserved_mem_region_to_resource(np, a, &res);
> + err = imx_rproc_rmem_to_resource(np, a, &res);
> if (err) {
> dev_err(dev, "unable to resolve memory region\n");
> return err;
> diff --git a/drivers/remoteproc/imx_rproc.h b/drivers/remoteproc/imx_rproc.h
> index 0d7d48352a10..3632bc375c71 100644
> --- a/drivers/remoteproc/imx_rproc.h
> +++ b/drivers/remoteproc/imx_rproc.h
> @@ -7,6 +7,8 @@
> #ifndef _IMX_RPROC_H
> #define _IMX_RPROC_H
>
> +#include <linux/of_reserved_mem.h>
> +
> /* address translation table */
> struct imx_rproc_att {
> u32 da; /* device address (From Cortex M4 view)*/
> @@ -45,4 +47,23 @@ struct imx_rproc_dcfg {
> u32 reset_vector_mask;
> };
>
> +static inline int imx_rproc_rmem_to_resource(struct device_node *np,
> + int index,
> + struct resource *res)
> +{
> + int ret;
> +
> + ret = of_reserved_mem_region_to_resource(np, index, res);
> + if (ret)
> + return ret;
> +
> + /* "memory-region-names" is optional */
> + ret = of_property_read_string_index(np, "memory-region-names",
> + index, &res->name);
> + if (ret == -EINVAL)
> + return 0;
> +
> + return ret;
> +}
> +
Shouldn't this be a regular function in imx_rproc.c instead of being
defined as inline here? Keeping it in the driver source file would
probably make the logic easier to follow, also considering that the
presence of memory-region-names is evaluated there in
imx_rproc_addr_init().
> #endif /* _IMX_RPROC_H */
Regards,
Francesco
--
Francesco Valla <francesco@valla.it>
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH v5 2/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI
2026-10-15 20:26 ` Francesco Valla
@ 2026-10-15 21:22 ` Frank Li
0 siblings, 0 replies; 7+ messages in thread
From: Frank Li @ 2026-10-15 21:22 UTC (permalink / raw)
To: Francesco Valla
Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan,
linux-remoteproc, devicetree, imx, linux-arm-kernel,
linux-kernel, Laurentiu Mihalcea, Frank Li
On Thu, Oct 15, 2026 at 10:26:51PM +0200, Francesco Valla wrote:
> Hello Frank,
>
> > The driver currently derives the memory region type from the referenced
> > memory node name, creating a hidden DT ABI. Since memory node names are
> > not constrained by the binding, incorrect names can silently pass DT
> > validation, as seen in examples using "vdevbuffer" instead of
> > "vdev0buffer" ([1] and [2]).
> >
> > Parse memory-region-names to identify the expected memory regions and avoid
> > relying on memory node names as ABI.
> >
> > Link: https://lore.kernel.org/imx/a3602ef8-2b77-4cc3-adef-2c4cba08a5d9@nabladev.com/ [1]
> > Link: https://lore.kernel.org/imx/alexXTYQHUs76J7v@SMW015318/T/#mb9dc709ff3adc24d9db6d30c973f37b580f6f1f9 [2]
> >
> > Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
> > Reviewed-by: Peng Fan <peng.fan@nxp.com>
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> >
> > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> > index 745ce52cd822..ce9bdfc1fa98 100644
> > --- a/drivers/remoteproc/imx_rproc.c
> > +++ b/drivers/remoteproc/imx_rproc.c
> > @@ -643,7 +643,7 @@ static int imx_rproc_prepare(struct rproc *rproc)
> > int err;
> > struct resource res;
> >
> > - err = of_reserved_mem_region_to_resource(np, i++, &res);
> > + err = imx_rproc_rmem_to_resource(np, i++, &res);
> > if (err)
> > break;
> >
> > @@ -818,11 +818,20 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
> > if (nph <= 0)
> > return 0;
> >
> > + if (!of_property_present(np, "memory-region-names")) {
> > + dev_warn(dev, "using node names for carveouts should be avoided\n");
> > + } else {
> > + if (nph != of_property_count_strings(np, "memory-region-names")) {
> > + dev_err(dev, "invalid reserved memory name count\n");
> > + return -EINVAL;
> > + }
> > + }
> > +
> > /* remap optional addresses */
> > for (a = 0; a < nph; a++) {
> > struct resource res;
> >
> > - err = of_reserved_mem_region_to_resource(np, a, &res);
> > + err = imx_rproc_rmem_to_resource(np, a, &res);
> > if (err) {
> > dev_err(dev, "unable to resolve memory region\n");
> > return err;
> > diff --git a/drivers/remoteproc/imx_rproc.h b/drivers/remoteproc/imx_rproc.h
> > index 0d7d48352a10..3632bc375c71 100644
> > --- a/drivers/remoteproc/imx_rproc.h
> > +++ b/drivers/remoteproc/imx_rproc.h
> > @@ -7,6 +7,8 @@
> > #ifndef _IMX_RPROC_H
> > #define _IMX_RPROC_H
> >
> > +#include <linux/of_reserved_mem.h>
> > +
> > /* address translation table */
> > struct imx_rproc_att {
> > u32 da; /* device address (From Cortex M4 view)*/
> > @@ -45,4 +47,23 @@ struct imx_rproc_dcfg {
> > u32 reset_vector_mask;
> > };
> >
> > +static inline int imx_rproc_rmem_to_resource(struct device_node *np,
> > + int index,
> > + struct resource *res)
> > +{
> > + int ret;
> > +
> > + ret = of_reserved_mem_region_to_resource(np, index, res);
> > + if (ret)
> > + return ret;
> > +
> > + /* "memory-region-names" is optional */
> > + ret = of_property_read_string_index(np, "memory-region-names",
> > + index, &res->name);
> > + if (ret == -EINVAL)
> > + return 0;
> > +
> > + return ret;
> > +}
> > +
>
> Shouldn't this be a regular function in imx_rproc.c instead of being
> defined as inline here?
Yes, will fix at next version.
Frank
> Keeping it in the driver source file would
> probably make the logic easier to follow, also considering that the
> presence of memory-region-names is evaluated there in
> imx_rproc_addr_init().
>
> > #endif /* _IMX_RPROC_H */
>
> Regards,
> Francesco
>
> --
> Francesco Valla <francesco@valla.it>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v5 3/3] arm64: dts: freescale: add DT overlay for MX95-15x15-FRDM RPMSG usage
2026-10-15 14:39 [PATCH v5 0/3] remoteproc: imx_rpoc: use memory-region-names to avoid hidden ABI Frank.Li
2026-10-15 14:39 ` [PATCH v5 1/3] dt-bindings: remoteproc: imx_rproc: document " Frank.Li
2026-10-15 14:39 ` [PATCH v5 2/3] remoteproc: imx_rpoc: use " Frank.Li
@ 2026-10-15 14:39 ` Frank.Li
2 siblings, 0 replies; 7+ messages in thread
From: Frank.Li @ 2026-10-15 14:39 UTC (permalink / raw)
To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Peng Fan
Cc: linux-remoteproc, devicetree, imx, linux-arm-kernel,
linux-kernel, Laurentiu Mihalcea, Frank Li, Daniel Baluta
From: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Add RPMSG DT overlay for the MX95-15x15-FRDM board. This overlay is meant
to be used with the mx95evkrpmsg system manager configuration for
remoteproc and audio over rpmsg-usecases.
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
arch/arm64/boot/dts/freescale/Makefile | 3 +
.../boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso | 81 ++++++++++++++++++++++
2 files changed, 84 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index a80cccf34eb56..f3b19f3b1488e 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -960,6 +960,7 @@ dtb-$(CONFIG_ARCH_MXC) += imx943-evk-mqs.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-ab2.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-frdm.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-frdm-rpmsg.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk-sof.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-frdm-pro.dtb
@@ -984,6 +985,8 @@ dtb-$(CONFIG_ARCH_MXC) += imx95-verdin-wifi-mallow.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-verdin-wifi-yavia.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-verdin-wifi-zinnia.dtb
+imx95-15x15-frdm-rpmsg-dtbs = imx95-15x15-frdm.dtb imx95-15x15-frdm-rpmsg.dtbo
+
imx95-15x15-evk-pcie-dtbs += imx95-15x15-evk.dtb imx-m2-pcie.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-evk-pcie.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso b/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso
new file mode 100644
index 0000000000000..c3deb277edabf
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx95-15x15-frdm-rpmsg.dtso
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2026 NXP
+ *
+ * This DT overlay is meant to be used alongside the mx95evkrpmsg SM
+ * configuration for remoteproc and audio over rpmsg.
+ */
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+ remoteproc-cm7 {
+ compatible = "fsl,imx95-cm7";
+ mboxes = <&mu7 0 1>, <&mu7 1 1>, <&mu7 3 1>;
+ mbox-names = "tx", "rx", "rxdb";
+ memory-region = <&vdev0buffer>,
+ <&vdev0vring0>, <&vdev0vring1>,
+ <&vdev1vring0>, <&vdev1vring1>,
+ <&rsc_table>;
+ memory-region-names = "vdev0buffer",
+ "vdev0vring0", "vdev0vring1",
+ "vdev1vring0", "vdev1vring1",
+ "rsc-table";
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ vdev0vring0: memory@88000000 {
+ reg = <0 0x88000000 0 0x8000>;
+ no-map;
+ };
+
+ vdev0vring1: memory@88008000 {
+ reg = <0 0x88008000 0 0x8000>;
+ no-map;
+ };
+
+ vdev1vring0: memory@88010000 {
+ reg = <0 0x88010000 0 0x8000>;
+ no-map;
+ };
+
+ vdev1vring1: memory@88018000 {
+ reg = <0 0x88018000 0 0x8000>;
+ no-map;
+ };
+
+ vdev0buffer: memory@88020000 {
+ compatible = "shared-dma-pool";
+ reg = <0 0x88020000 0 0x100000>;
+ no-map;
+ };
+
+ rsc_table: memory@88220000 {
+ reg = <0 0x88220000 0 0x1000>;
+ no-map;
+ };
+ };
+
+ sound-micfil {
+ status = "disabled";
+ };
+};
+
+&edma1 {
+ /* reserved for M7 */
+ dma-channel-mask = <0x40>;
+};
+
+&edma2 {
+ /* reserved for M7 and V2X */
+ dma-channel-mask = <0xf>;
+};
+
+&micfil {
+ /* reserved for M7 */
+ status = "reserved";
+};
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread