]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/SmBios.h
MdePkg/Include: Smbios Specification 3.5.0 changes
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / SmBios.h
index 828ea6d753c22b6f3a12ea2321bfc6285a6f9519..2b1567b0528b1e907b95387fab0f67083cf20ad0 100644 (file)
@@ -1,9 +1,10 @@
 /** @file\r
-  Industry Standard Definitions of SMBIOS Table Specification v3.3.0.\r
+  Industry Standard Definitions of SMBIOS Table Specification v3.5.0.\r
 \r
 Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>\r
 (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>\r
 (C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development LP<BR>\r
+Copyright (c) 2022, AMD Incorporated. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -94,6 +95,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE  42\r
 #define SMBIOS_TYPE_TPM_DEVICE                            43\r
 #define SMBIOS_TYPE_PROCESSOR_ADDITIONAL_INFORMATION      44\r
+#define SMBIOS_TYPE_FIRMWARE_INVENTORY_INFORMATION        45\r
+#define SMBIOS_TYPE_STRING_PROPERTY_INFORMATION           46\r
 \r
 ///\r
 /// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.\r
@@ -252,7 +255,9 @@ typedef struct {
   UINT8    TargetContentDistributionEnabled  : 1;\r
   UINT8    UefiSpecificationSupported        : 1;\r
   UINT8    VirtualMachineSupported           : 1;\r
-  UINT8    ExtensionByte2Reserved            : 3;\r
+  UINT8    ManufacturingModeSupported        : 1;\r
+  UINT8    ManufacturingModeEnabled          : 1;\r
+  UINT8    ExtensionByte2Reserved            : 1;\r
 } MBCE_SYSTEM_RESERVED;\r
 \r
 ///\r
@@ -1401,6 +1406,17 @@ typedef struct {
   UINT8    Reserved                : 1; ///< Set to 0.\r
 } MISC_SLOT_CHARACTERISTICS2;\r
 \r
+///\r
+/// System Slots - Slot Height\r
+///\r
+typedef enum {\r
+  SlotHeightNone       = 0x00,\r
+  SlotHeightOther      = 0x01,\r
+  SlotHeightUnknown    = 0x02,\r
+  SlotHeightFullHeight = 0x03,\r
+  SlotHeightLowProfile = 0x04\r
+} MISC_SLOT_HEIGHT;\r
+\r
 ///\r
 /// System Slots - Peer Segment/Bus/Device/Function/Width Groups\r
 ///\r
@@ -1446,6 +1462,10 @@ typedef struct {
   UINT8                         SlotInformation;\r
   UINT8                         SlotPhysicalWidth;\r
   UINT16                        SlotPitch;\r
+  //\r
+  // Add for smbios 3.5\r
+  //\r
+  UINT8                         SlotHeight;             ///< The enumeration value from MISC_SLOT_HEIGHT.\r
 } SMBIOS_TABLE_TYPE9;\r
 \r
 ///\r
@@ -2004,7 +2024,9 @@ typedef enum {
   PointingDeviceInterfaceADB              = 0x08,\r
   PointingDeviceInterfaceBusMouseDB9      = 0xA0,\r
   PointingDeviceInterfaceBusMouseMicroDin = 0xA1,\r
-  PointingDeviceInterfaceUsb              = 0xA2\r
+  PointingDeviceInterfaceUsb              = 0xA2,\r
+  PointingDeviceInterfaceI2c              = 0xA3,\r
+  PointingDeviceInterfaceSpi              = 0xA4\r
 } BUILTIN_POINTING_DEVICE_INTERFACE;\r
 \r
 ///\r
@@ -2508,7 +2530,13 @@ typedef enum {
   OnBoardDeviceExtendedTypeSound          = 0x07,\r
   OnBoardDeviceExtendedTypePATAController = 0x08,\r
   OnBoardDeviceExtendedTypeSATAController = 0x09,\r
-  OnBoardDeviceExtendedTypeSASController  = 0x0A\r
+  OnBoardDeviceExtendedTypeSASController  = 0x0A,\r
+  OnBoardDeviceExtendedTypeWirelessLAN    = 0x0B,\r
+  OnBoardDeviceExtendedTypeBluetooth      = 0x0C,\r
+  OnBoardDeviceExtendedTypeWWAN           = 0x0D,\r
+  OnBoardDeviceExtendedTypeeMMC           = 0x0E,\r
+  OnBoardDeviceExtendedTypeNvme           = 0x0F,\r
+  OnBoardDeviceExtendedTypeUfc            = 0x10\r
 } ONBOARD_DEVICE_EXTENDED_INFO_TYPE;\r
 \r
 ///\r
@@ -2646,6 +2674,112 @@ typedef struct {
   UINT32                 OemDefined;\r
 } SMBIOS_TABLE_TYPE43;\r
 \r
+///\r
+/// Firmware Inventory Version Format Type (Type 45).\r
+///\r
+typedef enum {\r
+  VersionFormatTypeFreeForm   = 0x00,\r
+  VersionFormatTypeMajorMinor = 0x01,\r
+  VersionFormatType32BitHex   = 0x02,\r
+  VersionFormatType64BitHex   = 0x03,\r
+  VersionFormatTypeReserved   = 0x04,  /// 0x04 - 0x7F are reserved\r
+  VersionFormatTypeOem        = 0x80   /// 0x80 - 0xFF are BIOS Vendor/OEM-specific\r
+} FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE;\r
+\r
+///\r
+/// Firmware Inventory Firmware Id Format Type (Type 45).\r
+///\r
+typedef enum {\r
+  FirmwareIdFormatTypeFreeForm     = 0x00,\r
+  FirmwareIdFormatTypeUuid         = 0x01,\r
+  FirmwareIdFormatTypeReserved     = 0x04,  /// 0x04 - 0x7F are reserved\r
+  InventoryFirmwareIdFormatTypeOem = 0x80   /// 0x80 - 0xFF are BIOS Vendor/OEM-specific\r
+} FIRMWARE_INVENTORY_FIRMWARE_ID_FORMAT_TYPE;\r
+\r
+///\r
+/// Firmware Inventory Firmware Characteristics (Type 45).\r
+///\r
+typedef enum {\r
+  CharacteristicsUpdatable      = 0x00,\r
+  CharacteristicsWriteProtected = 0x01,\r
+  CharacteristicsReserved       = 0x02    /// 0x02 - 0x0F are reserved\r
+} FIRMWARE_INVENTORY_CHARACTERISTICS;\r
+\r
+///\r
+/// Firmware Inventory State Information (Type 45).\r
+///\r
+typedef enum {\r
+  FirmwareInventoryStateOther              = 0x01,\r
+  FirmwareInventoryStateUnknown            = 0x02,\r
+  FirmwareInventoryStateDisabled           = 0x03,\r
+  FirmwareInventoryStateEnabled            = 0x04,\r
+  FirmwareInventoryStateAbsent             = 0x05,\r
+  FirmwareInventoryStateStandbyOffline     = 0x06,\r
+  FirmwareInventoryStateStandbySpare       = 0x07,\r
+  FirmwareInventoryStateUnavailableOffline = 0x08,\r
+} FIRMWARE_INVENTORY_STATE;\r
+\r
+///\r
+/// Firmware Inventory Information (Type 45)\r
+///\r
+/// The information in this structure defines an inventory of firmware\r
+/// components in the system. This can include firmware components such as\r
+/// BIOS, BMC, as well as firmware for other devices in the system.\r
+/// The information can be used by software to display the firmware inventory\r
+/// in a uniform manner. It can also be used by a management controller,\r
+/// such as a BMC, for remote system management.\r
+/// This structure is not intended to replace other standard programmatic\r
+/// interfaces for firmware updates.\r
+/// One Type 45 structure is provided for each firmware component.\r
+///\r
+typedef struct {\r
+  SMBIOS_STRUCTURE    Hdr;\r
+  SMBIOS_HANDLE       RefHandle;\r
+\r
+  UINT8               FirmwareComponentName;\r
+  UINT8               FirmwareVersion;\r
+  UINT8               FirmwareVersionFormat;    ///< The enumeration value from FIRMWARE_INVENTORY_VERSION_FORMAT_TYPE\r
+  UINT8               FirmwareId;\r
+  UINT8               FirmwareIdFormat;\r
+  UINT8               ReleaseDate;\r
+  UINT8               Manufacturer;\r
+  UINT8               LowestSupportedVersion;\r
+  UINT64              ImageSize;\r
+  UINT32              Characteristics;\r
+  UINT8               State;\r
+  UINT8               AssociatedComponentCount;\r
+  ///\r
+  /// zero or n-number of handles depends on AssociatedComponentCount\r
+  /// handles are of type SMBIOS_HANDLE\r
+  ///\r
+} SMBIOS_TABLE_TYPE45;\r
+\r
+///\r
+/// String Property IDs (Type 46).\r
+///\r
+typedef enum {\r
+  StringPropertyIdNone       = 0x0000,\r
+  StringPropertyIdDevicePath = 0x0001,\r
+  StringPropertyIdReserved   = 0x0002,  /// Reserved    0x0002 - 0x7FFF\r
+  StringPropertyIdBiosVendor = 0x8000,  /// BIOS vendor 0x8000 - 0xBFFF\r
+  StringPropertyIdOem        = 0xC000   /// OEM range   0xC000 - 0xFFFF\r
+} STRING_PROPERTY_ID;\r
+\r
+///\r
+/// This structure defines a string property for another structure.\r
+/// This allows adding string properties that are common to several structures\r
+/// without having to modify the definitions of these structures.\r
+/// Multiple type 46 structures can add string properties to the same\r
+/// parent structure.\r
+///\r
+typedef struct {\r
+  SMBIOS_STRUCTURE    Hdr;\r
+  SMBIOS_HANDLE       RefHandle;\r
+  UINT16              StringPropertyId;\r
+  UINT8               StringPropertyValue;\r
+  SMBIOS_HANDLE       ParentHandle;\r
+} SMBIOS_TABLE_TYPE46;\r
+\r
 ///\r
 /// Inactive (Type 126)\r
 ///\r
@@ -2710,6 +2844,8 @@ typedef union {
   SMBIOS_TABLE_TYPE42     *Type42;\r
   SMBIOS_TABLE_TYPE43     *Type43;\r
   SMBIOS_TABLE_TYPE44     *Type44;\r
+  SMBIOS_TABLE_TYPE45     *Type45;\r
+  SMBIOS_TABLE_TYPE46     *Type46;\r
   SMBIOS_TABLE_TYPE126    *Type126;\r
   SMBIOS_TABLE_TYPE127    *Type127;\r
   UINT8                   *Raw;\r