]> xenbits.xensource.com Git - people/aperard/ovmf.git/commitdiff
MdePkg: Add reserved mem fdt helpers
authorDhaval <dhaval@rivosinc.com>
Wed, 5 Jun 2024 04:30:32 +0000 (10:00 +0530)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sat, 14 Sep 2024 03:38:47 +0000 (03:38 +0000)
Devicetree defines a short hand way of defining reserved memory
ranges. Add APIs to access such nodes

Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
MdePkg/Include/Library/FdtLib.h
MdePkg/Library/BaseFdtLib/FdtLib.c

index 89aa1e00f92d12a781aa3ae78260d1c6ca3c3a29..ffff40d8fe276fedd54a23a8595ff5d2c00b362e 100644 (file)
@@ -247,6 +247,40 @@ FdtSubnodeOffsetNameLen (
   IN INT32        NameLength\r
   );\r
 \r
+/**\r
+  Returns number of reserved ranges.\r
+\r
+  @param[in] Fdt             The pointer to FDT blob.\r
+\r
+  @return The number of reserved ranges.\r
+\r
+**/\r
+INTN\r
+EFIAPI\r
+FdtNumRsv (\r
+  IN CONST VOID  *Fdt\r
+  );\r
+\r
+/**\r
+  Returns reserved ranges.\r
+\r
+  @param[in] *Fdt            The pointer to FDT blob.\r
+  @param[in] Index           Reserved entry index in the table.\r
+  @param[out] Addr           Address returned\r
+  @param[out] *Size          Pointer to size of the address range\r
+\r
+  @return Returns reserved range.\r
+\r
+**/\r
+INTN\r
+EFIAPI\r
+FdtGetMemRsv (\r
+  IN CONST VOID  *Fdt,\r
+  IN INTN        Index,\r
+  OUT UINT64     *Addr,\r
+  OUT UINT64     *Size\r
+  );\r
+\r
 /**\r
   Returns a offset of first node which includes the given property name and value.\r
 \r
index 9b1ceac551e0d9dc593bc3a9d1b43c1082dc0bb2..5ff06111b7f49768bd050285e7881b38d42190c0 100644 (file)
@@ -7,6 +7,7 @@
 **/\r
 \r
 #include <libfdt/libfdt/libfdt.h>\r
+#include <Uefi/UefiBaseType.h>\r
 \r
 /**\r
   Convert UINT16 data of the FDT blob to little-endian\r
@@ -205,6 +206,46 @@ FdtNextSubnode (
   return fdt_next_subnode (Fdt, Offset);\r
 }\r
 \r
+/**\r
+  Returns number of reserved mem nodes\r
+\r
+  @param[in] Fdt            The pointer to FDT blob.\r
+\r
+  @return total reserved mem nodes\r
+\r
+**/\r
+INTN\r
+EFIAPI\r
+FdtNumRsv (\r
+  IN CONST VOID  *Fdt\r
+  )\r
+{\r
+  return fdt_num_mem_rsv (Fdt);\r
+}\r
+\r
+/**\r
+  Returns reserved ranges.\r
+\r
+  @param[in] *Fdt            The pointer to FDT blob.\r
+  @param[in] Index           Reserved entry index in the table.\r
+  @param[out] Addr           Address returned\r
+  @param[out] *Size          Pointer to size of the address range\r
+\r
+  @return Returns reserved range.\r
+\r
+**/\r
+INTN\r
+EFIAPI\r
+FdtGetMemRsv (\r
+  IN CONST VOID             *Fdt,\r
+  IN INTN                   Index,\r
+  OUT EFI_PHYSICAL_ADDRESS  *Addr,\r
+  OUT UINT64                *Size\r
+  )\r
+{\r
+  return fdt_get_mem_rsv (Fdt, Index, Addr, Size);\r
+}\r
+\r
 /**\r
   Returns a offset of first node which includes the given name.\r
 \r