]> git.proxmox.com Git - mirror_edk2.git/blob - EmbeddedPkg/Include/Protocol/FdtClient.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / EmbeddedPkg / Include / Protocol / FdtClient.h
1 /** @file
2
3 DISCLAIMER: the FDT_CLIENT_PROTOCOL introduced here is a work in progress,
4 and should not be used outside of the EDK II tree.
5
6 Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
7
8 SPDX-License-Identifier: BSD-2-Clause-Patent
9
10 **/
11
12 #ifndef __FDT_CLIENT_H__
13 #define __FDT_CLIENT_H__
14
15 #define FDT_CLIENT_PROTOCOL_GUID {\
16 0xE11FACA0, 0x4710, 0x4C8E, {0xA7, 0xA2, 0x01, 0xBA, 0xA2, 0x59, 0x1B, 0x4C} \
17 }
18
19 //
20 // Protocol interface structure
21 //
22 typedef struct _FDT_CLIENT_PROTOCOL FDT_CLIENT_PROTOCOL;
23
24 typedef
25 EFI_STATUS
26 (EFIAPI *FDT_CLIENT_GET_NODE_PROPERTY)(
27 IN FDT_CLIENT_PROTOCOL *This,
28 IN INT32 Node,
29 IN CONST CHAR8 *PropertyName,
30 OUT CONST VOID **Prop,
31 OUT UINT32 *PropSize OPTIONAL
32 );
33
34 typedef
35 EFI_STATUS
36 (EFIAPI *FDT_CLIENT_SET_NODE_PROPERTY)(
37 IN FDT_CLIENT_PROTOCOL *This,
38 IN INT32 Node,
39 IN CONST CHAR8 *PropertyName,
40 IN CONST VOID *Prop,
41 IN UINT32 PropSize
42 );
43
44 typedef
45 EFI_STATUS
46 (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE)(
47 IN FDT_CLIENT_PROTOCOL *This,
48 IN CONST CHAR8 *CompatibleString,
49 OUT INT32 *Node
50 );
51
52 typedef
53 EFI_STATUS
54 (EFIAPI *FDT_CLIENT_FIND_NEXT_COMPATIBLE_NODE)(
55 IN FDT_CLIENT_PROTOCOL *This,
56 IN CONST CHAR8 *CompatibleString,
57 IN INT32 PrevNode,
58 OUT INT32 *Node
59 );
60
61 typedef
62 EFI_STATUS
63 (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE_PROPERTY)(
64 IN FDT_CLIENT_PROTOCOL *This,
65 IN CONST CHAR8 *CompatibleString,
66 IN CONST CHAR8 *PropertyName,
67 OUT CONST VOID **Prop,
68 OUT UINT32 *PropSize OPTIONAL
69 );
70
71 typedef
72 EFI_STATUS
73 (EFIAPI *FDT_CLIENT_FIND_COMPATIBLE_NODE_REG)(
74 IN FDT_CLIENT_PROTOCOL *This,
75 IN CONST CHAR8 *CompatibleString,
76 OUT CONST VOID **Reg,
77 OUT UINTN *AddressCells,
78 OUT UINTN *SizeCells,
79 OUT UINT32 *RegSize
80 );
81
82 typedef
83 EFI_STATUS
84 (EFIAPI *FDT_CLIENT_FIND_NEXT_MEMORY_NODE_REG)(
85 IN FDT_CLIENT_PROTOCOL *This,
86 IN INT32 PrevNode,
87 OUT INT32 *Node,
88 OUT CONST VOID **Reg,
89 OUT UINTN *AddressCells,
90 OUT UINTN *SizeCells,
91 OUT UINT32 *RegSize
92 );
93
94 typedef
95 EFI_STATUS
96 (EFIAPI *FDT_CLIENT_FIND_MEMORY_NODE_REG)(
97 IN FDT_CLIENT_PROTOCOL *This,
98 OUT INT32 *Node,
99 OUT CONST VOID **Reg,
100 OUT UINTN *AddressCells,
101 OUT UINTN *SizeCells,
102 OUT UINT32 *RegSize
103 );
104
105 typedef
106 EFI_STATUS
107 (EFIAPI *FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE)(
108 IN FDT_CLIENT_PROTOCOL *This,
109 OUT INT32 *Node
110 );
111
112 struct _FDT_CLIENT_PROTOCOL {
113 FDT_CLIENT_GET_NODE_PROPERTY GetNodeProperty;
114 FDT_CLIENT_SET_NODE_PROPERTY SetNodeProperty;
115
116 FDT_CLIENT_FIND_COMPATIBLE_NODE FindCompatibleNode;
117 FDT_CLIENT_FIND_NEXT_COMPATIBLE_NODE FindNextCompatibleNode;
118 FDT_CLIENT_FIND_COMPATIBLE_NODE_PROPERTY FindCompatibleNodeProperty;
119 FDT_CLIENT_FIND_COMPATIBLE_NODE_REG FindCompatibleNodeReg;
120
121 FDT_CLIENT_FIND_MEMORY_NODE_REG FindMemoryNodeReg;
122 FDT_CLIENT_FIND_NEXT_MEMORY_NODE_REG FindNextMemoryNodeReg;
123
124 FDT_CLIENT_GET_OR_INSERT_CHOSEN_NODE GetOrInsertChosenNode;
125 };
126
127 extern EFI_GUID gFdtClientProtocolGuid;
128
129 #endif