[PATCH] spl: Add function called after fpga image upload

Taedcke, Christian christian.taedcke-oss at weidmueller.com
Mon Jul 10 15:02:49 CEST 2023


Am 10.07.2023 um 13:41 schrieb Michal Simek:
> 
> 
> On 6/27/23 11:04, christian.taedcke-oss at weidmueller.com wrote:
>> From: Christian Taedcke <christian.taedcke at weidmueller.com>
>>
>> This way custom logic can be implemented per board after the fpga
>> image is uploaded.
> 
> What do you want to do there?

I have 2 use-cases for this:
1. Clear the RAM which contained the bitstream (memset to zero). This 
should happen independed of the result of the upload operation.
2. Control a LED based on the upload result. So in case the upload 
failed, i want to enable some error LED.

One issue is that the return values of spl_fit_load_fpga() or 
spl_fit_upload_fpga() are not evaluated in common/spl
/spl_fit.c. So this error is not propagated to higher layers.

I my use-case uploading the bitstream is mandatory before starting u-boot.

> 
> I expect Simon won't like that it is another weak function.

I did not find another way to implement the above use-cases. Maybe i 
missed something.

> 
>>
>> Signed-off-by: Christian Taedcke <christian.taedcke at weidmueller.com>
>> ---
>>
>>   common/spl/spl_fit.c | 13 +++++++++++++
>>   1 file changed, 13 insertions(+)
>>
>> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
>> index 730639f756..3a1e3382ba 100644
>> --- a/common/spl/spl_fit.c
>> +++ b/common/spl/spl_fit.c
>> @@ -560,6 +560,16 @@ __weak void *spl_load_simple_fit_fix_load(const 
>> void *fit)
>>       return (void *)fit;
>>   }
>> +/*
>> + * Weak default function to allow implementing logic after fpga image is
>> + * uploaded.
>> + */
>> +__weak void board_spl_fit_post_upload_fpga(const void *fit, int node,
>> +                       struct spl_image_info *fpga_image,
>> +                       int ret)
> 
> Would be good to have kernel-doc and curious about ret parameter.
> Also function like this could fail and you should propagate error.

I can add some code documentation for this function. These are the 
parametes from spl_fit_upload_fpga() plus the return value of fpga_load().

My intend is that this function should not affect the result of 
spl_fit_upload_fpga(). It should be just used trigger something based on 
the upload result (parameter ret) or every time (e.g. clear the data 
buffer in ram).

> 
> M

Regards,
Christian


More information about the U-Boot mailing list