[PATCH v3 6/6] remoteproc: k3-r5: Implement is_running operation

Andrew Davis afd at ti.com
Wed Nov 12 19:39:24 CET 2025


On 11/12/25 7:49 AM, Philippe Schenker wrote:
> 
> 
> On Tue, 2025-11-11 at 10:11 -0600, Andrew Davis wrote:
>> 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).
> 
> Hi Andrew, and thanks for also looking at this patch! I actually put
> that dev_dbg() there to be in line with all the other functions in this
> file. They all have this.
> 
> I'll keep it for consistency with the existing functions, but I agree
> these could all be cleaned up in a future refactoring patch.
> 

Fair enough

>>
>> 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..
> 
> Thanks! Good to know, if I touch it again I can refactor those common
> functions out like on kernel.
> 

No worries, my comment was more a hint to either Beleswar or Hari,
I'm not expecting you to cleanup our driver for us :)

Andrew

> Philippe
> 
>>> +
>>> + 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