diff --git a/MdePkg/Include/IndustryStandard/SmBios.h b/MdePkg/Include/IndustryStandard/SmBios.h index c7a4971f14..dc7271c92f 100644 --- a/MdePkg/Include/IndustryStandard/SmBios.h +++ b/MdePkg/Include/IndustryStandard/SmBios.h @@ -5,6 +5,7 @@ Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.
(C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP
(C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development LP
Copyright (c) 2022, AMD Incorporated. All rights reserved.
+Copyright (c) 1985 - 2022, American Megatrends International LLC.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -1503,17 +1504,28 @@ typedef struct { UINT8 DataBusWidth; UINT8 PeerGroupingCount; 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 // - UINT8 SlotInformation; - UINT8 SlotPhysicalWidth; - UINT16 SlotPitch; + UINT8 SlotInformation; + UINT8 SlotPhysicalWidth; + UINT16 SlotPitch; // // Add for smbios 3.5 // - UINT8 SlotHeight; ///< The enumeration value from MISC_SLOT_HEIGHT. -} SMBIOS_TABLE_TYPE9; + UINT8 SlotHeight; ///< The enumeration value from MISC_SLOT_HEIGHT. +} SMBIOS_TABLE_TYPE9_EXTENDED; /// /// On Board Devices Information - Device Types. @@ -2746,11 +2758,11 @@ typedef enum { /// /// Firmware Inventory Firmware Characteristics (Type 45). /// -typedef enum { - CharacteristicsUpdatable = 0x00, - CharacteristicsWriteProtected = 0x01, - CharacteristicsReserved = 0x02 /// 0x02 - 0x0F are reserved -} FIRMWARE_INVENTORY_CHARACTERISTICS; +typedef struct { + UINT16 Updatable : 1; + UINT16 WriteProtected : 1; + UINT16 Reserved : 14; +} FIRMWARE_CHARACTERISTICS; /// /// Firmware Inventory State Information (Type 45). @@ -2763,7 +2775,7 @@ typedef enum { FirmwareInventoryStateAbsent = 0x05, FirmwareInventoryStateStandbyOffline = 0x06, FirmwareInventoryStateStandbySpare = 0x07, - FirmwareInventoryStateUnavailableOffline = 0x08, + FirmwareInventoryStateUnavailableOffline = 0x08 } FIRMWARE_INVENTORY_STATE; /// @@ -2780,21 +2792,19 @@ typedef enum { /// One Type 45 structure is provided for each firmware component. /// typedef struct { - SMBIOS_STRUCTURE Hdr; - SMBIOS_HANDLE RefHandle; - - UINT8 FirmwareComponentName; - UINT8 FirmwareVersion; - UINT8 FirmwareVersionFormat; ///< The enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE - UINT8 FirmwareId; - UINT8 FirmwareIdFormat; - UINT8 ReleaseDate; - UINT8 Manufacturer; - UINT8 LowestSupportedVersion; - UINT64 ImageSize; - UINT32 Characteristics; - UINT8 State; - UINT8 AssociatedComponentCount; + SMBIOS_STRUCTURE Hdr; + SMBIOS_TABLE_STRING FirmwareComponentName; + SMBIOS_TABLE_STRING FirmwareVersion; + UINT8 FirmwareVersionFormat; ///< The enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE + SMBIOS_TABLE_STRING FirmwareId; + UINT8 FirmwareIdFormat; ///< The enumeration value from FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE. + SMBIOS_TABLE_STRING ReleaseDate; + SMBIOS_TABLE_STRING Manufacturer; + SMBIOS_TABLE_STRING LowestSupportedVersion; + UINT64 ImageSize; + FIRMWARE_CHARACTERISTICS Characteristics; + UINT8 State; ///< The enumeration value from FIRMWARE_INVENTORY_STATE. + UINT8 AssociatedComponentCount; /// /// zero or n-number of handles depends on AssociatedComponentCount /// handles are of type SMBIOS_HANDLE @@ -2820,11 +2830,10 @@ typedef enum { /// parent structure. /// typedef struct { - SMBIOS_STRUCTURE Hdr; - SMBIOS_HANDLE RefHandle; - UINT16 StringPropertyId; - UINT8 StringPropertyValue; - SMBIOS_HANDLE ParentHandle; + SMBIOS_STRUCTURE Hdr; + UINT16 StringPropertyId; ///< The enumeration value from STRING_PROPERTY_ID. + SMBIOS_TABLE_STRING StringPropertyValue; + SMBIOS_HANDLE ParentHandle; } SMBIOS_TABLE_TYPE46; ///