summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSainadh Nagolu <sainadhn@ami.com>2022-08-17 15:35:23 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2022-08-18 08:41:22 +0000
commit9102518d297546d349e9dcbaf9a87706ec8529e0 (patch)
tree5b67329d017f7a8348a1ca3e2472a03275764223
parent64a20bea97e6a19651e639a9c24e5f4e37b70f81 (diff)
downloadedk2-9102518d297546d349e9dcbaf9a87706ec8529e0.tar.gz
edk2-9102518d297546d349e9dcbaf9a87706ec8529e0.tar.bz2
edk2-9102518d297546d349e9dcbaf9a87706ec8529e0.zip
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>
-rw-r--r--MdePkg/Include/IndustryStandard/SmBios.h71
1 files changed, 40 insertions, 31 deletions
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.<BR>
(C) Copyright 2015-2017 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) 1985 - 2022, American Megatrends International LLC.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -1504,16 +1505,27 @@ typedef struct {
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;
///