summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeleswar Padhi <b-padhi@ti.com>2024-10-01 11:20:42 +0530
committerPraneeth Bajjuri <praneeth@ti.com>2024-10-02 15:08:25 -0500
commitd06fc686122709680291f660eb7dfa99f210a0d7 (patch)
treed92a021fe1d0982d6ad64cdb9e1cc44199aaf313
parent83660642085462346fbeb410f83bc99448ec7042 (diff)
HACK: remoteproc: k3-r5: Skip IPC on MCU R5F with incompatible SYSFW
With commit 7ca6a3ba66ad ("remoteproc: k3-r5: Shut down MCU R5F Core 1 in split mode on J7 platforms"), MCU R5F Core 1 on J7 platforms is powered on/off via the `ti_sci_proc_set_control()` interface, which differs from the default power control method for other cores: `ti_sci_proc_power_domain_on()`. However, with a Device Manager update after SYSFW v09.02.04, the system hangs while booting when attempting to shut down MCU R5F Core 1 using this new interface. Therefore, as a HACK, IPC functionality is disabled for MCU R5F Core 1 when running any other SYSFW version other than v09.02.04. Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
-rw-r--r--drivers/remoteproc/ti_k3_r5f_rproc.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/remoteproc/ti_k3_r5f_rproc.c b/drivers/remoteproc/ti_k3_r5f_rproc.c
index cf3ab59be91..21e8d174f5a 100644
--- a/drivers/remoteproc/ti_k3_r5f_rproc.c
+++ b/drivers/remoteproc/ti_k3_r5f_rproc.c
@@ -858,9 +858,15 @@ static int k3_r5f_probe(struct udevice *dev)
*/
if (core->ipdata->is_dm_core && !is_primary_core(core) &&
core->cluster->mode == CLUSTER_MODE_SPLIT) {
- dev_dbg(dev, "Core %d is in WFI mode, resetting core to use in split-mode.\n",
- core->tsp.proc_id);
- k3_r5f_stop(core->dev);
+ if (!strstr(core->tsp.sci->version.firmware_description,
+ "v09.02.04"))
+ dev_warn(dev, "IPC on MCU R5F Core 1 requires SYSFW version: v09.02.04, detected version: %s\n",
+ core->tsp.sci->version.firmware_description);
+ else {
+ dev_dbg(dev, "Core %d is in WFI mode, resetting core to use in split-mode.\n",
+ core->tsp.proc_id);
+ k3_r5f_stop(core->dev);
+ }
} else {
dev_info(dev, "Core %d is already in use. No rproc commands work\n",
core->tsp.proc_id);