[PATCH v3] event: Add fpga load event
Taedcke, Christian
christian.taedcke-oss at weidmueller.com
Tue Jul 18 13:22:10 CEST 2023
Hello Michal,
On 17.07.2023 12:36, Michal Simek wrote:
>
>
> On 7/12/23 13:39, christian.taedcke-oss at weidmueller.com wrote:
>> From: Christian Taedcke <christian.taedcke at weidmueller.com>
>>
>> This enables implementing custom logic after a bitstream was loaded
>> into the fpga.
>>
>> Signed-off-by: Christian Taedcke <christian.taedcke at weidmueller.com>
>> ---
>>
>> Changes in v3:
>> - replace #if with if
>> - remove previously added printf
>> - return notification error from fpga_load()
>> - fix static_assert checking event name list
>>
>> Changes in v2:
>> - replace __weak function with a new event
>>
>> common/event.c | 3 +++
>> drivers/fpga/fpga.c | 20 ++++++++++++++++++++
>> include/event.h | 16 ++++++++++++++++
>> 3 files changed, 39 insertions(+)
>>
>> diff --git a/common/event.c b/common/event.c
>> index 164c95f8f5..20720c5283 100644
>> --- a/common/event.c
>> +++ b/common/event.c
>> @@ -36,6 +36,9 @@ const char *const type_name[] = {
>> /* init hooks */
>> "misc_init_f",
>> + /* Fpga load hook */
>> + "fpga_load",
>> +
>> /* fdt hooks */
>> "ft_fixup",
>> diff --git a/drivers/fpga/fpga.c b/drivers/fpga/fpga.c
>> index 7f6b6bc73a..81e6d8ffc0 100644
>> --- a/drivers/fpga/fpga.c
>> +++ b/drivers/fpga/fpga.c
>> @@ -244,6 +244,21 @@ int fpga_loads(int devnum, const void *buf,
>> size_t size,
>> }
>> #endif
>> +static int fpga_load_event_notify(const void *buf, size_t bsize, int
>> result)
>> +{
>> + if (CONFIG_IS_ENABLED(EVENT)) {
>> + struct event_fpga_load load = {
>> + .buf = buf,
>> + .bsize = bsize,
>> + .result = result
>> + };
>> +
>> + return event_notify(EVT_FPGA_LOAD, &load, sizeof(load));
>> + }
>> +
>> + return 0;
>> +}
>> +
>> /*
>> * Generic multiplexing code
>> */
>> @@ -251,6 +266,7 @@ int fpga_load(int devnum, const void *buf, size_t
>> bsize, bitstream_type bstype,
>> int flags)
>> {
>> int ret_val = FPGA_FAIL; /* assume failure */
>> + int ret_notify;
>> const fpga_desc *desc = fpga_validate(devnum, buf, bsize,
>> (char *)__func__);
>> @@ -284,6 +300,10 @@ int fpga_load(int devnum, const void *buf, size_t
>> bsize, bitstream_type bstype,
>> }
>> }
>> + ret_notify = fpga_load_event_notify(buf, bsize, ret_val);
>> + if (ret_notify)
>> + return ret_notify;
>> +
>> return ret_val;
>> }
>> diff --git a/include/event.h b/include/event.h
>> index fe41080fa6..77124c2e73 100644
>> --- a/include/event.h
>> +++ b/include/event.h
>> @@ -31,6 +31,9 @@ enum event_t {
>> /* Init hooks */
>> EVT_MISC_INIT_F,
>> + /* Fpga load hook */
>> + EVT_FPGA_LOAD,
>> +
>> /* Device tree fixups before booting */
>> EVT_FT_FIXUP,
>> @@ -59,6 +62,19 @@ union event_data {
>> struct udevice *dev;
>> } dm;
>> + /**
>> + * struct event_fpga_load - fpga load event
>> + *
>> + * @buf: The buffer that was loaded into the fpga
>> + * @bsize: The size of the buffer that was loaded into the fpga
>> + * @result: Result of the load operation
>> + */
>> + struct event_fpga_load {
>> + const void *buf;
>> + size_t bsize;
>> + int result;
>> + } fpga_load;
>> +
>> /**
>> * struct event_ft_fixup - FDT fixup before booting
>> *
>
> There is the error generated for kmcent2_defconfig.
>
> Please fix.
>
> For more information please take a look at
>
> https://source.denx.de/u-boot/custodians/u-boot-microblaze/-/jobs/657127
>
> +In file included from board/keymile/kmcent2/kmcent2.c:9:
> +include/event.h:74:17: error: unknown type name 'size_t'
> + 74 | size_t bsize;
> + | ^~~~~~
> +make[2]: *** [scripts/Makefile.build:257:
> board/keymile/kmcent2/kmcent2.o] Error 1
Thanks for pasting the error message here, since i cannot access your link.
Which header should i inlucde before event.h in kmcent2.c (to fix the
error)?
1. common.h seems to be used often, but i only need size_t, or
2. stddef.h seems to be used sometimes, but never in the board folder, or
3. linux/stddef.h seems to be used sometimes, but never in the board folder
>
> Thanks,
> Michal
Regards,
Christian
More information about the U-Boot
mailing list