All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] event: Add fpga load event
@ 2023-07-12 11:39 christian.taedcke-oss
  2023-07-12 14:00 ` Simon Glass
  2023-07-17 10:36 ` Michal Simek
  0 siblings, 2 replies; 5+ messages in thread
From: christian.taedcke-oss @ 2023-07-12 11:39 UTC (permalink / raw)
  To: u-boot; +Cc: Christian Taedcke, Michal Simek, Simon Glass

From: Christian Taedcke <christian.taedcke@weidmueller.com>

This enables implementing custom logic after a bitstream was loaded
into the fpga.

Signed-off-by: Christian Taedcke <christian.taedcke@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
 	 *
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] event: Add fpga load event
  2023-07-12 11:39 [PATCH v3] event: Add fpga load event christian.taedcke-oss
@ 2023-07-12 14:00 ` Simon Glass
  2023-07-17 10:36 ` Michal Simek
  1 sibling, 0 replies; 5+ messages in thread
From: Simon Glass @ 2023-07-12 14:00 UTC (permalink / raw)
  To: christian.taedcke-oss; +Cc: u-boot, Christian Taedcke, Michal Simek

On Wed, 12 Jul 2023 at 05:39, <christian.taedcke-oss@weidmueller.com> wrote:
>
> From: Christian Taedcke <christian.taedcke@weidmueller.com>
>
> This enables implementing custom logic after a bitstream was loaded
> into the fpga.
>
> Signed-off-by: Christian Taedcke <christian.taedcke@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(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] event: Add fpga load event
  2023-07-12 11:39 [PATCH v3] event: Add fpga load event christian.taedcke-oss
  2023-07-12 14:00 ` Simon Glass
@ 2023-07-17 10:36 ` Michal Simek
  2023-07-18 11:22   ` Taedcke, Christian
  1 sibling, 1 reply; 5+ messages in thread
From: Michal Simek @ 2023-07-17 10:36 UTC (permalink / raw)
  To: christian.taedcke-oss, u-boot
  Cc: Christian Taedcke, Michal Simek, Simon Glass



On 7/12/23 13:39, christian.taedcke-oss@weidmueller.com wrote:
> From: Christian Taedcke <christian.taedcke@weidmueller.com>
> 
> This enables implementing custom logic after a bitstream was loaded
> into the fpga.
> 
> Signed-off-by: Christian Taedcke <christian.taedcke@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,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP/Versal ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal/Versal NET SoCs
TF-A maintainer - Xilinx ZynqMP/Versal/Versal NET SoCs

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] event: Add fpga load event
  2023-07-17 10:36 ` Michal Simek
@ 2023-07-18 11:22   ` Taedcke, Christian
  2023-07-19  8:37     ` Michal Simek
  0 siblings, 1 reply; 5+ messages in thread
From: Taedcke, Christian @ 2023-07-18 11:22 UTC (permalink / raw)
  To: Michal Simek, u-boot; +Cc: Christian Taedcke, Michal Simek, Simon Glass

Hello Michal,

On 17.07.2023 12:36, Michal Simek wrote:
> 
> 
> On 7/12/23 13:39, christian.taedcke-oss@weidmueller.com wrote:
>> From: Christian Taedcke <christian.taedcke@weidmueller.com>
>>
>> This enables implementing custom logic after a bitstream was loaded
>> into the fpga.
>>
>> Signed-off-by: Christian Taedcke <christian.taedcke@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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] event: Add fpga load event
  2023-07-18 11:22   ` Taedcke, Christian
@ 2023-07-19  8:37     ` Michal Simek
  0 siblings, 0 replies; 5+ messages in thread
From: Michal Simek @ 2023-07-19  8:37 UTC (permalink / raw)
  To: Taedcke, Christian, Michal Simek, u-boot; +Cc: Christian Taedcke, Simon Glass



On 7/18/23 13:22, Taedcke, Christian wrote:
> Hello Michal,
> 
> On 17.07.2023 12:36, Michal Simek wrote:
>>
>>
>> On 7/12/23 13:39, christian.taedcke-oss@weidmueller.com wrote:
>>> From: Christian Taedcke <christian.taedcke@weidmueller.com>
>>>
>>> This enables implementing custom logic after a bitstream was loaded
>>> into the fpga.
>>>
>>> Signed-off-by: Christian Taedcke <christian.taedcke@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

I think priority is from top to down.
Just try to build that target to see that error first and then try to add 
missing header to fix it.

Thanks,
Michal



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-07-19  8:37 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-12 11:39 [PATCH v3] event: Add fpga load event christian.taedcke-oss
2023-07-12 14:00 ` Simon Glass
2023-07-17 10:36 ` Michal Simek
2023-07-18 11:22   ` Taedcke, Christian
2023-07-19  8:37     ` Michal Simek

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.