/** @file Memory DXE Policy definitions Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _MEMORY_DXE_CONFIG_H_ #define _MEMORY_DXE_CONFIG_H_ #pragma pack(push, 1) #define MEMORY_DXE_CONFIG_REVISION 1 /** The Memory Configuration includes DIMM SPD address Map and DIMM Slot Mechanical present bit map. The data elements should be initialized by a Platform Module.\n Revision 1: - Initial version. **/ typedef struct { CONFIG_BLOCK_HEADER Header; ///< Offset 0-27: Config Block Header /** Offset 28: Dimm SPD address Only Server support 2 channels * 3 slots per channel = 6 sockets totally The Desktop and mobile only support 2 channels * 2 slots per channel = 4 sockets totally So there is mapping rule here for Desktop and mobile that there are no more 4 DIMMS totally in a system: Channel A/ Slot 0 --> Dimm 0 --> SpdAddressTable[0] Channel A/ Slot 1 --> Dimm 1 --> SpdAddressTable[1] Channel B/ Slot 0 --> Dimm 2 --> SpdAddressTable[2] Channel B/ Slot 1 --> Dimm 3 --> SpdAddressTable[3] Refer to SmbiosMemory.c for use If change the mapping rule, please update the Revision number. **/ UINT8 *SpdAddressTable; /** Offset 36: Channel A DIMM Slot Mechanical present bit map, bit 0 -> DIMM 0, bit 1 -> DIMM1, ... if the bit is 1, the related DIMM slot is present. E.g. if channel A has 2 DIMMs, ChannelASlotMap = 0x03; E.g. if channel A has only 1 DIMMs, ChannelASlotMap = 0x01; Refer to SmbiosMemory.c **/ UINT8 ChannelASlotMap; /** Offset 37: Channel B DIMM Slot Mechanical present bit map, bit 0 -> DIMM 0, bit 1 -> DIMM1, ... if the bit is 1, the related DIMM slot is present. E.g. if channel B has 2 DIMMs, ChannelBSlotMap = 0x03; E.g. if channel B has only 1 DIMMs, ChannelBSlotMap = 0x01; Refer to SmbiosMemory.c **/ UINT8 ChannelBSlotMap; UINT8 MrcTimeMeasure; ///< Offset 38: MRC execution time measurement: 0=Disable, 1=Enable UINT8 MrcFastBoot; ///< Offset 39: Fast boot: 0=Disable, 1=Enable } MEMORY_DXE_CONFIG; #pragma pack(pop) #endif // _MEMORY_DXE_CONFIG_H_