[PATCH v3 6/6] remoteproc: k3-r5: Implement is_running operation
Andrew Davis
afd at ti.com
Tue Nov 11 17:11:55 CET 2025
On 11/11/25 1:16 AM, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker at impulsing.ch>
>
> Add is_running callback to query the R5F core halt status via the
> TI-SCI processor control API. This allows the remoteproc framework
> to determine whether the R5F core is currently runnin.
>
> The core is considered running when the PROC_BOOT_CTRL_FLAG_R5_CORE_HALT
> bit is not set in the control flags.
>
> Signed-off-by: Philippe Schenker <philippe.schenker at impulsing.ch>
>
> ---
>
> Changes in v3:
> - Implemented Andrew's suggestion to assign size before casting for
> memory safety.
> - Added Anshul's Reviewed-by, thanks!
>
> Changes in v2:
> - Made sure there are no build-warnings caused by this series.
>
> drivers/remoteproc/ti_k3_r5f_rproc.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/drivers/remoteproc/ti_k3_r5f_rproc.c b/drivers/remoteproc/ti_k3_r5f_rproc.c
> index c6356729e9db..7326f5a4b30b 100644
> --- a/drivers/remoteproc/ti_k3_r5f_rproc.c
> +++ b/drivers/remoteproc/ti_k3_r5f_rproc.c
> @@ -573,6 +573,22 @@ static void *k3_r5f_da_to_va(struct udevice *dev, ulong da, ulong size, bool *is
> return map_physmem(da, size, MAP_NOCACHE);
> }
>
> +static int k3_r5f_is_running(struct udevice *dev)
> +{
> + struct k3_r5f_core *core = dev_get_priv(dev);
> + u32 cfg, ctrl, sts;
> + u64 boot_vec;
> + int ret;
> +
> + dev_dbg(dev, "%s\n", __func__);
This debug statement doesn't do much other than note when the
function is called, which can be done with other tracing methods.
Either drop it or have it also print something useful like the
status of the core (running / not running).
Other than that LGTM,
Reviewed-by: Andrew Davis <afd at ti.com>
BTW this function would be the same for all the ti_k3_* rproc
drivers, in Linux all these were factored out to common K3 helpers,
might be a good refactor for here in U-Boot also..
> +
> + ret = ti_sci_proc_get_status(&core->tsp, &boot_vec, &cfg, &ctrl, &sts);
> + if (ret)
> + return -1;
> +
> + return !!(ctrl & PROC_BOOT_CTRL_FLAG_R5_CORE_HALT);
> +}
> +
> static int k3_r5f_init(struct udevice *dev)
> {
> return 0;
> @@ -590,6 +606,7 @@ static const struct dm_rproc_ops k3_r5f_rproc_ops = {
> .stop = k3_r5f_stop,
> .load = k3_r5f_load,
> .device_to_virt = k3_r5f_da_to_va,
> + .is_running = k3_r5f_is_running,
> };
>
> static int k3_r5f_rproc_configure(struct k3_r5f_core *core)
More information about the U-Boot
mailing list