1 /** @file 2 Intel FSP Info Header definition from Intel Firmware Support Package External 3 Architecture Specification v1.1, April 2015, revision 001. 4 5 Copyright (c) 2014 - 2015, Intel Corporation. All rights reserved.<BR> 6 This program and the accompanying materials 7 are licensed and made available under the terms and conditions of the BSD License 8 which accompanies this distribution. The full text of the license may be found at 9 http://opensource.org/licenses/bsd-license.php. 10 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 14 **/ 15 16 #ifndef _FSP_INFO_HEADER_H_ 17 #define _FSP_INFO_HEADER_H_ 18 19 #define FSP_HEADER_REVISION_1 1 20 #define FSP_HEADER_REVISION_2 2 21 22 #define FSPE_HEADER_REVISION_1 1 23 #define FSPP_HEADER_REVISION_1 1 24 25 /// 26 /// Fixed FSP header offset in the FSP image 27 /// 28 #define FSP_INFO_HEADER_OFF 0x94 29 30 #define OFFSET_IN_FSP_INFO_HEADER(x) (UINT32)&((FSP_INFO_HEADER *)(UINTN)0)->x 31 32 #define FSP_INFO_HEADER_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'H') 33 34 #pragma pack(1) 35 36 typedef struct { 37 /// 38 /// Byte 0x00: Signature ('FSPH') for the FSP Information Header 39 /// 40 UINT32 Signature; 41 /// 42 /// Byte 0x04: Length of the FSP Information Header 43 /// 44 UINT32 HeaderLength; 45 /// 46 /// Byte 0x08: Reserved 47 /// 48 UINT8 Reserved1[3]; 49 /// 50 /// Byte 0x0B: Revision of the FSP Information Header 51 /// 52 UINT8 HeaderRevision; 53 /// 54 /// Byte 0x0C: Revision of the FSP binary 55 /// 56 UINT32 ImageRevision; 57 58 59 /// 60 /// Byte 0x10: Signature string that will help match the FSP Binary to a supported 61 /// hardware configuration. 62 /// 63 CHAR8 ImageId[8]; 64 /// 65 /// Byte 0x18: Size of the entire FSP binary 66 /// 67 UINT32 ImageSize; 68 /// 69 /// Byte 0x1C: FSP binary preferred base address 70 /// 71 UINT32 ImageBase; 72 73 74 /// 75 /// Byte 0x20: Attribute for the FSP binary 76 /// 77 UINT32 ImageAttribute; 78 /// 79 /// Byte 0x24: Offset of the FSP configuration region 80 /// 81 UINT32 CfgRegionOffset; 82 /// 83 /// Byte 0x28: Size of the FSP configuration region 84 /// 85 UINT32 CfgRegionSize; 86 /// 87 /// Byte 0x2C: Number of API entries this FSP supports 88 /// 89 UINT32 ApiEntryNum; 90 91 92 /// 93 /// Byte 0x30: The offset for the API to setup a temporary stack till the memory 94 /// is initialized. 95 /// 96 UINT32 TempRamInitEntryOffset; 97 /// 98 /// Byte 0x34: The offset for the API to initialize the CPU and the chipset (SOC) 99 /// 100 UINT32 FspInitEntryOffset; 101 /// 102 /// Byte 0x38: The offset for the API to inform the FSP about the different stages 103 /// in the boot process 104 /// 105 UINT32 NotifyPhaseEntryOffset; 106 107 /// 108 /// Below fields are added in FSP Revision 2 109 /// 110 111 /// 112 /// Byte 0x3C: The offset for the API to initialize the memory 113 /// 114 UINT32 FspMemoryInitEntryOffset; 115 /// 116 /// Byte 0x40: The offset for the API to tear down temporary RAM 117 /// 118 UINT32 TempRamExitEntryOffset; 119 /// 120 /// Byte 0x44: The offset for the API to initialize the CPU and chipset 121 /// 122 UINT32 FspSiliconInitEntryOffset; 123 124 } FSP_INFO_HEADER; 125 126 /// 127 /// Below structure is added in FSP version 2 128 /// 129 #define FSP_INFO_EXTENDED_HEADER_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'E') 130 131 typedef struct { 132 /// 133 /// Byte 0x00: Signature ('FSPE') for the FSP Extended Information Header 134 /// 135 UINT32 Signature; 136 /// 137 /// Byte 0x04: Length of the table in bytes, including all additional FSP producer defined data. 138 /// 139 UINT32 Length; 140 /// 141 /// Byte 0x08: FSP producer defined revision of the table. 142 /// 143 UINT8 Revision; 144 /// 145 /// Byte 0x09: Reserved for future use. 146 /// 147 UINT8 Reserved; 148 /// 149 /// Byte 0x0A: FSP producer identification string 150 /// 151 CHAR8 FspProducerId[6]; 152 /// 153 /// Byte 0x10: FSP producer implementation revision number. Larger numbers are assumed to be newer revisions. 154 /// 155 UINT32 FspProducerRevision; 156 /// 157 /// Byte 0x14: Size of the FSP producer defined data (n) in bytes. 158 /// 159 UINT32 FspProducerDataSize; 160 /// 161 /// Byte 0x18: FSP producer defined data of size (n) defined by FspProducerDataSize. 162 /// 163 164 } FSP_INFO_EXTENDED_HEADER; 165 166 // 167 // A generic table search algorithm for additional tables can be implemented with a 168 // signature search algorithm until a terminator signature 'FSPP' is found. 169 // 170 #define FSP_FSPP_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'P') 171 172 #pragma pack() 173 174 #endif 175