[PATCH v2 0/3] Rework TI K3 R5F remoteproc driver
From: Beleswar Padhi
Date: Wed Jan 08 2025 - 01:37:57 EST
This series cleans up the TI R5F remoteproc driver by addressing various bugs.
This is also the second series as part of the refactoring of K3 remoteproc
drivers[0]. The third and final series for K3 Refactoring is also posted[1]
which deals with the TI DSP and TI M4 drivers. The R5F driver takes care of
configuring dual core R5Fs in Lockstep/Split mode and therefore has worked out
separate data structures & reset logic than the DSP/M4 drivers which deal with
single core CPUs. Therefore, I have excluded R5F driver from the common
refactoring in the final series[1].
NOTE:
This series is _dependent_ upon the below series which does devm_ cleanup
[Now merged in rproc-next/linux-next].
https://lore.kernel.org/all/20241219110545.1898883-1-b-padhi@xxxxxx/
Bugs fixed in this series:
1. Fixed IPC-Only mode attach for R5F cores. PATCH #1
2. Fixed IPC-Only mode attach for DSP cores. (Included in this series, as this
was related to point 1 and fix is similar) PATCH #2
3. Fixed support to load firmware from userspace by refactoring wait mechanism
logic into prepare()/start() ops. PATCH #3
Testing Done:
1. Tested boot of R5F remoteprocs in MCU and MAIN voltage domain in both
IPC-Only mode and Kernel remoteproc mode in all Jacinto K3 (j7*) devices.
2. Tested Lockstep, Split and Single-CPU Mode configuration (wherever
applicable) of R5F remoteprocs in all Jacinto K3 (j7*) devices.
3. Tested shutdown of R5F remoteprocs from Linux userspace and also by
executing `modprobe -r ti_k3_r5_remoteproc`.
4. Tested usecases where firmware not available at Kernel boot time, but later
in sysfs, able to load firmware into a remotecore and start it.
5. Tested that each patch in this series generates no new warnings/errors.
Exception: Using the "wait_event_interruptible_timeout" macro in PATCH #3 raises
a -Wshadow warning, which is expected as it is called out in the implementation
of the macro itself[2].
v2: Changelog:
1. Changed variable name "is_attach_ongoing" to "is_attached" in PATCH #1 and
PATCH #2. [Udit]
2. Triggered wakeup event signal only for core0 in .prepare(), and only for
core1 in .unprepare() in PATCH #3. [Udit]
3. Carried Reviewed-by tags from v1 of the series.
Link to v1:
https://lore.kernel.org/all/20241224091457.1050233-1-b-padhi@xxxxxx/
Thanks,
Beleswar
[0]: https://lore.kernel.org/all/20241219110545.1898883-1-b-padhi@xxxxxx/
[1]: https://lore.kernel.org/all/20250103101231.1508151-1-b-padhi@xxxxxx/
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/include/linux/wait.h#n289
Beleswar Padhi (3):
remoteproc: k3-r5: Fix checks in k3_r5_rproc_{mbox_callback/kick}
remoteproc: k3-dsp: Fix checks in k3_dsp_rproc_{mbox_callback/kick}
remoteproc: k3-r5: Refactor sequential core power up/down operations
drivers/remoteproc/ti_k3_dsp_remoteproc.c | 63 ++++++--
drivers/remoteproc/ti_k3_r5_remoteproc.c | 179 ++++++++++++++--------
2 files changed, 161 insertions(+), 81 deletions(-)
--
2.34.1