linux-yocto/drivers/remoteproc
Beleswar Padhi c2a952fb41 remoteproc: k3-r5: Refactor sequential core power up/down operations
[ Upstream commit 701177511a ]

The existing implementation of the waiting mechanism in
"k3_r5_cluster_rproc_init()" waits for the "released_from_reset" flag to
be set as part of the firmware boot process in "k3_r5_rproc_start()".
The "k3_r5_cluster_rproc_init()" function is invoked in the probe
routine which causes unexpected failures in cases where the firmware is
unavailable at boot time, resulting in probe failure and removal of the
remoteproc handles in the sysfs paths.

To address this, the waiting mechanism is refactored out of the probe
routine into the appropriate "k3_r5_rproc_{prepare/unprepare}()"
functions. This allows the probe routine to complete without depending
on firmware booting, while still maintaining the required
power-synchronization between cores.

Further, this wait mechanism is dropped from
"k3_r5_rproc_{start/stop}()" functions as they deal with Core Run/Halt
operations, and as such, there is no constraint in Running or Halting
the cores of a cluster in order.

Fixes: 61f6f68447 ("remoteproc: k3-r5: Wait for core0 power-up before powering up core1")
Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
Tested-by: Judith Mendez <jm@ti.com>
Reviewed-by: Andrew Davis <afd@ti.com>
Link: https://lore.kernel.org/r/20250513054510.3439842-4-b-padhi@ti.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-07-10 16:05:02 +02:00
..
da8xx_remoteproc.c
imx_dsp_rproc.c
imx_rproc.c
imx_rproc.h
ingenic_rproc.c
Kconfig
keystone_remoteproc.c
Makefile
meson_mx_ao_arc.c
mtk_common.h
mtk_scp_ipi.c
mtk_scp.c
omap_remoteproc.c
omap_remoteproc.h
pru_rproc.c
pru_rproc.h
qcom_common.c
qcom_common.h
qcom_pil_info.c
qcom_pil_info.h
qcom_q6v5_adsp.c
qcom_q6v5_mss.c remoteproc: qcom_q6v5_mss: Handle platforms with one power domain 2025-04-10 14:39:19 +02:00
qcom_q6v5_pas.c remoteproc: qcom_q6v5_pas: Use resource with CX PD for MSM8226 2025-04-10 14:39:19 +02:00
qcom_q6v5_wcss.c
qcom_q6v5.c
qcom_q6v5.h
qcom_sysmon.c
qcom_wcnss_iris.c remoteproc: qcom_wcnss_iris: Add missing put_device() on error in probe 2025-06-19 15:32:06 +02:00
qcom_wcnss.c remoteproc: qcom_wcnss: Fix on platforms without fallback regulators 2025-05-29 11:03:14 +02:00
qcom_wcnss.h
rcar_rproc.c
remoteproc_cdev.c
remoteproc_core.c remoteproc: core: Release rproc->clean_table after rproc_attach() fails 2025-06-27 11:11:24 +01:00
remoteproc_coredump.c
remoteproc_debugfs.c
remoteproc_elf_helpers.h
remoteproc_elf_loader.c
remoteproc_internal.h
remoteproc_sysfs.c
remoteproc_virtio.c
st_remoteproc.c
st_slim_rproc.c
stm32_rproc.c
ti_k3_dsp_remoteproc.c remoteproc: k3: Call of_node_put(rmem_np) only once in three functions 2025-07-10 16:05:01 +02:00
ti_k3_m4_remoteproc.c remoteproc: k3: Call of_node_put(rmem_np) only once in three functions 2025-07-10 16:05:01 +02:00
ti_k3_r5_remoteproc.c remoteproc: k3-r5: Refactor sequential core power up/down operations 2025-07-10 16:05:02 +02:00
ti_sci_proc.h
wkup_m3_rproc.c
xlnx_r5_remoteproc.c