@@ -181,7 +181,16 @@ typedef struct {
181181
182182#define FdtGetHeader (Fdt , Field ) \
183183 (Fdt32ToCpu (((const FDT_HEADER *)(Fdt))->Field))
184- #define FdtTotalSize (Fdt ) (FdtGetHeader ((Fdt), TotalSize))
184+ #define FdtMagic (Fdt ) (FdtGetHeader ((Fdt), Magic))
185+ #define FdtTotalSize (Fdt ) (FdtGetHeader ((Fdt), TotalSize))
186+ #define FdtOffsetDtStruct (Fdt ) (FdtGetHeader ((Fdt), OffsetDtStruct))
187+ #define FdtOffsetDtStrings (Fdt ) (FdtGetHeader ((Fdt), OffsetDtStrings))
188+ #define FdtOffsetMemRsvmap (Fdt ) (FdtGetHeader ((Fdt), OffsetMemRsvmap))
189+ #define FdtVersion (Fdt ) (FdtGetHeader ((Fdt), Version))
190+ #define FdtLastCompVersion (Fdt ) (FdtGetHeader ((Fdt), LastCompVersion))
191+ #define FdtBootCpuidPhys (Fdt ) (FdtGetHeader ((Fdt), BootCpuidPhys))
192+ #define FdtSizeDtStrings (Fdt ) (FdtGetHeader ((Fdt), SizeDtStrings))
193+ #define FdtSizeDtStruct (Fdt ) (FdtGetHeader ((Fdt), SizeDtStruct))
185194
186195#define FdtForEachSubnode (Node , Fdt , Parent ) \
187196 for (Node = FdtFirstSubnode (Fdt, Parent); \
@@ -191,6 +200,9 @@ typedef struct {
191200#define FdtSetPropString (Fdt , NodeOffset , Name , String ) \
192201 FdtSetProp ((Fdt), (NodeOffset), (Name), (String), AsciiStrLen (String) + 1)
193202
203+ #define FdtSetPropEmpty (Fdt , NodeOffset , Name ) \
204+ FdtSetProp ((Fdt), (NodeOffset), (Name), NULL, 0)
205+
194206/**
195207 Convert UINT16 data of the FDT blob to little-endian
196208
@@ -960,6 +972,21 @@ FdtGetPhandle (
960972 IN INT32 NodeOffset
961973 );
962974
975+ /**
976+ Applies a DT overlay on a base DT.
977+
978+ @param[in] Fdt The pointer to FDT blob.
979+ @param[in] Fdto The pointer to FDT overlay blob.
980+
981+ @return 0 on success, or negative error code.
982+ **/
983+ INT32
984+ EFIAPI
985+ FdtOverlayApply (
986+ IN VOID * Fdt ,
987+ IN VOID * Fdto
988+ );
989+
963990/* Debug functions. */
964991CONST
965992CHAR8
0 commit comments