diff options
author | Beleswar Padhi <b-padhi@ti.com> | 2024-10-01 11:20:42 +0530 |
---|---|---|
committer | Praneeth Bajjuri <praneeth@ti.com> | 2024-10-02 15:08:25 -0500 |
commit | d06fc686122709680291f660eb7dfa99f210a0d7 (patch) | |
tree | d92a021fe1d0982d6ad64cdb9e1cc44199aaf313 | |
parent | 83660642085462346fbeb410f83bc99448ec7042 (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.c | 12 |
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); |