1 /** @file 2 Provide FSP platform information related function. 3 4 Copyright (c) 2014, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php. 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef __FSP_PLATFORM_INFO_LIB_H__ 16 #define __FSP_PLATFORM_INFO_LIB_H__ 17 18 /** 19 Get current boot mode. 20 21 @note At this point, memory is ready, PeiServices are NOT available to use. 22 Platform can get some data from chipset register. 23 24 @return BootMode current boot mode. 25 **/ 26 UINT32 27 EFIAPI 28 GetBootMode ( 29 VOID 30 ); 31 32 /** 33 Get NVS buffer parameter. 34 35 @note At this point, memory is NOT ready, PeiServices are available to use. 36 37 @return NvsBuffer NVS buffer parameter. 38 **/ 39 VOID * 40 EFIAPI 41 GetNvsBuffer ( 42 VOID 43 ); 44 45 /** 46 Get UPD region size. 47 48 @note At this point, memory is NOT ready, PeiServices are available to use. 49 50 @return UPD region size. 51 **/ 52 UINT32 53 EFIAPI 54 GetUpdRegionSize ( 55 VOID 56 ); 57 58 /** 59 This function overrides the default configurations in the UPD data region. 60 61 @param[in,out] FspUpdRgnPtr A pointer to the UPD data region data strcture. 62 63 @return FspUpdRgnPtr A pointer to the UPD data region data strcture. 64 **/ 65 VOID * 66 EFIAPI 67 UpdateFspUpdConfigs ( 68 IN OUT VOID *FspUpdRgnPtr 69 ); 70 71 /** 72 Get BootLoader Tolum size. 73 74 @note At this point, memory is NOT ready, PeiServices are available to use. 75 76 @return BootLoader Tolum size. 77 **/ 78 UINT32 79 EFIAPI 80 GetBootLoaderTolumSize ( 81 VOID 82 ); 83 84 /** 85 Get TempRamExit parameter. 86 87 @note At this point, memory is ready, PeiServices are available to use. 88 89 @return TempRamExit parameter. 90 **/ 91 VOID * 92 EFIAPI 93 GetTempRamExitParam ( 94 VOID 95 ); 96 97 /** 98 Get FspSiliconInit parameter. 99 100 @note At this point, memory is ready, PeiServices are available to use. 101 102 @return FspSiliconInit parameter. 103 **/ 104 VOID * 105 EFIAPI 106 GetFspSiliconInitParam ( 107 VOID 108 ); 109 110 /** 111 Get S3 PEI memory information. 112 113 @note At this point, memory is ready, and PeiServices are available to use. 114 Platform can get some data from SMRAM directly. 115 116 @param[out] S3PeiMemSize PEI memory size to be installed in S3 phase. 117 @param[out] S3PeiMemBase PEI memory base to be installed in S3 phase. 118 119 @return If S3 PEI memory information is got successfully. 120 **/ 121 EFI_STATUS 122 EFIAPI 123 GetS3MemoryInfo ( 124 OUT UINT64 *S3PeiMemSize, 125 OUT EFI_PHYSICAL_ADDRESS *S3PeiMemBase 126 ); 127 128 /** 129 Get stack information according to boot mode. 130 131 @note If BootMode is BOOT_ON_S3_RESUME or BOOT_ON_FLASH_UPDATE, 132 this stack should be in some reserved memory space. 133 134 @note If FspInitDone is TRUE, memory is ready, but no PeiServices there. 135 Platform can get some data from SMRAM directly. 136 @note If FspInitDone is FALSE, memory is NOT ready, but PeiServices are available to use. 137 Platform can get some data from variable via VariablePpi. 138 139 @param[in] BootMode Current boot mode. 140 @param[in] FspInitDone If FspInit is called. 141 @param[out] StackSize Stack size to be used in PEI phase. 142 @param[out] StackBase Stack base to be used in PEI phase. 143 144 @return If Stack information is got successfully. 145 **/ 146 EFI_STATUS 147 EFIAPI 148 GetStackInfo ( 149 IN UINT32 BootMode, 150 IN BOOLEAN FspInitDone, 151 OUT UINT64 *StackSize, 152 OUT EFI_PHYSICAL_ADDRESS *StackBase 153 ); 154 155 #endif 156