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-...@weidmueller.com wrote:
From: Christian Taedcke <christian.taed...@weidmueller.com>

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

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


Reply via email to