MdePkg: Improved Smbios Type9 table and Smbios spec v3.5.0 Changes

In Type9 structure since PeerGroups has a variable
number of entries, must not define new fields in the structure.So added an
extended structure and defined new fields added after PeerGroups. Also done
some improvements to Smbios 3.5.0 spec changes.

Signed-off-by: Sainadh Nagolu <sainadhn@ami.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
Sainadh Nagolu 2022-08-17 15:35:23 +08:00 committed by mergify[bot]
parent 64a20bea97
commit 9102518d29
1 changed files with 40 additions and 31 deletions

View File

@ -5,6 +5,7 @@ Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR> (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>
(C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development LP<BR> (C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development LP<BR>
Copyright (c) 2022, AMD Incorporated. All rights reserved.<BR> Copyright (c) 2022, AMD Incorporated. All rights reserved.<BR>
Copyright (c) 1985 - 2022, American Megatrends International LLC.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent SPDX-License-Identifier: BSD-2-Clause-Patent
**/ **/
@ -1503,6 +1504,17 @@ typedef struct {
UINT8 DataBusWidth; UINT8 DataBusWidth;
UINT8 PeerGroupingCount; UINT8 PeerGroupingCount;
MISC_SLOT_PEER_GROUP PeerGroups[1]; MISC_SLOT_PEER_GROUP PeerGroups[1];
//
// Since PeerGroups has a variable number of entries, must not define new
// fields in the structure. Remaining fields can be referenced using
// SMBIOS_TABLE_TYPE9_EXTENDED structure
//
} SMBIOS_TABLE_TYPE9;
///
/// Extended structure for System Slots (Type 9)
///
typedef struct {
// //
// Add for smbios 3.4 // Add for smbios 3.4
// //
@ -1513,7 +1525,7 @@ typedef struct {
// Add for smbios 3.5 // Add for smbios 3.5
// //
UINT8 SlotHeight; ///< The enumeration value from MISC_SLOT_HEIGHT. UINT8 SlotHeight; ///< The enumeration value from MISC_SLOT_HEIGHT.
} SMBIOS_TABLE_TYPE9; } SMBIOS_TABLE_TYPE9_EXTENDED;
/// ///
/// On Board Devices Information - Device Types. /// On Board Devices Information - Device Types.
@ -2746,11 +2758,11 @@ typedef enum {
/// ///
/// Firmware Inventory Firmware Characteristics (Type 45). /// Firmware Inventory Firmware Characteristics (Type 45).
/// ///
typedef enum { typedef struct {
CharacteristicsUpdatable = 0x00, UINT16 Updatable : 1;
CharacteristicsWriteProtected = 0x01, UINT16 WriteProtected : 1;
CharacteristicsReserved = 0x02 /// 0x02 - 0x0F are reserved UINT16 Reserved : 14;
} FIRMWARE_INVENTORY_CHARACTERISTICS; } FIRMWARE_CHARACTERISTICS;
/// ///
/// Firmware Inventory State Information (Type 45). /// Firmware Inventory State Information (Type 45).
@ -2763,7 +2775,7 @@ typedef enum {
FirmwareInventoryStateAbsent = 0x05, FirmwareInventoryStateAbsent = 0x05,
FirmwareInventoryStateStandbyOffline = 0x06, FirmwareInventoryStateStandbyOffline = 0x06,
FirmwareInventoryStateStandbySpare = 0x07, FirmwareInventoryStateStandbySpare = 0x07,
FirmwareInventoryStateUnavailableOffline = 0x08, FirmwareInventoryStateUnavailableOffline = 0x08
} FIRMWARE_INVENTORY_STATE; } FIRMWARE_INVENTORY_STATE;
/// ///
@ -2781,19 +2793,17 @@ typedef enum {
/// ///
typedef struct { typedef struct {
SMBIOS_STRUCTURE Hdr; SMBIOS_STRUCTURE Hdr;
SMBIOS_HANDLE RefHandle; SMBIOS_TABLE_STRING FirmwareComponentName;
SMBIOS_TABLE_STRING FirmwareVersion;
UINT8 FirmwareComponentName;
UINT8 FirmwareVersion;
UINT8 FirmwareVersionFormat; ///< The enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE UINT8 FirmwareVersionFormat; ///< The enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE
UINT8 FirmwareId; SMBIOS_TABLE_STRING FirmwareId;
UINT8 FirmwareIdFormat; UINT8 FirmwareIdFormat; ///< The enumeration value from FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE.
UINT8 ReleaseDate; SMBIOS_TABLE_STRING ReleaseDate;
UINT8 Manufacturer; SMBIOS_TABLE_STRING Manufacturer;
UINT8 LowestSupportedVersion; SMBIOS_TABLE_STRING LowestSupportedVersion;
UINT64 ImageSize; UINT64 ImageSize;
UINT32 Characteristics; FIRMWARE_CHARACTERISTICS Characteristics;
UINT8 State; UINT8 State; ///< The enumeration value from FIRMWARE_INVENTORY_STATE.
UINT8 AssociatedComponentCount; UINT8 AssociatedComponentCount;
/// ///
/// zero or n-number of handles depends on AssociatedComponentCount /// zero or n-number of handles depends on AssociatedComponentCount
@ -2821,9 +2831,8 @@ typedef enum {
/// ///
typedef struct { typedef struct {
SMBIOS_STRUCTURE Hdr; SMBIOS_STRUCTURE Hdr;
SMBIOS_HANDLE RefHandle; UINT16 StringPropertyId; ///< The enumeration value from STRING_PROPERTY_ID.
UINT16 StringPropertyId; SMBIOS_TABLE_STRING StringPropertyValue;
UINT8 StringPropertyValue;
SMBIOS_HANDLE ParentHandle; SMBIOS_HANDLE ParentHandle;
} SMBIOS_TABLE_TYPE46; } SMBIOS_TABLE_TYPE46;