Skip to content

Commit 7f9f071

Browse files
committed
MdePkg/BaseFdtLib: Add more wrappers
Add FDT_HEADER field accessors and FdtOverlayApply() wrapper. Signed-off-by: Mario Bălănică <mariobalanica02@gmail.com>
1 parent 46548b1 commit 7f9f071

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

MdePkg/Include/Library/FdtLib.h

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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. */
964991
CONST
965992
CHAR8

MdePkg/Library/BaseFdtLib/FdtLib.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,24 @@ FdtGetPhandle (
918918
return fdt_get_phandle (Fdt, NodeOffset);
919919
}
920920

921+
/**
922+
Applies a DT overlay on a base DT.
923+
924+
@param[in] Fdt The pointer to FDT blob.
925+
@param[in] Fdto The pointer to FDT overlay blob.
926+
927+
@return 0 on success, or negative error code.
928+
**/
929+
INT32
930+
EFIAPI
931+
FdtOverlayApply (
932+
IN VOID *Fdt,
933+
IN VOID *Fdto
934+
)
935+
{
936+
return fdt_overlay_apply (Fdt, Fdto);
937+
}
938+
921939
/* Debug functions. */
922940
CONST
923941
CHAR8

0 commit comments

Comments
 (0)