/** @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
#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
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
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
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
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
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
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
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