[coreboot-gerrit] New patch to review for coreboot: update intel fsp1_0 rangeley files to revision: POSTGOLD3

Marcin Wojciechowski (marcin.wojciechowski@intel.com) gerrit at coreboot.org
Thu Nov 12 16:24:02 CET 2015


Marcin Wojciechowski (marcin.wojciechowski at intel.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12418

-gerrit

commit d0cf8385645aa97f0dcab93bf5ea14a6ff3a4341
Author: Marcin Wojciechowski <marcin.wojciechowski at intel.com>
Date:   Thu Nov 12 16:05:42 2015 +0100

    update intel fsp1_0 rangeley files to revision: POSTGOLD3
    
    Alligment of Intel Firmware Support Package 1.0 rangeley header and source files to the revision: POSTGOLD3
    more info can be found here: http://www.intel.com/content/www/us/en/intelligent-systems/intel-firmware-support-package/intel-fsp-overview.html
    
    Change-Id: If1a6f95aed3e9a60af9af8cf9cd466a560ef0fe2
    Signed-off-by: Marcin Wojciechowski <marcin.wojciechowski at intel.com>
---
 .../intel/fsp1_0/rangeley/include/fspguid.h        |  69 +++++
 .../intel/fsp1_0/rangeley/include/fspplatform.h    |   3 +-
 .../intel/fsp1_0/rangeley/include/fspsupport.h     |  95 +++++++
 .../intel/fsp1_0/rangeley/include/fsptypes.h       |   9 +-
 .../intel/fsp1_0/rangeley/include/fspvpd.h         |  12 +-
 .../intel/fsp1_0/rangeley/srx/fsp_support.c        | 288 +++++++++++++++++++++
 6 files changed, 468 insertions(+), 8 deletions(-)

diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspguid.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspguid.h
new file mode 100644
index 0000000..22ff35d
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspguid.h
@@ -0,0 +1,69 @@
+/** @file
+
+Copyright (C) 2014, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __FSP_GUID_H__
+#define __FSP_GUID_H__
+
+/**
+
+ FSP specific GUID HOB definitions
+ 
+ **/
+#define FSP_INFO_HEADER_GUID \
+  { \
+  0x912740BE, 0x2284, 0x4734, {0xB9, 0x71, 0x84, 0xB0, 0x27, 0x35, 0x3F, 0x0C} \
+  }
+
+#define FSP_NON_VOLATILE_STORAGE_HOB_GUID \
+  { \
+  0x721acf02, 0x4d77, 0x4c2a, { 0xb3, 0xdc, 0x27, 0xb, 0x7b, 0xa9, 0xe4, 0xb0 } \
+  }
+  
+#define FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID \
+  { \
+  0xbbcff46c, 0xc8d3, 0x4113, { 0x89, 0x85, 0xb9, 0xd4, 0xf3, 0xb3, 0xf6, 0x4e } \
+  }
+  
+#define FSP_HOB_RESOURCE_OWNER_FSP_GUID \
+  { \
+  0x69a79759, 0x1373, 0x4367, { 0xa6, 0xc4, 0xc7, 0xf5, 0x9e, 0xfd, 0x98, 0x6e } \
+  }
+
+#define FSP_HOB_RESOURCE_OWNER_TSEG_GUID \
+  { \
+  0xd038747c, 0xd00c, 0x4980, { 0xb3, 0x19, 0x49, 0x01, 0x99, 0xa4, 0x7d, 0x55 } \
+  }
+
+#define FSP_HOB_RESOURCE_OWNER_GRAPHICS_GUID \
+  { \
+  0x9c7c3aa7, 0x5332, 0x4917, { 0x82, 0xb9, 0x56, 0xa5, 0xf3, 0xe6, 0x2a, 0x07 } \
+  }
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspplatform.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspplatform.h
index ce479bf..c35dca0 100644
--- a/src/vendorcode/intel/fsp1_0/rangeley/include/fspplatform.h
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspplatform.h
@@ -1,6 +1,6 @@
 /**
 
-Copyright (C) 2013, Intel Corporation
+Copyright (C) 2013 - 2015, Intel Corporation
 
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:
@@ -74,6 +74,7 @@ typedef struct {
   UINT8  tRTPmin;                        // 27  Minimum Internal Read to Precharge Command Delay Time (tRTPmin)
   UINT8  UpperNibbleFortFAW;             // 28  Upper Nibble for tFAW
   UINT8  tFAWmin;                        // 29  Minimum Four Activate Window Delay Time (tFAWmin)
+  UINT8  SdramThermalRefreshOption;      // 31  SdramThermalRefreshOption
   UINT8  ModuleThermalSensor;            // 32  ModuleThermalSensor
   UINT8  SDRAMDeviceType;                // 33  SDRAM Device Type
   UINT8  tCKminFine;                     // 34  Fine Offset for SDRAM Minimum Cycle Time (tCKmin)
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspsupport.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspsupport.h
new file mode 100644
index 0000000..39102fe
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspsupport.h
@@ -0,0 +1,95 @@
+/** @file
+
+Copyright (C) 2013 - 2014, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __FSP_SUPPORT_H__
+#define __FSP_SUPPORT_H__
+
+#include "fsptypes.h"
+#include "fspfv.h"
+#include "fspffs.h"
+#include "fspapi.h"
+#include "fsphob.h"
+#include "fspguid.h"
+#include "fspplatform.h"
+#include "fspinfoheader.h"
+#include "fspbootmode.h"
+#include "fspvpd.h"
+
+UINT32
+GetUsableLowMemTop (
+  CONST VOID             *HobListPtr
+  );
+
+UINT64
+GetUsableHighMemTop (
+  CONST VOID             *HobListPtr
+  );
+
+VOID *
+GetGuidHobDataBuffer (
+  CONST VOID             *HobListPtr,
+  UINT32                 *Length,
+  EFI_GUID               *Guid
+  );
+  
+VOID
+GetFspReservedMemoryFromGuid (  
+  CONST VOID             *HobListPtr,  
+  EFI_PHYSICAL_ADDRESS   *FspMemoryBase,
+  UINT64                 *FspMemoryLength,
+  EFI_GUID               *FspReservedMemoryGuid
+  );
+
+UINT32
+GetTsegReservedMemory ( 
+  CONST VOID             *HobListPtr, 
+  UINT32                 *Length
+);
+
+UINT32
+GetFspReservedMemory ( 
+  CONST VOID             *HobListPtr, 
+  UINT32                 *Length
+);
+    
+VOID*
+GetFspNvsDataBuffer (
+  CONST VOID             *HobListPtr,
+  UINT32                 *Length
+  );
+
+VOID *
+GetBootloaderTempMemoryBuffer (
+  CONST VOID             *HobListPtr,
+  UINT32                 *Length
+  );
+
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fsptypes.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fsptypes.h
index 5912e01..3d2e663 100644
--- a/src/vendorcode/intel/fsp1_0/rangeley/include/fsptypes.h
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fsptypes.h
@@ -100,13 +100,18 @@ typedef struct {
 #define TRUE  ((BOOLEAN)(1==1))
 #define FALSE ((BOOLEAN)(0==1))
 
+static inline void DebugDeadLoop(void) {
+  for (;;);
+}
+
 #define FSPAPI __attribute__((cdecl))
 #define EFIAPI __attribute__((cdecl))
 
+#define _ASSERT(Expression)  DebugDeadLoop()
 #define ASSERT(Expression)      \
   do {                          \
     if (!(Expression)) {        \
-      for (;;);                 \
+      _ASSERT (Expression);     \
     }                           \
   } while (FALSE)
 
@@ -175,4 +180,4 @@ typedef UINT32 EFI_STATUS;
 #define SIGNATURE_64(A, B, C, D, E, F, G, H) \
     (SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32))
 
-#endif
+#endif
\ No newline at end of file
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspvpd.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspvpd.h
index fba38a0..eefdb94 100644
--- a/src/vendorcode/intel/fsp1_0/rangeley/include/fspvpd.h
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspvpd.h
@@ -1,6 +1,6 @@
 /** @file
 
-Copyright (C) 2013-2014 Intel Corporation
+Copyright (C) 2015, Intel Corporation
 
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:
@@ -50,7 +50,8 @@ typedef struct _UPD_DATA_REGION {
   UINT8                       PcdSpdBaseAddress_0_1;         /* Offset 0x0026 */
   UINT8                       PcdSpdBaseAddress_1_0;         /* Offset 0x0027 */
   UINT8                       PcdSpdBaseAddress_1_1;         /* Offset 0x0028 */
-  UINT8                       UnusedUpdSpace1[7];            /* Offset 0x0029 */
+  UINT8                       PcdExtendedTemperatureEnable;  /* Offset 0x0029 */
+  UINT8                       UnusedUpdSpace1[6];            /* Offset 0x002A */
   UINT8                       PcdEnableLan;                  /* Offset 0x0030 */
   UINT8                       PcdEnableSata2;                /* Offset 0x0031 */
   UINT8                       PcdEnableSata3;                /* Offset 0x0032 */
@@ -65,13 +66,14 @@ typedef struct _UPD_DATA_REGION {
   UINT8                       PcdPrintDebugMessages;         /* Offset 0x0040 */
   UINT8                       PcdFastboot;                   /* Offset 0x0041 */
   UINT8                       PcdEccSupport;                 /* Offset 0x0042 */
-  UINT8                       PcdCustomerRevision[32];       /* Offset 0x0043 */
-  UINT8                       UnusedUpdSpace3[13];           /* Offset 0x0063 */
+  UINT8                       PcdSerialPortBaudRate;         /* Offset 0x0043 */
+  UINT8                       PcdCustomerRevision[32];       /* Offset 0x0044 */
+  UINT8                       UnusedUpdSpace3[12];           /* Offset 0x0064 */
   UINT16                      PcdRegionTerminator;           /* Offset 0x0070 */
 } UPD_DATA_REGION;
 
 #define VPD_IMAGE_ID    0x562D474E524E5641        /* 'AVNRNG-V' */
-#define VPD_IMAGE_REV   0x00000102
+#define VPD_IMAGE_REV   0x00000130 
 
 typedef struct _VPD_DATA_REGION {
   UINT64                      PcdVpdRegionSign;              /* Offset 0x0000 */
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/srx/fsp_support.c b/src/vendorcode/intel/fsp1_0/rangeley/srx/fsp_support.c
new file mode 100644
index 0000000..6fe3eb0
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/srx/fsp_support.c
@@ -0,0 +1,288 @@
+/** @file
+
+Copyright (C) 2013 - 2014, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#include <types.h>
+#include <string.h>
+#include "fspsupport.h"
+
+/**
+  This function retrieves the top of usable low memory.
+
+  @param    HobListPtr   A HOB list pointer.
+
+  @retval                Usable low memory top.
+
+**/
+UINT32
+GetUsableLowMemTop (
+  CONST VOID       *HobStart
+)
+{
+  EFI_PEI_HOB_POINTERS  Hob;
+  UINT32          MemLen;
+  /*
+   * Get the HOB list for processing
+   */
+  Hob.Raw = (VOID *)HobStart;
+
+  /*
+   * Collect memory ranges
+   */
+  MemLen = 0x100000;
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
+      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
+        /*
+         * Need memory above 1MB to be collected here
+         */
+        if (Hob.ResourceDescriptor->PhysicalStart >= 0x100000 &&
+            Hob.ResourceDescriptor->PhysicalStart < (EFI_PHYSICAL_ADDRESS) 0x100000000) {
+          MemLen += (UINT32) (Hob.ResourceDescriptor->ResourceLength);
+        }
+      }
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+
+  return MemLen;
+}
+
+/**
+  This function retrieves the top of usable high memory.
+
+  @param  HobListPtr   A HOB list pointer.
+
+  @retval              Usable high memory top.
+
+**/
+UINT64
+GetUsableHighMemTop (
+  CONST VOID       *HobStart
+)
+{
+  EFI_PEI_HOB_POINTERS  Hob;
+  UINT64                MemTop;
+  /*
+   * Get the HOB list for processing
+   */
+  Hob.Raw = (VOID *)HobStart;
+
+  /*
+   * Collect memory ranges
+   */
+  MemTop = 0x100000000;
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
+      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
+        /*
+         * Need memory above 1MB to be collected here
+         */
+        if (Hob.ResourceDescriptor->PhysicalStart >= (EFI_PHYSICAL_ADDRESS) 0x100000000) {
+          MemTop += (UINT32) (Hob.ResourceDescriptor->ResourceLength);
+        }
+      }
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+
+  return MemTop;
+}
+
+/**
+  This function retrieves a special reserved memory region.
+
+  @param  HobListPtr   A HOB list pointer.
+  @param  Length       A pointer to the GUID HOB data buffer length.  If the GUID HOB is
+                       located, the length will be updated.
+  @param  OwnerGuid    A pointer to the owner guild.
+  @retval              Reserved region start address.  0 if this region does not exist.
+
+**/
+VOID
+GetFspReservedMemoryFromGuid (
+  CONST VOID     *HobListPtr,
+  EFI_PHYSICAL_ADDRESS  *Base,
+  UINT64         *Length,
+  EFI_GUID       *OwnerGuid
+)
+{
+  EFI_PEI_HOB_POINTERS    Hob;
+
+  /*
+   * Get the HOB list for processing
+   */
+  Hob.Raw = (VOID *)HobListPtr;
+
+  /*
+   * Collect memory ranges
+   */
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
+      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED) {
+        if (CompareGuid(&Hob.ResourceDescriptor->Owner, OwnerGuid)) {
+          *Base = (EFI_PHYSICAL_ADDRESS) (Hob.ResourceDescriptor->PhysicalStart);
+          *Length = (UINT64) (Hob.ResourceDescriptor->ResourceLength);
+          break;
+        }
+      }
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+}
+
+/**
+  This function retrieves the TSEG reserved normal memory.
+
+  @param  HobListPtr   A HOB list pointer.
+  @param  Length       A pointer to the TSEG reserved memory length buffer.  If the GUID HOB is
+                       located, the length will be updated.
+  @param  Guid         A pointer to owner HOB GUID.
+  @retval NULL         Failed to find the TSEG reserved memory.
+  @retval others       TSEG reserved memory base.
+
+**/
+UINT32
+GetTsegReservedMemory (
+  CONST VOID       *HobListPtr,
+  UINT32           *Length
+)
+{
+  const EFI_GUID    TsegOwnerHobGuid = FSP_HOB_RESOURCE_OWNER_TSEG_GUID;
+  UINT64            Length64 = 0;
+  EFI_PHYSICAL_ADDRESS  Base = 0;
+
+  GetFspReservedMemoryFromGuid (HobListPtr, &Base, &Length64, (EFI_GUID *)&TsegOwnerHobGuid);
+  if ((Length != NULL) && (Base != 0)) {
+    *Length = (UINT32)Length64;
+  }
+  return (UINT32)Base;
+}
+
+/**
+  This function retrieves the FSP reserved normal memory.
+
+  @param  HobListPtr   A HOB list pointer.
+  @param  Length       A pointer to the FSP reserved memory length buffer.  If the GUID HOB is
+                       located, the length will be updated.
+  @param  Guid         A pointer to owner HOB GUID.
+  @retval NULL         Failed to find the FSP reserved memory.
+  @retval others       FSP reserved memory base.
+
+**/
+UINT32
+GetFspReservedMemory (
+  CONST VOID       *HobListPtr,
+  UINT32           *Length
+)
+{
+  const EFI_GUID    FspOwnerHobGuid = FSP_HOB_RESOURCE_OWNER_FSP_GUID;
+  UINT64            Length64 = 0;
+  EFI_PHYSICAL_ADDRESS  Base = 0;
+
+  GetFspReservedMemoryFromGuid (HobListPtr, &Base, &Length64, (EFI_GUID *)&FspOwnerHobGuid);
+  if ((Length != NULL) && (Base != 0)) {
+    *Length = (UINT32)Length64;
+  }
+  return (UINT32)Base;
+}
+
+
+/**
+  This function retrieves a GUIDed HOB data buffer and size.
+
+  @param  HobListPtr   A HOB list pointer.
+  @param  Length       A pointer to the GUID HOB data buffer length.  If the 
+                       GUID HOB is located, the length will be updated.
+  @param  Guid         A pointer to HOB GUID.
+  @retval NULL         Failed to find the GUID HOB.
+  @retval others       GUID HOB data buffer pointer.
+
+**/
+VOID *
+GetGuidHobDataBuffer (
+  CONST VOID       *HobListPtr,
+  UINT32           *Length,
+  EFI_GUID         *Guid
+)
+{
+  UINT8        *GuidHob;
+
+  /* FSP NVS DATA HOB */
+  GuidHob = GetNextGuidHob(Guid, HobListPtr);
+  if (GuidHob == NULL) {
+    return NULL;
+  } else {
+    if (Length) {
+      *Length = GET_GUID_HOB_DATA_SIZE (GuidHob);
+    }
+    return GET_GUID_HOB_DATA (GuidHob);
+  }
+}
+
+/**
+  This function retrieves FSP Non-volatile Storage HOB buffer and size.
+
+  @param  HobListPtr   A HOB list pointer.
+  @param  Length       A pointer to the NVS data buffer length.  If the FSP NVS 
+                       HOB is located, the length will be updated.
+  @retval NULL         Failed to find the NVS HOB.
+  @retval others       FSP NVS data buffer pointer.
+
+**/
+VOID *
+GetFspNvsDataBuffer (
+  CONST VOID       *HobListPtr,
+  UINT32           *Length
+)
+{
+  const EFI_GUID    FspNvsHobGuid = FSP_NON_VOLATILE_STORAGE_HOB_GUID;
+  return GetGuidHobDataBuffer (HobListPtr, Length, (EFI_GUID *)&FspNvsHobGuid);
+}
+
+
+/**
+  This function retrieves Bootloader temporary stack buffer and size.
+
+  @param  HobListPtr   A HOB list pointer.
+  @param  Length       A pointer to the Bootloader temporary stack length.
+                       If the HOB is located, the length will be updated.
+  @retval NULL         Failed to find the Bootloader temporary stack HOB.
+  @retval others       Bootloader temporary stackbuffer pointer.
+
+**/
+VOID *
+GetBootloaderTempMemoryBuffer (
+  CONST VOID       *HobListPtr,
+  UINT32           *Length
+)
+{
+  const EFI_GUID    FspBootloaderTemporaryMemoryHobGuid = FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID;
+  return GetGuidHobDataBuffer (HobListPtr, Length, (EFI_GUID *)&FspBootloaderTemporaryMemoryHobGuid);
+}



More information about the coreboot-gerrit mailing list