summaryrefslogtreecommitdiff
path: root/include/efi_dt_fixup.h
diff options
context:
space:
mode:
authorHeinrich Schuchardt <xypron.glpk@gmx.de>2020-12-13 10:30:24 +0100
committerHeinrich Schuchardt <xypron.glpk@gmx.de>2021-01-13 02:38:01 +0100
commit94686f60a2b9fd87842f473a5cdca316668765c3 (patch)
tree905db732cbefd6c43c31e29d1ed08adc2eeed350 /include/efi_dt_fixup.h
parent48618e9b8b2a09486983a60efc7402f5d136f992 (diff)
efi_loader: implement EFI_DT_FIXUP_PROTOCOL
A boot manager like GRUB can use the protocol to * apply U-Boot's fix-ups to the a device-tree * let U-Boot make memory reservations according to the device-tree * install the device-tree as a configuration table Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Diffstat (limited to 'include/efi_dt_fixup.h')
-rw-r--r--include/efi_dt_fixup.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/efi_dt_fixup.h b/include/efi_dt_fixup.h
new file mode 100644
index 0000000000..9066e8dd8e
--- /dev/null
+++ b/include/efi_dt_fixup.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * EFI_DT_FIXUP_PROTOCOL
+ *
+ * Copyright (c) 2020 Heinrich Schuchardt
+ */
+
+#include <efi_api.h>
+
+#define EFI_DT_FIXUP_PROTOCOL_GUID \
+ EFI_GUID(0xe617d64c, 0xfe08, 0x46da, 0xf4, 0xdc, \
+ 0xbb, 0xd5, 0x87, 0x0c, 0x73, 0x00)
+
+#define EFI_DT_FIXUP_PROTOCOL_REVISION 0x00010000
+
+/* Add nodes and update properties */
+#define EFI_DT_APPLY_FIXUPS 0x00000001
+/*
+ * Reserve memory according to the /reserved-memory node
+ * and the memory reservation block
+ */
+#define EFI_DT_RESERVE_MEMORY 0x00000002
+/* Install the device-tree as configuration table */
+#define EFI_DT_INSTALL_TABLE 0x00000004
+
+#define EFI_DT_ALL (EFI_DT_APPLY_FIXUPS | \
+ EFI_DT_RESERVE_MEMORY | \
+ EFI_DT_INSTALL_TABLE)
+
+struct efi_dt_fixup_protocol {
+ u64 revision;
+ efi_status_t (EFIAPI *fixup) (struct efi_dt_fixup_protocol *this,
+ void *dtb,
+ efi_uintn_t *buffer_size,
+ u32 flags);
+};
+
+extern struct efi_dt_fixup_protocol efi_dt_fixup_prot;
+extern const efi_guid_t efi_guid_dt_fixup_protocol;