summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHari Nagalla <[email protected]>2025-08-13 16:47:05 -0500
committerTom Rini <[email protected]>2025-08-21 10:02:52 -0600
commit15642829127cd503838f28254a1f3e080103ca4b (patch)
treee3d291b1cc90873b9e967fb6a618227e56ea5021
parent29ce50acbb40d64aabf789640a2866a9f71aefa6 (diff)
remoteproc: k3-r5: Add support for single cpu mode
Add early boot support for AM64 single cpu mode configuration. In single CPU mode the 2nd core of the R5F cluster can't be used or unavailable. Signed-off-by: Hari Nagalla <[email protected]>
-rw-r--r--drivers/remoteproc/ti_k3_r5f_rproc.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/remoteproc/ti_k3_r5f_rproc.c b/drivers/remoteproc/ti_k3_r5f_rproc.c
index 3a25ef6bf87..48401bc6eb6 100644
--- a/drivers/remoteproc/ti_k3_r5f_rproc.c
+++ b/drivers/remoteproc/ti_k3_r5f_rproc.c
@@ -233,7 +233,7 @@ static int k3_r5f_prepare(struct udevice *dev)
dev_dbg(dev, "%s\n", __func__);
- if (cluster->mode == CLUSTER_MODE_LOCKSTEP)
+ if ((cluster->mode == CLUSTER_MODE_LOCKSTEP) || (cluster->mode == CLUSTER_MODE_SINGLECPU))
ret = k3_r5f_lockstep_release(cluster);
else
ret = k3_r5f_split_release(core);
@@ -269,6 +269,13 @@ static int k3_r5f_core_sanity_check(struct k3_r5f_core *core)
return -EINVAL;
}
+ if (cluster->mode == CLUSTER_MODE_SINGLECPU && !is_primary_core(core)) {
+ dev_err(core->dev,
+ "Invalid op: Trying to start secondary core %d in single CPU mode\n",
+ core->tsp.proc_id);
+ return -EINVAL;
+ }
+
if (cluster->mode == CLUSTER_MODE_SPLIT && !is_primary_core(core)) {
if (!core->cluster->cores[0]->in_use) {
dev_err(core->dev,
@@ -768,7 +775,7 @@ static void k3_r5f_core_adjust_tcm_sizes(struct k3_r5f_core *core)
{
struct k3_r5f_cluster *cluster = core->cluster;
- if (cluster->mode == CLUSTER_MODE_LOCKSTEP)
+ if ((cluster->mode == CLUSTER_MODE_LOCKSTEP) || (cluster->mode == CLUSTER_MODE_SINGLECPU))
return;
if (!core->ipdata->tcm_is_double)