* [PATCH v3 0/4] remoteproc: add Cortex-A Core remoteproc support on i.MX platforms
@ 2026-05-11 2:39 Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 1/4] dt-bindings: remoteproc: add imx-rproc-psci Jiafei Pan
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Jiafei Pan @ 2026-05-11 2:39 UTC (permalink / raw)
To: andersson, mathieu.poirier, peng.fan, Frank.Li, s.hauer, kernel,
festevam, imx, linux-arm-kernel, linux-kernel
Cc: Zhiqiang.Hou, mingkai.hu, linux-remoteproc, devicetree,
Jiafei Pan
This patch series is to add remoteproc support on Cortex-A Core of i.MX platforms:
1. Adding dts binding for Cortex-A Core remoteproc
2. Enable Cortex-A Core remoteproc support in remoteproc driver
3. Adding dts example on imx93 platforms.
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
---
Changes in v3:
- Fixed dt_binding_check warnings
- Updated prefix of patch subject
Changes in v2:
- Update arch/arm64/boot/dts/freescale/Makefile to add new dts
---
Hou Zhiqiang (1):
remoteproc: imx_rproc: add autoboot support for A-core
Jiafei Pan (3):
dt-bindings: remoteproc: add imx-rproc-psci
remoteproc: imx_rproc: add support for Cortex-A Core
arm64: dts: imx93: Cortex-A Core remoteproc device node
.../remoteproc/fsl,imx-rproc-psci.yaml | 51 ++++++
arch/arm64/boot/dts/freescale/Makefile | 2 +
.../imx93-11x11-evk-multicore-rtos.dts | 39 +++++
.../imx93-14x14-evk-multicore-rtos.dts | 39 +++++
.../boot/dts/freescale/imx93-rproc-ca55.dtsi | 14 ++
drivers/remoteproc/imx_rproc.c | 150 ++++++++++++++++++
drivers/remoteproc/imx_rproc.h | 2 +
7 files changed, 297 insertions(+)
create mode 100644 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc-psci.yaml
create mode 100644 arch/arm64/boot/dts/freescale/imx93-11x11-evk-multicore-rtos.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx93-14x14-evk-multicore-rtos.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx93-rproc-ca55.dtsi
--
2.43.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/4] dt-bindings: remoteproc: add imx-rproc-psci
2026-05-11 2:39 [PATCH v3 0/4] remoteproc: add Cortex-A Core remoteproc support on i.MX platforms Jiafei Pan
@ 2026-05-11 2:39 ` Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 2/4] remoteproc: imx_rproc: add support for Cortex-A Core Jiafei Pan
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Jiafei Pan @ 2026-05-11 2:39 UTC (permalink / raw)
To: andersson, mathieu.poirier, peng.fan, Frank.Li, s.hauer, kernel,
festevam, imx, linux-arm-kernel, linux-kernel
Cc: Zhiqiang.Hou, mingkai.hu, linux-remoteproc, devicetree,
Jiafei Pan
Add compatible string "fsl,imx-rproc-psci" for i.MX Cortex-A Core's
remoteproc support.
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
---
Changes in v3:
- Fixed dt_binding_check warnings
---
.../remoteproc/fsl,imx-rproc-psci.yaml | 51 +++++++++++++++++++
1 file changed, 51 insertions(+)
create mode 100644 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc-psci.yaml
diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc-psci.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc-psci.yaml
new file mode 100644
index 000000000000..28d00dbf8bc7
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc-psci.yaml
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/fsl,imx-rproc-psci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP i.MX Cortex-A Core Remote Processor via PSCI
+
+maintainers:
+ - Jiafei Pan <Jiafei.Pan@nxp.com>
+
+description:
+ This binding provides support for managing Cortex-A cores as remote
+ processors on i.MX platforms using the PSCI (Power State Coordination
+ Interface) for CPU power management operations. This allows single
+ Cortex-A core or multiple Cortex-A cores to be controlled by Linux as
+ a remote processor, enabling them to run RTOS or bare-metal applications.
+
+properties:
+ compatible:
+ const: fsl,imx-rproc-psci
+
+ fsl,cpus-mask:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Bitmask indicating which CPU cores are assigned to this remote
+ processor instance. Each bit represents a CPU core, where bit N
+ corresponds to CPU N. For example, 0x2 (0b10) assigns CPU core 1,
+ while 0x6 (0b110) assigns CPU cores 1 and 2.
+
+ memory-region:
+ maxItems: 1
+ description:
+ Phandle to a reserved memory region to be used for the remote
+ processor's code and data.
+
+required:
+ - compatible
+ - fsl,cpus-mask
+ - memory-region
+
+additionalProperties: false
+
+examples:
+ - |
+ remoteproc-ca55-1 {
+ compatible = "fsl,imx-rproc-psci";
+ /* bitmask: 0b10, assign A55 Core 1 */
+ fsl,cpus-mask = <0x2>;
+ memory-region = <&rtos_ca55_reserved>;
+ };
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 2/4] remoteproc: imx_rproc: add support for Cortex-A Core
2026-05-11 2:39 [PATCH v3 0/4] remoteproc: add Cortex-A Core remoteproc support on i.MX platforms Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 1/4] dt-bindings: remoteproc: add imx-rproc-psci Jiafei Pan
@ 2026-05-11 2:39 ` Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 3/4] remoteproc: imx_rproc: add autoboot support for A-core Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 4/4] arm64: dts: imx93: Cortex-A Core remoteproc device node Jiafei Pan
3 siblings, 0 replies; 5+ messages in thread
From: Jiafei Pan @ 2026-05-11 2:39 UTC (permalink / raw)
To: andersson, mathieu.poirier, peng.fan, Frank.Li, s.hauer, kernel,
festevam, imx, linux-arm-kernel, linux-kernel
Cc: Zhiqiang.Hou, mingkai.hu, linux-remoteproc, devicetree,
Jiafei Pan
Add Cortex-A Core remoteproc support, it use PSCI and SIP SMC call
to manage Cortex-A Core to be on or off.
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
---
Changes in v3:
- Updated prefix of patch subject
---
drivers/remoteproc/imx_rproc.c | 134 +++++++++++++++++++++++++++++++++
drivers/remoteproc/imx_rproc.h | 2 +
2 files changed, 136 insertions(+)
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 0dd80e688b0e..8a3de27c96b7 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -6,6 +6,7 @@
#include <dt-bindings/firmware/imx/rsrc.h>
#include <linux/arm-smccc.h>
#include <linux/clk.h>
+#include <linux/cpu.h>
#include <linux/err.h>
#include <linux/firmware/imx/sci.h>
#include <linux/firmware/imx/sm.h>
@@ -20,12 +21,17 @@
#include <linux/platform_device.h>
#include <linux/pm_domain.h>
#include <linux/pm_runtime.h>
+#include <linux/psci.h>
#include <linux/reboot.h>
#include <linux/regmap.h>
#include <linux/remoteproc.h>
#include <linux/scmi_imx_protocol.h>
#include <linux/workqueue.h>
+#include <uapi/linux/psci.h>
+
+#include <asm/smp_plat.h>
+
#include "imx_rproc.h"
#include "remoteproc_internal.h"
@@ -72,6 +78,8 @@
#define IMX_SIP_RPROC_STARTED 0x01
#define IMX_SIP_RPROC_STOP 0x02
+#define IMX_SIP_CPU_OFF 0xC2000012
+
#define IMX_SC_IRQ_GROUP_REBOOTED 5
/**
@@ -131,6 +139,9 @@ struct imx_rproc {
* BIT 0: IMX_RPROC_FLAGS_SM_LMM_CTRL(RPROC LM is under Linux control )
*/
u32 flags;
+ /* used by Cortex-A Core remoteproc to manage all CPU Cores */
+ cpumask_t cpus;
+ cpumask_t offlined_cpus;
};
static const struct imx_rproc_att imx_rproc_att_imx95_m7[] = {
@@ -381,6 +392,45 @@ static int imx_rproc_sm_lmm_start(struct rproc *rproc)
return 0;
}
+static int imx_rproc_psci_start(struct rproc *rproc)
+{
+ struct imx_rproc *priv = rproc->priv;
+ struct device *dev = priv->dev;
+ unsigned int cpu;
+ int ret;
+
+ if (cpumask_empty(&priv->cpus)) {
+ dev_err(dev, "No CPU Core assigned!\n");
+ return -ENODEV;
+ }
+
+ for_each_cpu(cpu, &priv->cpus) {
+ if (cpu_online(cpu)) {
+ ret = remove_cpu(cpu);
+ if (ret)
+ goto err;
+ cpumask_set_cpu(cpu, &priv->offlined_cpus);
+ }
+ }
+
+ cpu = cpumask_first(&priv->cpus);
+ ret = psci_ops.cpu_on(cpu_logical_map(cpu), rproc->bootaddr);
+ if (ret) {
+ dev_err(dev, "Boot failed on CPU Core %d\n", cpu);
+ goto err;
+ }
+
+ return 0;
+
+err:
+ for_each_cpu(cpu, &priv->cpus) {
+ if (!cpu_online(cpu) && add_cpu(cpu) == 0)
+ cpumask_clear_cpu(cpu, &priv->offlined_cpus);
+ }
+
+ return ret;
+}
+
static int imx_rproc_start(struct rproc *rproc)
{
struct imx_rproc *priv = rproc->priv;
@@ -456,6 +506,50 @@ static int imx_rproc_sm_lmm_stop(struct rproc *rproc)
return scmi_imx_lmm_operation(dcfg->lmid, SCMI_IMX_LMM_SHUTDOWN, 0);
}
+static int imx_rproc_psci_stop(struct rproc *rproc)
+{
+ struct imx_rproc *priv = rproc->priv;
+ struct device *dev = priv->dev;
+ struct arm_smccc_res res;
+ unsigned int cpu;
+ unsigned long start, end;
+ int err;
+
+ for_each_cpu(cpu, &priv->cpus) {
+ /* Check CPU status */
+ err = psci_ops.affinity_info(cpu_logical_map(cpu), 0);
+ if (err == PSCI_0_2_AFFINITY_LEVEL_OFF)
+ continue;
+
+ /* Bring CPU to be off */
+ arm_smccc_smc(IMX_SIP_CPU_OFF, cpu, 0,
+ 0, 0, 0, 0, 0, &res);
+ start = jiffies;
+ end = start + msecs_to_jiffies(100);
+ do {
+ err = psci_ops.affinity_info(cpu_logical_map(cpu), 0);
+ if (err == PSCI_0_2_AFFINITY_LEVEL_OFF) {
+ pr_info("CPU%d is killed (polled %d ms)\n", cpu,
+ jiffies_to_msecs(jiffies - start));
+ break;
+ }
+
+ usleep_range(100, 1000);
+ } while (time_before(jiffies, end));
+ }
+
+ /* Return back freed CPU Core to Linux kernel */
+ for_each_cpu(cpu, &priv->cpus) {
+ if (cpumask_test_cpu(cpu, &priv->offlined_cpus)) {
+ if (add_cpu(cpu) != 0)
+ dev_err(dev, "Failed to bring CPU %d back to be online", cpu);
+ cpumask_clear_cpu(cpu, &priv->offlined_cpus);
+ }
+ }
+
+ return 0;
+}
+
static int imx_rproc_stop(struct rproc *rproc)
{
struct imx_rproc *priv = rproc->priv;
@@ -480,6 +574,12 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da,
const struct imx_rproc_dcfg *dcfg = priv->dcfg;
int i;
+ /* No need to translate for Cortex-A Core */
+ if (dcfg->flags & IMX_RPROC_NO_ADDR_TRANS) {
+ *sys = da;
+ return 0;
+ }
+
/* parse address translation table */
for (i = 0; i < dcfg->att_size; i++) {
const struct imx_rproc_att *att = &dcfg->att[i];
@@ -1184,6 +1284,13 @@ static int imx_rproc_sm_detect_mode(struct rproc *rproc)
return imx_rproc_sm_lmm_check(rproc, started);
}
+static int imx_rproc_psci_detect_mode(struct rproc *rproc)
+{
+ rproc->state = RPROC_OFFLINE;
+
+ return 0;
+}
+
static int imx_rproc_detect_mode(struct imx_rproc *priv)
{
/*
@@ -1228,6 +1335,8 @@ static int imx_rproc_probe(struct platform_device *pdev)
struct imx_rproc *priv;
struct rproc *rproc;
const struct imx_rproc_dcfg *dcfg;
+ unsigned int cpus;
+ unsigned long cpus_bits;
int ret;
/* set some other name then imx */
@@ -1274,6 +1383,17 @@ static int imx_rproc_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(dev, ret, "failed on imx_rproc_addr_init\n");
+ ret = of_property_read_u32(dev->of_node, "fsl,cpus-bits", &cpus);
+ if (ret) {
+ cpumask_clear(&priv->cpus);
+ } else {
+ cpus_bits = cpus;
+ bitmap_copy(cpumask_bits(&priv->cpus), &cpus_bits,
+ min((unsigned int)nr_cpumask_bits,
+ (unsigned int)sizeof(unsigned long)));
+ rproc->auto_boot = false;
+ }
+
ret = imx_rproc_detect_mode(priv);
if (ret)
return dev_err_probe(dev, ret, "failed on detect mode\n");
@@ -1372,6 +1492,12 @@ static const struct imx_rproc_plat_ops imx_rproc_ops_sm_cpu = {
.stop = imx_rproc_sm_cpu_stop,
};
+static const struct imx_rproc_plat_ops imx_rproc_ops_psci = {
+ .start = imx_rproc_psci_start,
+ .stop = imx_rproc_psci_stop,
+ .detect_mode = imx_rproc_psci_detect_mode,
+};
+
static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mn_mmio = {
.src_reg = IMX7D_SRC_SCR,
.src_mask = IMX7D_M4_RST_MASK,
@@ -1464,6 +1590,13 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx95_m7 = {
.lmid = 1, /* Use 1 as Logical Machine ID where M7 resides */
};
+static const struct imx_rproc_dcfg imx_rproc_cfg_psci = {
+ .att = NULL,
+ .att_size = 0,
+ .ops = &imx_rproc_ops_psci,
+ .flags = IMX_RPROC_NO_ADDR_TRANS,
+};
+
static const struct of_device_id imx_rproc_of_match[] = {
{ .compatible = "fsl,imx7ulp-cm4", .data = &imx_rproc_cfg_imx7ulp },
{ .compatible = "fsl,imx7d-cm4", .data = &imx_rproc_cfg_imx7d },
@@ -1479,6 +1612,7 @@ static const struct of_device_id imx_rproc_of_match[] = {
{ .compatible = "fsl,imx8ulp-cm33", .data = &imx_rproc_cfg_imx8ulp },
{ .compatible = "fsl,imx93-cm33", .data = &imx_rproc_cfg_imx93 },
{ .compatible = "fsl,imx95-cm7", .data = &imx_rproc_cfg_imx95_m7 },
+ { .compatible = "fsl,imx-rproc-psci", .data = &imx_rproc_cfg_psci },
{},
};
MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
diff --git a/drivers/remoteproc/imx_rproc.h b/drivers/remoteproc/imx_rproc.h
index d37e6f90548c..be6709971042 100644
--- a/drivers/remoteproc/imx_rproc.h
+++ b/drivers/remoteproc/imx_rproc.h
@@ -18,6 +18,8 @@ struct imx_rproc_att {
/* dcfg flags */
#define IMX_RPROC_NEED_SYSTEM_OFF BIT(0)
#define IMX_RPROC_NEED_CLKS BIT(1)
+/* No need address translation */
+#define IMX_RPROC_NO_ADDR_TRANS BIT(2)
struct imx_rproc_plat_ops {
int (*start)(struct rproc *rproc);
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 3/4] remoteproc: imx_rproc: add autoboot support for A-core
2026-05-11 2:39 [PATCH v3 0/4] remoteproc: add Cortex-A Core remoteproc support on i.MX platforms Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 1/4] dt-bindings: remoteproc: add imx-rproc-psci Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 2/4] remoteproc: imx_rproc: add support for Cortex-A Core Jiafei Pan
@ 2026-05-11 2:39 ` Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 4/4] arm64: dts: imx93: Cortex-A Core remoteproc device node Jiafei Pan
3 siblings, 0 replies; 5+ messages in thread
From: Jiafei Pan @ 2026-05-11 2:39 UTC (permalink / raw)
To: andersson, mathieu.poirier, peng.fan, Frank.Li, s.hauer, kernel,
festevam, imx, linux-arm-kernel, linux-kernel
Cc: Zhiqiang.Hou, mingkai.hu, linux-remoteproc, devicetree,
Jiafei Pan
From: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
Add autoboot support for Cortex-A Core remoteproc.
Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
---
Changes in v3:
- Added my signed-of-by.
---
drivers/remoteproc/imx_rproc.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 8a3de27c96b7..e8d239bef5c9 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -1286,7 +1286,24 @@ static int imx_rproc_sm_detect_mode(struct rproc *rproc)
static int imx_rproc_psci_detect_mode(struct rproc *rproc)
{
- rproc->state = RPROC_OFFLINE;
+ struct imx_rproc *priv = rproc->priv;
+ unsigned int cpu;
+ int cpu_aff;
+
+ rproc->state = RPROC_DETACHED;
+ for_each_cpu(cpu, &priv->cpus) {
+ cpu_aff = psci_ops.affinity_info(cpu_logical_map(cpu), 0);
+ if (cpu_aff == PSCI_0_2_AFFINITY_LEVEL_OFF) {
+ rproc->state = RPROC_OFFLINE;
+ break;
+ }
+
+ /* in psci on state but running Linux */
+ if (cpu_online(cpu)) {
+ rproc->state = RPROC_OFFLINE;
+ break;
+ }
+ }
return 0;
}
@@ -1391,7 +1408,6 @@ static int imx_rproc_probe(struct platform_device *pdev)
bitmap_copy(cpumask_bits(&priv->cpus), &cpus_bits,
min((unsigned int)nr_cpumask_bits,
(unsigned int)sizeof(unsigned long)));
- rproc->auto_boot = false;
}
ret = imx_rproc_detect_mode(priv);
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 4/4] arm64: dts: imx93: Cortex-A Core remoteproc device node
2026-05-11 2:39 [PATCH v3 0/4] remoteproc: add Cortex-A Core remoteproc support on i.MX platforms Jiafei Pan
` (2 preceding siblings ...)
2026-05-11 2:39 ` [PATCH v3 3/4] remoteproc: imx_rproc: add autoboot support for A-core Jiafei Pan
@ 2026-05-11 2:39 ` Jiafei Pan
3 siblings, 0 replies; 5+ messages in thread
From: Jiafei Pan @ 2026-05-11 2:39 UTC (permalink / raw)
To: andersson, mathieu.poirier, peng.fan, Frank.Li, s.hauer, kernel,
festevam, imx, linux-arm-kernel, linux-kernel
Cc: Zhiqiang.Hou, mingkai.hu, linux-remoteproc, devicetree,
Jiafei Pan
Create device tree for i.MX93 14x14 evk and 11x11 evk, add Cortex-A Core
remoteproc device nodes in these device tree.
Signed-off-by: Jiafei Pan <Jiafei.Pan@nxp.com>
Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
---
arch/arm64/boot/dts/freescale/Makefile | 2 +
.../imx93-11x11-evk-multicore-rtos.dts | 39 +++++++++++++++++++
.../imx93-14x14-evk-multicore-rtos.dts | 39 +++++++++++++++++++
.../boot/dts/freescale/imx93-rproc-ca55.dtsi | 14 +++++++
4 files changed, 94 insertions(+)
create mode 100644 arch/arm64/boot/dts/freescale/imx93-11x11-evk-multicore-rtos.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx93-14x14-evk-multicore-rtos.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx93-rproc-ca55.dtsi
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 711e36cc2c99..f067e5c44dae 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -460,12 +460,14 @@ dtb-$(CONFIG_ARCH_MXC) += imx93-9x9-qsb-i3c.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-9x9-qsb-ontat-kd50g21-40nt-a1.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-11x11-evk.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx93-11x11-evk-multicore-rtos.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-11x11-frdm.dtb
imx93-11x11-frdm-pixpaper-dtbs += imx93-11x11-frdm.dtb imx93-11x11-frdm-pixpaper.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx93-11x11-frdm-pixpaper.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-14x14-evk.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx93-14x14-evk-multicore-rtos.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
diff --git a/arch/arm64/boot/dts/freescale/imx93-11x11-evk-multicore-rtos.dts b/arch/arm64/boot/dts/freescale/imx93-11x11-evk-multicore-rtos.dts
new file mode 100644
index 000000000000..9fb2b94b83b4
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx93-11x11-evk-multicore-rtos.dts
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2023-2026 NXP
+ */
+
+/dts-v1/;
+#include "imx93-11x11-evk.dts"
+#include "imx93-rproc-ca55.dtsi"
+
+/ {
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ /*
+ * Reserve up to 16MB for one possible RTOS instances running on
+ * one Cortex-A Cores when booting Linux on at least one Cortex-A Core.
+ */
+ rtos_ca55_reserved: rtos-ca55@d0000000 {
+ no-map;
+ reg = <0 0xd0000000 0x0 0x1000000>;
+ };
+
+ /* Reserve 16MB for FreeRTOS on M33 */
+ m33_reserved: m33@a5000000 {
+ no-map;
+ reg = <0 0xa5000000 0 0x1000000>;
+ };
+ };
+};
+
+&lpuart2 {
+ status = "disabled";
+};
+
+&clk {
+ init-on-array = <IMX93_CLK_LPUART2_GATE>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx93-14x14-evk-multicore-rtos.dts b/arch/arm64/boot/dts/freescale/imx93-14x14-evk-multicore-rtos.dts
new file mode 100644
index 000000000000..b2481bf19b4a
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx93-14x14-evk-multicore-rtos.dts
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2024-2026 NXP
+ */
+
+/dts-v1/;
+#include "imx93-14x14-evk.dts"
+#include "imx93-rproc-ca55.dtsi"
+
+/ {
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ /*
+ * Reserve up to 16MB for one possible RTOS instances running on
+ * one Cortex-A Cores when booting Linux on at least one Cortex-A Core.
+ */
+ rtos_ca55_reserved: rtos-ca55@d0000000 {
+ no-map;
+ reg = <0 0xd0000000 0x0 0x1000000>;
+ };
+
+ /* Reserve 16MB for FreeRTOS on M33 */
+ m33_reserved: m33@a5000000 {
+ no-map;
+ reg = <0 0xa5000000 0 0x1000000>;
+ };
+ };
+};
+
+&lpuart2 {
+ status = "disabled";
+};
+
+&clk {
+ init-on-array = <IMX93_CLK_LPUART2_GATE>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx93-rproc-ca55.dtsi b/arch/arm64/boot/dts/freescale/imx93-rproc-ca55.dtsi
new file mode 100644
index 000000000000..549a9e762d6a
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx93-rproc-ca55.dtsi
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2024-2026 NXP
+ */
+
+/ {
+ ca55_1: remoteproc-ca55-1 {
+ compatible = "fsl,imx-rproc-psci";
+ /* bitmask:0b10, assign A55 Core 1 */
+ fsl,cpus-mask = <0x2>;
+ memory-region = <&rtos_ca55_reserved>;
+ };
+};
+
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-05-11 2:37 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-11 2:39 [PATCH v3 0/4] remoteproc: add Cortex-A Core remoteproc support on i.MX platforms Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 1/4] dt-bindings: remoteproc: add imx-rproc-psci Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 2/4] remoteproc: imx_rproc: add support for Cortex-A Core Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 3/4] remoteproc: imx_rproc: add autoboot support for A-core Jiafei Pan
2026-05-11 2:39 ` [PATCH v3 4/4] arm64: dts: imx93: Cortex-A Core remoteproc device node Jiafei Pan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox