summaryrefslogtreecommitdiff
path: root/include/sbi_utils
diff options
context:
space:
mode:
authorAnup Patel <[email protected]>2024-08-06 10:40:46 +0530
committerAnup Patel <[email protected]>2024-12-06 09:26:38 +0530
commit9d760b810e184479c65c2537594beaf4657f02ed (patch)
tree941ff1c2496bd86326b2f4cb9fb361fc7bc043f7 /include/sbi_utils
parentfdd72635368beb5f9c85533b92abb31adee20406 (diff)
lib: utils/fdt: Allow dynamic registration of FDT fixup callbacks
It should possible to fixup FDT from any part of OpenSBI so add fdt_register_general_fixup() which allows dynamic registration of FDT fixup callbacks. Signed-off-by: Anup Patel <[email protected]>
Diffstat (limited to 'include/sbi_utils')
-rw-r--r--include/sbi_utils/fdt/fdt_fixup.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/sbi_utils/fdt/fdt_fixup.h b/include/sbi_utils/fdt/fdt_fixup.h
index 21a53011..93249968 100644
--- a/include/sbi_utils/fdt/fdt_fixup.h
+++ b/include/sbi_utils/fdt/fdt_fixup.h
@@ -9,6 +9,8 @@
#ifndef __FDT_FIXUP_H__
#define __FDT_FIXUP_H__
+#include <sbi/sbi_list.h>
+
struct sbi_cpu_idle_state {
const char *name;
uint32_t suspend_param;
@@ -93,6 +95,19 @@ void fdt_plic_fixup(void *fdt);
*/
int fdt_reserved_memory_fixup(void *fdt);
+/** Representation of a general fixup */
+struct fdt_general_fixup {
+ struct sbi_dlist head;
+ const char *name;
+ void (*do_fixup)(struct fdt_general_fixup *f, void *fdt);
+};
+
+/** Register a general fixup */
+int fdt_register_general_fixup(struct fdt_general_fixup *fixup);
+
+/** UnRegister a general fixup */
+void fdt_unregister_general_fixup(struct fdt_general_fixup *fixup);
+
/**
* General device tree fix-up
*