diff --git a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h index bbf3cd1e2e..4eabb4d38b 100644 --- a/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h @@ -22,6 +22,9 @@ typedef enum ArchCommonObjectID { EArchCommonObjReserved, ///< 0 - Reserved EArchCommonObjPowerManagementProfileInfo, ///< 1 - Power Management Profile Info + EArchCommonObjSerialPortInfo, ///< 2 - Generic Serial Port Info + EArchCommonObjConsolePortInfo, ///< 3 - Serial Console Port Info + EArchCommonObjSerialDebugPortInfo, ///< 4 - Serial Debug Port Info EArchCommonObjMax } EARCH_COMMON_OBJECT_ID; @@ -39,6 +42,38 @@ typedef struct CmArchCommonPowerManagementProfileInfo { UINT8 PowerManagementProfile; } CM_ARCH_COMMON_POWER_MANAGEMENT_PROFILE_INFO; +/** A structure that describes the + Serial Port information for the Platform. + + ID: EArchCommonObjConsolePortInfo or + EArchCommonObjSerialDebugPortInfo or + EArchCommonObjSerialPortInfo +*/ +typedef struct EArchCommonSerialPortInfo { + /// The physical base address for the serial port + UINT64 BaseAddress; + + /** The serial port interrupt. + 0 indicates that the serial port does not + have an interrupt wired. + */ + UINT32 Interrupt; + + /// The serial port baud rate + UINT64 BaudRate; + + /// The serial port clock + UINT32 Clock; + + /// Serial Port subtype + UINT16 PortSubtype; + + /// The Base address length + UINT64 BaseAddressLength; + + /// The access size + UINT8 AccessSize; +} CM_ARCH_COMMON_SERIAL_PORT_INFO; #pragma pack() diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h index 3d9a151846..4878eb60e3 100644 --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h @@ -35,47 +35,44 @@ typedef enum ArmObjectID { EArmObjGicMsiFrameInfo, ///< 4 - GIC MSI Frame Info EArmObjGicRedistributorInfo, ///< 5 - GIC Redistributor Info EArmObjGicItsInfo, ///< 6 - GIC ITS Info - EArmObjSerialConsolePortInfo, ///< 7 - Serial Console Port Info - EArmObjSerialDebugPortInfo, ///< 8 - Serial Debug Port Info - EArmObjGenericTimerInfo, ///< 9 - Generic Timer Info - EArmObjPlatformGTBlockInfo, ///< 10 - Platform GT Block Info - EArmObjGTBlockTimerFrameInfo, ///< 11 - Generic Timer Block Frame Info - EArmObjPlatformGenericWatchdogInfo, ///< 12 - Platform Generic Watchdog - EArmObjPciConfigSpaceInfo, ///< 13 - PCI Configuration Space Info - EArmObjHypervisorVendorIdentity, ///< 14 - Hypervisor Vendor Id - EArmObjFixedFeatureFlags, ///< 15 - Fixed feature flags for FADT - EArmObjItsGroup, ///< 16 - ITS Group - EArmObjNamedComponent, ///< 17 - Named Component - EArmObjRootComplex, ///< 18 - Root Complex - EArmObjSmmuV1SmmuV2, ///< 19 - SMMUv1 or SMMUv2 - EArmObjSmmuV3, ///< 20 - SMMUv3 - EArmObjPmcg, ///< 21 - PMCG - EArmObjGicItsIdentifierArray, ///< 22 - GIC ITS Identifier Array - EArmObjIdMappingArray, ///< 23 - ID Mapping Array - EArmObjSmmuInterruptArray, ///< 24 - SMMU Interrupt Array - EArmObjProcHierarchyInfo, ///< 25 - Processor Hierarchy Info - EArmObjCacheInfo, ///< 26 - Cache Info - EArmObjCmRef, ///< 27 - CM Object Reference - EArmObjMemoryAffinityInfo, ///< 28 - Memory Affinity Info - EArmObjDeviceHandleAcpi, ///< 29 - Device Handle Acpi - EArmObjDeviceHandlePci, ///< 30 - Device Handle Pci - EArmObjGenericInitiatorAffinityInfo, ///< 31 - Generic Initiator Affinity - EArmObjSerialPortInfo, ///< 32 - Generic Serial Port Info - EArmObjCmn600Info, ///< 33 - CMN-600 Info - EArmObjLpiInfo, ///< 34 - Lpi Info - EArmObjPciAddressMapInfo, ///< 35 - Pci Address Map Info - EArmObjPciInterruptMapInfo, ///< 36 - Pci Interrupt Map Info - EArmObjRmr, ///< 37 - Reserved Memory Range Node - EArmObjMemoryRangeDescriptor, ///< 38 - Memory Range Descriptor - EArmObjCpcInfo, ///< 39 - Continuous Performance Control Info - EArmObjPccSubspaceType0Info, ///< 40 - Pcc Subspace Type 0 Info - EArmObjPccSubspaceType1Info, ///< 41 - Pcc Subspace Type 2 Info - EArmObjPccSubspaceType2Info, ///< 42 - Pcc Subspace Type 2 Info - EArmObjPccSubspaceType3Info, ///< 43 - Pcc Subspace Type 3 Info - EArmObjPccSubspaceType4Info, ///< 44 - Pcc Subspace Type 4 Info - EArmObjPccSubspaceType5Info, ///< 45 - Pcc Subspace Type 5 Info - EArmObjEtInfo, ///< 46 - Embedded Trace Extension/Module Info - EArmObjPsdInfo, ///< 47 - P-State Dependency (PSD) Info + EArmObjGenericTimerInfo, ///< 7 - Generic Timer Info + EArmObjPlatformGTBlockInfo, ///< 8 - Platform GT Block Info + EArmObjGTBlockTimerFrameInfo, ///< 9 - Generic Timer Block Frame Info + EArmObjPlatformGenericWatchdogInfo, ///< 10 - Platform Generic Watchdog + EArmObjPciConfigSpaceInfo, ///< 11 - PCI Configuration Space Info + EArmObjHypervisorVendorIdentity, ///< 12 - Hypervisor Vendor Id + EArmObjFixedFeatureFlags, ///< 13 - Fixed feature flags for FADT + EArmObjItsGroup, ///< 14 - ITS Group + EArmObjNamedComponent, ///< 15 - Named Component + EArmObjRootComplex, ///< 16 - Root Complex + EArmObjSmmuV1SmmuV2, ///< 17 - SMMUv1 or SMMUv2 + EArmObjSmmuV3, ///< 18 - SMMUv3 + EArmObjPmcg, ///< 19 - PMCG + EArmObjGicItsIdentifierArray, ///< 20 - GIC ITS Identifier Array + EArmObjIdMappingArray, ///< 21 - ID Mapping Array + EArmObjSmmuInterruptArray, ///< 22 - SMMU Interrupt Array + EArmObjProcHierarchyInfo, ///< 23 - Processor Hierarchy Info + EArmObjCacheInfo, ///< 24 - Cache Info + EArmObjCmRef, ///< 25 - CM Object Reference + EArmObjMemoryAffinityInfo, ///< 26 - Memory Affinity Info + EArmObjDeviceHandleAcpi, ///< 27 - Device Handle Acpi + EArmObjDeviceHandlePci, ///< 28 - Device Handle Pci + EArmObjGenericInitiatorAffinityInfo, ///< 29 - Generic Initiator Affinity + EArmObjCmn600Info, ///< 30 - CMN-600 Info + EArmObjLpiInfo, ///< 31 - Lpi Info + EArmObjPciAddressMapInfo, ///< 32 - Pci Address Map Info + EArmObjPciInterruptMapInfo, ///< 33 - Pci Interrupt Map Info + EArmObjRmr, ///< 34 - Reserved Memory Range Node + EArmObjMemoryRangeDescriptor, ///< 35 - Memory Range Descriptor + EArmObjCpcInfo, ///< 36 - Continuous Performance Control Info + EArmObjPccSubspaceType0Info, ///< 37 - Pcc Subspace Type 0 Info + EArmObjPccSubspaceType1Info, ///< 38 - Pcc Subspace Type 2 Info + EArmObjPccSubspaceType2Info, ///< 39 - Pcc Subspace Type 2 Info + EArmObjPccSubspaceType3Info, ///< 40 - Pcc Subspace Type 3 Info + EArmObjPccSubspaceType4Info, ///< 41 - Pcc Subspace Type 4 Info + EArmObjPccSubspaceType5Info, ///< 42 - Pcc Subspace Type 5 Info + EArmObjEtInfo, ///< 43 - Embedded Trace Extension/Module Info + EArmObjPsdInfo, ///< 44 - P-State Dependency (PSD) Info EArmObjMax } EARM_OBJECT_ID; @@ -297,39 +294,6 @@ typedef struct CmArmGicItsInfo { UINT32 ProximityDomain; } CM_ARM_GIC_ITS_INFO; -/** A structure that describes the - Serial Port information for the Platform. - - ID: EArmObjSerialConsolePortInfo or - EArmObjSerialDebugPortInfo or - EArmObjSerialPortInfo -*/ -typedef struct CmArmSerialPortInfo { - /// The physical base address for the serial port - UINT64 BaseAddress; - - /** The serial port interrupt. - 0 indicates that the serial port does not - have an interrupt wired. - */ - UINT32 Interrupt; - - /// The serial port baud rate - UINT64 BaudRate; - - /// The serial port clock - UINT32 Clock; - - /// Serial Port subtype - UINT16 PortSubtype; - - /// The Base address length - UINT64 BaseAddressLength; - - /// The access size - UINT8 AccessSize; -} CM_ARM_SERIAL_PORT_INFO; - /** A structure that describes the Generic Timer information for the Platform. diff --git a/DynamicTablesPkg/Include/Library/SsdtSerialPortFixupLib.h b/DynamicTablesPkg/Include/Library/SsdtSerialPortFixupLib.h index 4835f314c4..ac7b39f552 100644 --- a/DynamicTablesPkg/Include/Library/SsdtSerialPortFixupLib.h +++ b/DynamicTablesPkg/Include/Library/SsdtSerialPortFixupLib.h @@ -29,11 +29,11 @@ EFI_STATUS EFIAPI BuildSsdtSerialPortTable ( - IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *AcpiTableInfo, - IN CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfo, - IN CONST CHAR8 *Name, - IN CONST UINT64 Uid, - OUT EFI_ACPI_DESCRIPTION_HEADER **Table + IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *AcpiTableInfo, + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo, + IN CONST CHAR8 *Name, + IN CONST UINT64 Uid, + OUT EFI_ACPI_DESCRIPTION_HEADER **Table ); /** Free an SSDT table previously created by @@ -52,7 +52,7 @@ FreeSsdtSerialPortTable ( /** Validate the Serial Port Information. - @param [in] SerialPortInfoTable Table of CM_ARM_SERIAL_PORT_INFO. + @param [in] SerialPortInfoTable Table of CM_ARCH_COMMON_SERIAL_PORT_INFO. @param [in] SerialPortCount Count of SerialPort in the table. @retval EFI_SUCCESS Success. @@ -61,8 +61,8 @@ FreeSsdtSerialPortTable ( EFI_STATUS EFIAPI ValidateSerialPortInfo ( - IN CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfoTable, - IN UINT32 SerialPortCount + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfoTable, + IN UINT32 SerialPortCount ); #endif // SSDT_SERIAL_PORT_LIB_H_ diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c index f6dfb3d94c..fbf2ba3733 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiDbg2LibArm/Dbg2Generator.c @@ -33,7 +33,7 @@ Requirements: The following Configuration Manager Object(s) are required by this Generator: - - EArmObjSerialDebugPortInfo + - EArchCommonObjSerialDebugPortInfo */ #pragma pack(1) @@ -181,9 +181,9 @@ DBG2_TABLE AcpiDbg2 = { debug port information from the Configuration Manager */ GET_OBJECT_LIST ( - EObjNameSpaceArm, - EArmObjSerialDebugPortInfo, - CM_ARM_SERIAL_PORT_INFO + EObjNameSpaceArchCommon, + EArchCommonObjSerialDebugPortInfo, + CM_ARCH_COMMON_SERIAL_PORT_INFO ); /** Initialize the PL011/SBSA UART with the parameters obtained from @@ -198,7 +198,7 @@ GET_OBJECT_LIST ( STATIC EFI_STATUS SetupDebugUart ( - IN CONST CM_ARM_SERIAL_PORT_INFO *CONST SerialPortInfo + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *CONST SerialPortInfo ) { EFI_STATUS Status; @@ -329,10 +329,10 @@ BuildDbg2TableEx ( OUT UINTN *CONST TableCount ) { - EFI_STATUS Status; - CM_ARM_SERIAL_PORT_INFO *SerialPortInfo; - UINT32 SerialPortCount; - EFI_ACPI_DESCRIPTION_HEADER **TableList; + EFI_STATUS Status; + CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo; + UINT32 SerialPortCount; + EFI_ACPI_DESCRIPTION_HEADER **TableList; ASSERT (This != NULL); ASSERT (AcpiTableInfo != NULL); @@ -358,7 +358,7 @@ BuildDbg2TableEx ( *Table = NULL; - Status = GetEArmObjSerialDebugPortInfo ( + Status = GetEArchCommonObjSerialDebugPortInfo ( CfgMgrProtocol, CM_NULL_TOKEN, &SerialPortInfo, diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c index 59cbacbfbb..6f027f3bf9 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c @@ -33,7 +33,7 @@ Requirements: The following Configuration Manager Object(s) are required by this Generator: - - EArmObjSerialConsolePortInfo + - EArchCommonObjConsolePortInfo NOTE: This implementation ignores the possibility that the Serial settings may be modified from the UEFI Shell. A more complex handler would be needed @@ -98,9 +98,9 @@ EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE AcpiSpcr = { Port Information from the Configuration Manager. */ GET_OBJECT_LIST ( - EObjNameSpaceArm, - EArmObjSerialConsolePortInfo, - CM_ARM_SERIAL_PORT_INFO + EObjNameSpaceArchCommon, + EArchCommonObjConsolePortInfo, + CM_ARCH_COMMON_SERIAL_PORT_INFO ) /** Free any resources allocated for constructing the tables. @@ -200,10 +200,10 @@ BuildSpcrTableEx ( OUT UINTN *CONST TableCount ) { - EFI_STATUS Status; - CM_ARM_SERIAL_PORT_INFO *SerialPortInfo; - UINT32 SerialPortCount; - EFI_ACPI_DESCRIPTION_HEADER **TableList; + EFI_STATUS Status; + CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo; + UINT32 SerialPortCount; + EFI_ACPI_DESCRIPTION_HEADER **TableList; ASSERT (This != NULL); ASSERT (AcpiTableInfo != NULL); @@ -229,7 +229,7 @@ BuildSpcrTableEx ( *Table = NULL; - Status = GetEArmObjSerialConsolePortInfo ( + Status = GetEArchCommonObjConsolePortInfo ( CfgMgrProtocol, CM_NULL_TOKEN, &SerialPortInfo, diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtSerialPortLibArm/SsdtSerialPortGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtSerialPortLibArm/SsdtSerialPortGenerator.c index b850320eed..671ba05740 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtSerialPortLibArm/SsdtSerialPortGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtSerialPortLibArm/SsdtSerialPortGenerator.c @@ -29,16 +29,16 @@ Requirements: The following Configuration Manager Object(s) are required by this Generator: - - EArmObjSerialPortInfo + - EArchCommonObjSerialPortInfo */ /** This macro expands to a function that retrieves the Serial-port information from the Configuration Manager. */ GET_OBJECT_LIST ( - EObjNameSpaceArm, - EArmObjSerialPortInfo, - CM_ARM_SERIAL_PORT_INFO + EObjNameSpaceArchCommon, + EArchCommonObjSerialPortInfo, + CM_ARCH_COMMON_SERIAL_PORT_INFO ); /** Starting value for the UID to represent the serial ports. @@ -167,13 +167,13 @@ BuildSsdtSerialPortTableEx ( OUT UINTN *CONST TableCount ) { - EFI_STATUS Status; - CM_ARM_SERIAL_PORT_INFO *SerialPortInfo; - UINT32 SerialPortCount; - UINTN Index; - CHAR8 NewName[AML_NAME_SEG_SIZE + 1]; - UINT64 Uid; - EFI_ACPI_DESCRIPTION_HEADER **TableList; + EFI_STATUS Status; + CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo; + UINT32 SerialPortCount; + UINTN Index; + CHAR8 NewName[AML_NAME_SEG_SIZE + 1]; + UINT64 Uid; + EFI_ACPI_DESCRIPTION_HEADER **TableList; ASSERT (This != NULL); ASSERT (AcpiTableInfo != NULL); @@ -185,7 +185,7 @@ BuildSsdtSerialPortTableEx ( *Table = NULL; - Status = GetEArmObjSerialPortInfo ( + Status = GetEArchCommonObjSerialPortInfo ( CfgMgrProtocol, CM_NULL_TOKEN, &SerialPortInfo, diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c index ef2a8dcfdd..412bf41647 100644 --- a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c +++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c @@ -150,47 +150,44 @@ CM_OBJECT_TOKEN_FIXER TokenFixer[EArmObjMax] = { NULL, ///< 4 - GIC MSI Frame Info NULL, ///< 5 - GIC Redistributor Info NULL, ///< 6 - GIC ITS Info - NULL, ///< 7 - Serial Console Port Info - NULL, ///< 8 - Serial Debug Port Info - NULL, ///< 9 - Generic Timer Info - NULL, ///< 10 - Platform GT Block Info - NULL, ///< 11 - Generic Timer Block Frame Info - NULL, ///< 12 - Platform Generic Watchdog - NULL, ///< 13 - PCI Configuration Space Info - NULL, ///< 14 - Hypervisor Vendor Id - NULL, ///< 15 - Fixed feature flags for FADT - TokenFixerItsGroup, ///< 16 - ITS Group - TokenFixerNamedComponentNode, ///< 17 - Named Component - TokenFixerRootComplexNode, ///< 18 - Root Complex - TokenFixerNotImplemented, ///< 19 - SMMUv1 or SMMUv2 - TokenFixerSmmuV3Node, ///< 20 - SMMUv3 - TokenFixerNotImplemented, ///< 21 - PMCG - NULL, ///< 22 - GIC ITS Identifier Array - NULL, ///< 23 - ID Mapping Array - NULL, ///< 24 - SMMU Interrupt Array - TokenFixerNotImplemented, ///< 25 - Processor Hierarchy Info - TokenFixerNotImplemented, ///< 26 - Cache Info - NULL, ///< 27 - CM Object Reference - NULL, ///< 28 - Memory Affinity Info - NULL, ///< 29 - Device Handle Acpi - NULL, ///< 30 - Device Handle Pci - NULL, ///< 31 - Generic Initiator Affinity - NULL, ///< 32 - Generic Serial Port Info - NULL, ///< 33 - CMN-600 Info - NULL, ///< 34 - Lpi Info - NULL, ///< 35 - Pci Address Map Info - NULL, ///< 36 - Pci Interrupt Map Info - NULL, ///< 37 - Reserved Memory Range Node - NULL, ///< 38 - Memory Range Descriptor - NULL, ///< 39 - Continuous Performance Control Info - NULL, ///< 40 - Pcc Subspace Type 0 Info - NULL, ///< 41 - Pcc Subspace Type 2 Info - NULL, ///< 42 - Pcc Subspace Type 2 Info - NULL, ///< 43 - Pcc Subspace Type 3 Info - NULL, ///< 44 - Pcc Subspace Type 4 Info - NULL, ///< 45 - Pcc Subspace Type 5 Info - NULL, ///< 46 - Embedded Trace Extension/Module Info - NULL ///< 47 - P-State Dependency (PSD) Info + NULL, ///< 7 - Generic Timer Info + NULL, ///< 8 - Platform GT Block Info + NULL, ///< 9 - Generic Timer Block Frame Info + NULL, ///< 10 - Platform Generic Watchdog + NULL, ///< 11 - PCI Configuration Space Info + NULL, ///< 12 - Hypervisor Vendor Id + NULL, ///< 13 - Fixed feature flags for FADT + TokenFixerItsGroup, ///< 14 - ITS Group + TokenFixerNamedComponentNode, ///< 15 - Named Component + TokenFixerRootComplexNode, ///< 16 - Root Complex + TokenFixerNotImplemented, ///< 17 - SMMUv1 or SMMUv2 + TokenFixerSmmuV3Node, ///< 18 - SMMUv3 + TokenFixerNotImplemented, ///< 19 - PMCG + NULL, ///< 20 - GIC ITS Identifier Array + NULL, ///< 21 - ID Mapping Array + NULL, ///< 22 - SMMU Interrupt Array + TokenFixerNotImplemented, ///< 23 - Processor Hierarchy Info + TokenFixerNotImplemented, ///< 24 - Cache Info + NULL, ///< 25 - Memory Affinity Info + NULL, ///< 26 - Memory Affinity Info + NULL, ///< 27 - Device Handle Acpi + NULL, ///< 28 - Device Handle Pci + NULL, ///< 29 - Generic Initiator Affinity + NULL, ///< 30 - CMN-600 Info + NULL, ///< 31 - Lpi Info + NULL, ///< 32 - Pci Address Map Info + NULL, ///< 33 - Pci Interrupt Map Info + NULL, ///< 34 - Reserved Memory Range Node + NULL, ///< 35 - Memory Range Descriptor + NULL, ///< 36 - Continuous Performance Control Info + NULL, ///< 37 - Pcc Subspace Type 0 Info + NULL, ///< 38 - Pcc Subspace Type 2 Info + NULL, ///< 39 - Pcc Subspace Type 2 Info + NULL, ///< 40 - Pcc Subspace Type 3 Info + NULL, ///< 41 - Pcc Subspace Type 4 Info + NULL, ///< 42 - Pcc Subspace Type 5 Info + NULL, ///< 43 - Embedded Trace Extension/Module Info + NULL ///< 44 - P-State Dependency (PSD) Info }; /** CmObj token fixer. diff --git a/DynamicTablesPkg/Library/Common/SsdtSerialPortFixupLib/SsdtSerialPortFixupLib.c b/DynamicTablesPkg/Library/Common/SsdtSerialPortFixupLib/SsdtSerialPortFixupLib.c index f2594de2e9..e8eef4048d 100644 --- a/DynamicTablesPkg/Library/Common/SsdtSerialPortFixupLib/SsdtSerialPortFixupLib.c +++ b/DynamicTablesPkg/Library/Common/SsdtSerialPortFixupLib/SsdtSerialPortFixupLib.c @@ -46,7 +46,7 @@ extern CHAR8 ssdtserialporttemplate_aml_code[]; /** Validate the Serial Port Information. - @param [in] SerialPortInfoTable Table of CM_ARM_SERIAL_PORT_INFO. + @param [in] SerialPortInfoTable Table of CM_ARCH_COMMON_SERIAL_PORT_INFO. @param [in] SerialPortCount Count of SerialPort in the table. @retval EFI_SUCCESS Success. @@ -55,12 +55,12 @@ extern CHAR8 ssdtserialporttemplate_aml_code[]; EFI_STATUS EFIAPI ValidateSerialPortInfo ( - IN CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfoTable, - IN UINT32 SerialPortCount + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfoTable, + IN UINT32 SerialPortCount ) { - UINT32 Index; - CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfo; + UINT32 Index; + CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo; if ((SerialPortInfoTable == NULL) || (SerialPortCount == 0)) @@ -163,9 +163,9 @@ STATIC EFI_STATUS EFIAPI FixupIds ( - IN AML_ROOT_NODE_HANDLE RootNodeHandle, - IN CONST UINT64 Uid, - IN CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfo + IN AML_ROOT_NODE_HANDLE RootNodeHandle, + IN CONST UINT64 Uid, + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo ) { EFI_STATUS Status; @@ -290,8 +290,8 @@ STATIC EFI_STATUS EFIAPI FixupCrs ( - IN AML_ROOT_NODE_HANDLE RootNodeHandle, - IN CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfo + IN AML_ROOT_NODE_HANDLE RootNodeHandle, + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo ) { EFI_STATUS Status; @@ -366,9 +366,9 @@ STATIC EFI_STATUS EFIAPI FixupName ( - IN AML_ROOT_NODE_HANDLE RootNodeHandle, - IN CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfo, - IN CONST CHAR8 *Name + IN AML_ROOT_NODE_HANDLE RootNodeHandle, + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo, + IN CONST CHAR8 *Name ) { EFI_STATUS Status; @@ -410,11 +410,11 @@ STATIC EFI_STATUS EFIAPI FixupSerialPortInfo ( - IN AML_ROOT_NODE_HANDLE RootNodeHandle, - IN CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfo, - IN CONST CHAR8 *Name, - IN CONST UINT64 Uid, - OUT EFI_ACPI_DESCRIPTION_HEADER **Table + IN AML_ROOT_NODE_HANDLE RootNodeHandle, + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo, + IN CONST CHAR8 *Name, + IN CONST UINT64 Uid, + OUT EFI_ACPI_DESCRIPTION_HEADER **Table ) { EFI_STATUS Status; @@ -480,11 +480,11 @@ FreeSsdtSerialPortTable ( EFI_STATUS EFIAPI BuildSsdtSerialPortTable ( - IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *AcpiTableInfo, - IN CONST CM_ARM_SERIAL_PORT_INFO *SerialPortInfo, - IN CONST CHAR8 *Name, - IN CONST UINT64 Uid, - OUT EFI_ACPI_DESCRIPTION_HEADER **Table + IN CONST CM_STD_OBJ_ACPI_TABLE_INFO *AcpiTableInfo, + IN CONST CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo, + IN CONST CHAR8 *Name, + IN CONST UINT64 Uid, + OUT EFI_ACPI_DESCRIPTION_HEADER **Table ) { EFI_STATUS Status; diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c index 0d3e53312b..334d2a0265 100644 --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c @@ -122,10 +122,10 @@ STATIC CONST CM_OBJ_PARSER CmArmGicItsInfoParser[] = { { "ProximityDomain", 4, "0x%x", NULL } }; -/** A parser for EArmObjSerialConsolePortInfo, - EArmObjSerialDebugPortInfo and EArmObjSerialPortInfo. +/** A parser for EArchCommonObjConsolePortInfo, + EArchCommonObjSerialDebugPortInfo and EArchCommonObjSerialPortInfo. */ -STATIC CONST CM_OBJ_PARSER CmArmSerialPortInfoParser[] = { +STATIC CONST CM_OBJ_PARSER CmArchCommonSerialPortInfoParser[] = { { "BaseAddress", 8, "0x%llx", NULL }, { "Interrupt", 4, "0x%x", NULL }, { "BaudRate", 8, "0x%llx", NULL }, @@ -672,6 +672,9 @@ STATIC CONST CM_OBJ_PARSER CmArmPsdInfoParser[] = { STATIC CONST CM_OBJ_PARSER_ARRAY ArchCommonNamespaceObjectParser[] = { CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjReserved), CM_PARSER_ADD_OBJECT (EArchCommonObjPowerManagementProfileInfo,CmArchCommonPowerManagementProfileInfoParser), + CM_PARSER_ADD_OBJECT (EArchCommonObjSerialPortInfo, CmArchCommonSerialPortInfoParser), + CM_PARSER_ADD_OBJECT (EArchCommonObjConsolePortInfo, CmArchCommonSerialPortInfoParser), + CM_PARSER_ADD_OBJECT (EArchCommonObjSerialDebugPortInfo, CmArchCommonSerialPortInfoParser), CM_PARSER_ADD_OBJECT_RESERVED (EArchCommonObjMax) }; @@ -685,8 +688,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = { CM_PARSER_ADD_OBJECT (EArmObjGicMsiFrameInfo, CmArmGicMsiFrameInfoParser), CM_PARSER_ADD_OBJECT (EArmObjGicRedistributorInfo, CmArmGicRedistInfoParser), CM_PARSER_ADD_OBJECT (EArmObjGicItsInfo, CmArmGicItsInfoParser), - CM_PARSER_ADD_OBJECT (EArmObjSerialConsolePortInfo, CmArmSerialPortInfoParser), - CM_PARSER_ADD_OBJECT (EArmObjSerialDebugPortInfo, CmArmSerialPortInfoParser), CM_PARSER_ADD_OBJECT (EArmObjGenericTimerInfo, CmArmGenericTimerInfoParser), CM_PARSER_ADD_OBJECT (EArmObjPlatformGTBlockInfo, CmArmGTBlockInfoParser), CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo, CmArmGTBlockTimerFrameInfoParser), @@ -710,7 +711,6 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = { CM_PARSER_ADD_OBJECT (EArmObjDeviceHandleAcpi, CmArmDeviceHandleAcpiParser), CM_PARSER_ADD_OBJECT (EArmObjDeviceHandlePci, CmArmDeviceHandlePciParser), CM_PARSER_ADD_OBJECT (EArmObjGenericInitiatorAffinityInfo,CmArmGenericInitiatorAffinityInfoParser), - CM_PARSER_ADD_OBJECT (EArmObjSerialPortInfo, CmArmSerialPortInfoParser), CM_PARSER_ADD_OBJECT (EArmObjCmn600Info, CmArmCmn600InfoParser), CM_PARSER_ADD_OBJECT (EArmObjLpiInfo, CmArmLpiInfoParser), CM_PARSER_ADD_OBJECT (EArmObjPciAddressMapInfo, CmArmPciAddressMapInfoParser), diff --git a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.c b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.c index 732b482eeb..f17ad2e842 100644 --- a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.c +++ b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.c @@ -71,7 +71,7 @@ CONST COMPATIBILITY_INFO SerialSbsaCompatibleInfo = { @param [in] Fdt Pointer to a Flattened Device Tree (Fdt). @param [in] SerialPortNode Offset of a serial-port node. - @param [in] SerialPortInfo The CM_ARM_SERIAL_PORT_INFO to populate. + @param [in] SerialPortInfo The CM_ARCH_COMMON_SERIAL_PORT_INFO to populate. @retval EFI_SUCCESS The function completed successfully. @retval EFI_ABORTED An error occurred. @@ -82,9 +82,9 @@ STATIC EFI_STATUS EFIAPI SerialPortNodeParser ( - IN CONST VOID *Fdt, - IN INT32 SerialPortNode, - IN CM_ARM_SERIAL_PORT_INFO *SerialPortInfo + IN CONST VOID *Fdt, + IN INT32 SerialPortNode, + IN CM_ARCH_COMMON_SERIAL_PORT_INFO *SerialPortInfo ) { EFI_STATUS Status; @@ -313,7 +313,7 @@ GetSerialConsoleNode ( return EFI_SUCCESS; } -/** CM_ARM_SERIAL_PORT_INFO dispatcher function (for a generic serial-port). +/** CM_ARCH_COMMON_SERIAL_PORT_INFO dispatcher function (for a generic serial-port). @param [in] FdtParserHandle A handle to the parser instance. @param [in] GenericSerialInfo Pointer to a serial port info list. @@ -331,9 +331,9 @@ EFI_STATUS EFIAPI ArmSerialPortInfoDispatch ( IN CONST FDT_HW_INFO_PARSER_HANDLE FdtParserHandle, - IN CM_ARM_SERIAL_PORT_INFO *GenericSerialInfo, + IN CM_ARCH_COMMON_SERIAL_PORT_INFO *GenericSerialInfo, IN INT32 NodeCount, - IN EARM_OBJECT_ID SerialObjectId + IN EARCH_COMMON_OBJECT_ID SerialObjectId ) { EFI_STATUS Status; @@ -344,9 +344,9 @@ ArmSerialPortInfoDispatch ( return EFI_INVALID_PARAMETER; } - if ((SerialObjectId != EArmObjSerialPortInfo) && - (SerialObjectId != EArmObjSerialDebugPortInfo) && - (SerialObjectId != EArmObjSerialConsolePortInfo)) + if ((SerialObjectId != EArchCommonObjSerialPortInfo) && + (SerialObjectId != EArchCommonObjSerialDebugPortInfo) && + (SerialObjectId != EArchCommonObjConsolePortInfo)) { ASSERT (0); return EFI_INVALID_PARAMETER; @@ -354,10 +354,10 @@ ArmSerialPortInfoDispatch ( // Dispatch the Generic Serial ports Status = CreateCmObjDesc ( - CREATE_CM_ARM_OBJECT_ID (SerialObjectId), + CREATE_CM_ARCH_COMMON_OBJECT_ID (SerialObjectId), NodeCount, GenericSerialInfo, - sizeof (CM_ARM_SERIAL_PORT_INFO) * NodeCount, + sizeof (CM_ARCH_COMMON_SERIAL_PORT_INFO) * NodeCount, &NewCmObjDesc ); if (EFI_ERROR (Status)) { @@ -372,19 +372,19 @@ ArmSerialPortInfoDispatch ( return Status; } -/** CM_ARM_SERIAL_PORT_INFO parser function (for debug/console serial-port). +/** CM_ARCH_COMMON_SERIAL_PORT_INFO parser function (for debug/console serial-port). This parser expects FdtBranch to be the debug serial-port node. At most one CmObj is created. The following structure is populated: - typedef struct CmArmSerialPortInfo { + typedef struct EArchCommonSerialPortInfo { UINT64 BaseAddress; // {Populated} UINT32 Interrupt; // {Populated} UINT64 BaudRate; // {default} UINT32 Clock; // {Populated} UINT16 PortSubtype; // {Populated} UINT64 BaseAddressLength // {Populated} - } CM_ARM_SERIAL_PORT_INFO; + } CM_ARCH_COMMON_SERIAL_PORT_INFO; A parser parses a Device Tree to populate a specific CmObj type. None, one or many CmObj can be created by the parser. @@ -396,7 +396,8 @@ ArmSerialPortInfoDispatch ( @param [in] FdtParserHandle A handle to the parser instance. @param [in] FdtBranch When searching for DT node name, restrict the search to this Device Tree branch. - @param [in] SerialObjectId ArmNamespace Object ID for the serial port. + @param [in] SerialObjectId ArchCommon Namespace Object ID for the serial + port. @retval EFI_SUCCESS The function completed successfully. @retval EFI_ABORTED An error occurred. @@ -410,14 +411,14 @@ EFIAPI ArmSerialPortInfoParser ( IN CONST FDT_HW_INFO_PARSER_HANDLE FdtParserHandle, IN INT32 FdtBranch, - IN EARM_OBJECT_ID SerialObjectId + IN EARCH_COMMON_OBJECT_ID SerialObjectId ) { - EFI_STATUS Status; - CM_ARM_SERIAL_PORT_INFO SerialInfo; + EFI_STATUS Status; + CM_ARCH_COMMON_SERIAL_PORT_INFO SerialInfo; - if ((SerialObjectId != EArmObjSerialDebugPortInfo) && - (SerialObjectId != EArmObjSerialConsolePortInfo)) + if ((SerialObjectId != EArchCommonObjSerialDebugPortInfo) && + (SerialObjectId != EArchCommonObjConsolePortInfo)) { ASSERT (0); return EFI_INVALID_PARAMETER; @@ -447,11 +448,11 @@ ArmSerialPortInfoParser ( /** SerialPort dispatcher. - This disptacher populates the CM_ARM_SERIAL_PORT_INFO structure for + This disptacher populates the CM_ARCH_COMMON_SERIAL_PORT_INFO structure for the following CM_OBJ_ID: - - EArmObjSerialConsolePortInfo - - EArmObjSerialDebugPortInfo - - EArmObjSerialPortInfo + - EArchCommonObjConsolePortInfo + - EArchCommonObjSerialDebugPortInfo + - EArchCommonObjSerialPortInfo A parser parses a Device Tree to populate a specific CmObj type. None, one or many CmObj can be created by the parser. @@ -477,16 +478,16 @@ SerialPortDispatcher ( IN INT32 FdtBranch ) { - EFI_STATUS Status; - INT32 SerialConsoleNode; - INT32 SerialDebugNode; - INT32 SerialNode; - UINT32 Index; - UINT32 SerialNodeCount; - UINT32 SerialNodesRemaining; - CM_ARM_SERIAL_PORT_INFO *GenericSerialInfo; - UINT32 GenericSerialIndex; - VOID *Fdt; + EFI_STATUS Status; + INT32 SerialConsoleNode; + INT32 SerialDebugNode; + INT32 SerialNode; + UINT32 Index; + UINT32 SerialNodeCount; + UINT32 SerialNodesRemaining; + CM_ARCH_COMMON_SERIAL_PORT_INFO *GenericSerialInfo; + UINT32 GenericSerialIndex; + VOID *Fdt; if (FdtParserHandle == NULL) { ASSERT (0); @@ -531,7 +532,7 @@ SerialPortDispatcher ( Status = ArmSerialPortInfoParser ( FdtParserHandle, SerialConsoleNode, - EArmObjSerialConsolePortInfo + EArchCommonObjConsolePortInfo ); if (EFI_ERROR (Status)) { ASSERT (0); @@ -550,7 +551,7 @@ SerialPortDispatcher ( SerialNodesRemaining--; GenericSerialInfo = AllocateZeroPool ( SerialNodesRemaining * - sizeof (CM_ARM_SERIAL_PORT_INFO) + sizeof (CM_ARCH_COMMON_SERIAL_PORT_INFO) ); if (GenericSerialInfo == NULL) { ASSERT (0); @@ -589,7 +590,7 @@ SerialPortDispatcher ( Status = ArmSerialPortInfoParser ( FdtParserHandle, SerialDebugNode, - EArmObjSerialDebugPortInfo + EArchCommonObjSerialDebugPortInfo ); if (EFI_ERROR (Status)) { ASSERT (0); @@ -620,7 +621,7 @@ SerialPortDispatcher ( FdtParserHandle, GenericSerialInfo, GenericSerialIndex, - EArmObjSerialPortInfo + EArchCommonObjSerialPortInfo ); } diff --git a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.h b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.h index de08e57e6c..037c409d45 100644 --- a/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.h +++ b/DynamicTablesPkg/Library/FdtHwInfoParserLib/Serial/ArmSerialPortParser.h @@ -14,11 +14,11 @@ /** SerialPort dispatcher. - This disptacher populates the CM_ARM_SERIAL_PORT_INFO structure for + This disptacher populates the CM_ARCH_COMMON_SERIAL_PORT_INFO structure for the following CM_OBJ_ID: - - EArmObjSerialConsolePortInfo - - EArmObjSerialDebugPortInfo - - EArmObjSerialPortInfo + - EArchCommonObjConsolePortInfo + - EArchCommonObjSerialDebugPortInfo + - EArchCommonObjSerialPortInfo A parser parses a Device Tree to populate a specific CmObj type. None, one or many CmObj can be created by the parser. diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md index 3295bb2993..90f03f00e7 100644 --- a/DynamicTablesPkg/Readme.md +++ b/DynamicTablesPkg/Readme.md @@ -447,47 +447,44 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager | 4 | GIC MSI Frame Info | | | 5 | GIC Redistributor Info | | | 6 | GIC ITS Info | | -| 7 | Serial Console Port Info | Move to Arch Common NS | -| 8 | Serial Debug Port Info | Move to Arch Common NS | -| 9 | Generic Timer Info | | -| 10 | Platform GT Block Info | | -| 11 | Generic Timer Block Frame Info | | -| 12 | Platform Generic Watchdog | | -| 13 | PCI Configuration Space Info | Move to Arch Common NS | -| 14 | Hypervisor Vendor Id | Move to Arch Common NS | -| 15 | Fixed feature flags for FADT | Move to Arch Common NS | -| 16 | ITS Group | | -| 17 | Named Component | | -| 18 | Root Complex | | -| 19 | SMMUv1 or SMMUv2 | | -| 20 | SMMUv3 | | -| 21 | PMCG | | -| 22 | GIC ITS Identifier Array | | -| 23 | ID Mapping Array | | -| 24 | SMMU Interrupt Array | | -| 25 | Processor Hierarchy Info | Move to Arch Common NS | -| 26 | Cache Info | Move to Arch Common NS | -| 27 | CM Object Reference | Move to Arch Common NS | -| 28 | Memory Affinity Info | Move to Arch Common NS | -| 29 | Device Handle Acpi | Move to Arch Common NS | -| 30 | Device Handle PCI | Move to Arch Common NS | -| 31 | Generic Initiator Affinity Info | Move to Arch Common NS | -| 32 | Serial Port Info | Move to Arch Common NS | -| 33 | CMN 600 Info | | -| 34 | Low Power Idle State Info | Move to Arch Common NS | -| 35 | PCI Address Map Info | Move to Arch Common NS | -| 36 | PCI Interrupt Map Info | Move to Arch Common NS | -| 37 | Reserved Memory Range Node | | -| 38 | Memory Range Descriptor | | -| 39 | Continuous Performance Control Info | Move to Arch Common NS | -| 40 | Pcc Subspace Type 0 Info | Move to Arch Common NS | -| 41 | Pcc Subspace Type 1 Info | Move to Arch Common NS | -| 42 | Pcc Subspace Type 2 Info | Move to Arch Common NS | -| 43 | Pcc Subspace Type 3 Info | Move to Arch Common NS | -| 44 | Pcc Subspace Type 4 Info | Move to Arch Common NS | -| 45 | Pcc Subspace Type 5 Info | Move to Arch Common NS | -| 46 | Embedded Trace Extension/Module Info | | -| 47 | P-State Dependency (PSD) Info | Move to Arch Common NS | +| 7 | Generic Timer Info | | +| 8 | Platform GT Block Info | | +| 9 | Generic Timer Block Frame Info | | +| 10 | Platform Generic Watchdog | | +| 11 | PCI Configuration Space Info | Move to Arch Common NS | +| 12 | Hypervisor Vendor Id | Move to Arch Common NS | +| 13 | Fixed feature flags for FADT | Move to Arch Common NS | +| 14 | ITS Group | | +| 15 | Named Component | | +| 16 | Root Complex | | +| 17 | SMMUv1 or SMMUv2 | | +| 18 | SMMUv3 | | +| 19 | PMCG | | +| 20 | GIC ITS Identifier Array | | +| 21 | ID Mapping Array | | +| 22 | SMMU Interrupt Array | | +| 23 | Processor Hierarchy Info | Move to Arch Common NS | +| 24 | Cache Info | Move to Arch Common NS | +| 25 | CM Object Reference | Move to Arch Common NS | +| 26 | Memory Affinity Info | Move to Arch Common NS | +| 27 | Device Handle Acpi | Move to Arch Common NS | +| 28 | Device Handle PCI | Move to Arch Common NS | +| 29 | Generic Initiator Affinity Info | Move to Arch Common NS | +| 30 | CMN 600 Info | | +| 31 | Low Power Idle State Info | Move to Arch Common NS | +| 32 | PCI Address Map Info | Move to Arch Common NS | +| 33 | PCI Interrupt Map Info | Move to Arch Common NS | +| 34 | Reserved Memory Range Node | | +| 35 | Memory Range Descriptor | | +| 36 | Continuous Performance Control Info | Move to Arch Common NS | +| 37 | Pcc Subspace Type 0 Info | Move to Arch Common NS | +| 38 | Pcc Subspace Type 1 Info | Move to Arch Common NS | +| 39 | Pcc Subspace Type 2 Info | Move to Arch Common NS | +| 40 | Pcc Subspace Type 3 Info | Move to Arch Common NS | +| 41 | Pcc Subspace Type 4 Info | Move to Arch Common NS | +| 42 | Pcc Subspace Type 5 Info | Move to Arch Common NS | +| 43 | Embedded Trace Extension/Module Info | | +| 44 | P-State Dependency (PSD) Info | Move to Arch Common NS | | `*` | All other values are reserved. | | #### Object ID's in the Arch Common Namespace: @@ -496,4 +493,7 @@ The CM_OBJECT_ID type is used to identify the Configuration Manager | ---: | :-------------------------- | :--- | | 0 | Reserved | | | 1 | Power Management Profile Info | | +| 2 | Serial Port Info | | +| 3 | Serial Console Port Info | | +| 4 | Serial Debug Port Info | | | `*` | All other values are reserved. | |