/** @file * Debug Port Table 2 (DBG2) * * Copyright (c) 2018, ARM Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #include "SgiAcpiHeader.h" #include #include #include #define SGI_DBG2_NUM_DEBUG_PORTS 1 #define SGI_DBG2_NUM_GAS 1 #define SGI_DBG2_NS_STR_LENGTH 12 #define SGI_PL011_REGISTER_SPACE 0x1000 #pragma pack(1) typedef struct { EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT Dbg2Device; EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister; UINT32 AddressSize; UINT8 NameSpaceString[SGI_DBG2_NS_STR_LENGTH]; } DBG2_DEBUG_DEVICE_INFORMATION; typedef struct { EFI_ACPI_DEBUG_PORT_2_DESCRIPTION_TABLE Description; DBG2_DEBUG_DEVICE_INFORMATION Dbg2DeviceInfo[SGI_DBG2_NUM_DEBUG_PORTS]; } DBG2_TABLE; #pragma pack() #define DBG2_DEBUG_PORT_DDI(NumReg, SubType, UartBase, UartAddrLen, UartNameStr) { \ { \ EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION, /* UINT8 Revision */ \ sizeof (DBG2_DEBUG_DEVICE_INFORMATION), /* UINT16 Length */ \ NumReg, /* UINT8 NumberofGenericAddressRegisters */ \ SGI_DBG2_NS_STR_LENGTH, /* UINT16 NameSpaceStringLength */ \ OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, NameSpaceString), /* UINT16 NameSpaceStringOffset */ \ 0, /* UINT16 OemDataLength */ \ 0, /* UINT16 OemDataOffset */ \ EFI_ACPI_DBG2_PORT_TYPE_SERIAL, /* UINT16 Port Type */ \ SubType, /* UINT16 Port Subtype */ \ { EFI_ACPI_RESERVED_BYTE, EFI_ACPI_RESERVED_BYTE }, /* UINT8 Reserved[2] */ \ OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, BaseAddressRegister), /* UINT16 BaseAddressRegister Offset */ \ OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, AddressSize) /* UINT16 AddressSize Offset */ \ }, \ ARM_GAS32 (UartBase), /* EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \ UartAddrLen, /* UINT32 AddressSize */ \ UartNameStr /* UINT8 NameSpaceString[MAX_DBG2_NAME_LEN] */ \ } STATIC DBG2_TABLE Dbg2 = { { ARM_ACPI_HEADER ( EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, DBG2_TABLE, EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION ), OFFSET_OF (DBG2_TABLE, Dbg2DeviceInfo), SGI_DBG2_NUM_DEBUG_PORTS }, { // Kernel Debug Port DBG2_DEBUG_PORT_DDI ( SGI_DBG2_NUM_GAS, EFI_ACPI_DBG2_PORT_SUBTYPE_SERIAL_ARM_PL011_UART, FixedPcdGet64 (PcdSerialDbgRegisterBase), SGI_PL011_REGISTER_SPACE, "\\_SB.COM0" ) } }; // // Reference the table being generated to prevent the optimizer from removing // the data structure from the executable // VOID* CONST ReferenceAcpiTable = &Dbg2;