1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * EFI_DT_FIXUP_PROTOCOL
4  *
5  * Copyright (c) 2020 Heinrich Schuchardt
6  */
7 
8 #include <efi_api.h>
9 
10 #define EFI_DT_FIXUP_PROTOCOL_GUID \
11 	EFI_GUID(0xe617d64c, 0xfe08, 0x46da, 0xf4, 0xdc, \
12 		 0xbb, 0xd5, 0x87, 0x0c, 0x73, 0x00)
13 
14 #define EFI_DT_FIXUP_PROTOCOL_REVISION 0x00010000
15 
16 /* Add nodes and update properties */
17 #define EFI_DT_APPLY_FIXUPS    0x00000001
18 /*
19  * Reserve memory according to the /reserved-memory node
20  * and the memory reservation block
21  */
22 #define EFI_DT_RESERVE_MEMORY  0x00000002
23 /* Install the device-tree as configuration table */
24 #define EFI_DT_INSTALL_TABLE   0x00000004
25 
26 #define EFI_DT_ALL (EFI_DT_APPLY_FIXUPS | \
27 		    EFI_DT_RESERVE_MEMORY | \
28 		    EFI_DT_INSTALL_TABLE)
29 
30 struct efi_dt_fixup_protocol {
31 	u64 revision;
32 	efi_status_t (EFIAPI *fixup) (struct efi_dt_fixup_protocol *this,
33 				      void *dtb,
34 				      efi_uintn_t *buffer_size,
35 				      u32 flags);
36 };
37 
38 extern struct efi_dt_fixup_protocol efi_dt_fixup_prot;
39 extern const efi_guid_t efi_guid_dt_fixup_protocol;
40