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