From: Sami Mujawar sami.mujawar@arm.com
The DBG2 table is used to publish the presence of debug ports available on a system.
The existing DBG2 table implementation configures the Juno UART0 port to be used for SPCR and DBG2. This prevents the usage of the Operating System Debugger when the EMS terminal is active.
This patch: 1. Changes the usage of the UART ports as below: - Juno UART0 - for UEFI serial terminal and SPCR port. - Juno UART1 - for debug port.
2. It also replaces the Dbg2.asl file which described the DBG2 table in TDL format with Dbg2.aslc, which allows more flexibility by way of allowing the usage of PCDs.
Dependency: * This patch requires ARM Trusted Firmware to configure the UART1 for Non-Secure World access.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Alexei Fedorov alexei.fedorov@arm.com Signed-off-by: Girish Pathak girish.pathak@arm.com Signed-off-by: Sami Mujawar sami.mujawar@arm.com Signed-off-by: Evan Lloyd evan.lloyd@arm.com --- Platforms/ARM/Juno/AcpiTables/AcpiTables.inf | 4 +- Platforms/ARM/Juno/AcpiTables/Dbg2.asl | 72 --------------- Platforms/ARM/Juno/AcpiTables/Dbg2.aslc | 92 ++++++++++++++++++++ Platforms/ARM/Juno/ArmJuno.dsc | 5 ++ 4 files changed, 100 insertions(+), 73 deletions(-)
diff --git a/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf b/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf index 412f43d..076110c 100644 --- a/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf +++ b/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf @@ -23,7 +23,7 @@
[Sources] Dsdt.asl - Dbg2.asl + Dbg2.aslc Spcr.aslc Facs.aslc Fadt.aslc @@ -60,3 +60,5 @@ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate gArmPlatformTokenSpaceGuid.PL011UartClkInHz gArmPlatformTokenSpaceGuid.PL011UartInterrupt + + gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase diff --git a/Platforms/ARM/Juno/AcpiTables/Dbg2.asl b/Platforms/ARM/Juno/AcpiTables/Dbg2.asl deleted file mode 100644 index f57fa7e..0000000 --- a/Platforms/ARM/Juno/AcpiTables/Dbg2.asl +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2015, Graeme Gregory graeme.gregory@linaro.org - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * NB: This License is also known as the "BSD 2-Clause License". - * - * - * [DBG2] ACPI Table - * - */ - -[0004] Signature : "DBG2" [Debug Port table type 2] -[0004] Table Length : 0000005A -[0001] Revision : 00 -[0001] Checksum : 06 -[0006] Oem ID : "LINARO" -[0008] Oem Table ID : "ARM-JUNO" -[0004] Oem Revision : 00000000 -[0004] Asl Compiler ID : "INTL" -[0004] Asl Compiler Revision : 20140926 - -[0004] Info Offset : 0000002C -[0004] Info Count : 00000001 - -[0001] Revision : 00 -[0002] Length : 002C -[0001] Register Count : 01 -[0002] Namepath Length : 0005 -[0002] Namepath Offset : 0026 -[0002] OEM Data Length : 0000 [Optional field not present] -[0002] OEM Data Offset : 0000 [Optional field not present] -[0002] Port Type : 8000 -[0002] Port Subtype : 0003 -[0002] Reserved : 0000 -[0002] Base Address Offset : 0016 -[0002] Address Size Offset : 0022 - -[000C] Base Address Register : [Generic Address Structure] -[0001] Space ID : 00 [SystemMemory] -[0001] Bit Width : 20 -[0001] Bit Offset : 00 -[0001] Encoded Access Width : 03 [DWord Access:32] -[0008] Address : 000000007FF80000 - -[0004] Address Size : 00001000 - -[0004] Namepath : "COM1" -[0001] OEM Data : 00 diff --git a/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc b/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc new file mode 100644 index 0000000..adb0650 --- /dev/null +++ b/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc @@ -0,0 +1,92 @@ +/** @file +* DBG2 Table +* +* Copyright (c) 2012-2016, ARM Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/ + +#include "ArmPlatform.h" +#include <Library/AcpiLib.h> +#include <Library/ArmLib.h> +#include <Library/PcdLib.h> +#include <IndustryStandard/Acpi.h> +#include <IndustryStandard/DebugPort2Table.h> + +#pragma pack(1) + +#define DBG2_NUM_DEBUG_PORTS 1 +#define DBG2_NUMBER_OF_GENERIC_ADDRESS_REGISTERS 1 +#define DBG2_NAMESPACESTRING_FIELD_SIZE 8 +#define PL011_UART_LENGTH 0x1000 + +#define NAME_STR_UART1 {'C', 'O', 'M', '1', '\0', '\0', '\0', '\0'} + +typedef struct { + EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT Dbg2Device; + EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister; + UINT32 AddressSize; + UINT8 NameSpaceString[DBG2_NAMESPACESTRING_FIELD_SIZE]; +} DBG2_DEBUG_DEVICE_INFORMATION; + +typedef struct { + EFI_ACPI_DEBUG_PORT_2_DESCRIPTION_TABLE Description; + DBG2_DEBUG_DEVICE_INFORMATION Dbg2DeviceInfo[DBG2_NUM_DEBUG_PORTS]; +} DBG2_TABLE; + + +#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 */ \ + DBG2_NAMESPACESTRING_FIELD_SIZE, /* 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_5_1_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \ + UartAddrLen, /* UINT32 AddressSize */ \ + UartNameStr /* UINT8 NameSpaceString[MAX_DBG2_NAME_LEN] */ \ + } + + +STATIC DBG2_TABLE Dbg2 = { + { + ARM_ACPI_HEADER (EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE, + DBG2_TABLE, + EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION), + OFFSET_OF (DBG2_TABLE, Dbg2DeviceInfo), + DBG2_NUM_DEBUG_PORTS // UINT32 NumberDbgDeviceInfo + }, + { + /* + * Kernel Debug Port + */ + DBG2_DEBUG_PORT_DDI (DBG2_NUMBER_OF_GENERIC_ADDRESS_REGISTERS, + EFI_ACPI_DBG2_PORT_SUBTYPE_SERIAL_ARM_PL011_UART, + FixedPcdGet64 (PcdSerialDbgRegisterBase), + PL011_UART_LENGTH, + NAME_STR_UART1), + } +}; + +#pragma pack() + +// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Dbg2; diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc index 3e17831..3a15285 100644 --- a/Platforms/ARM/Juno/ArmJuno.dsc +++ b/Platforms/ARM/Juno/ArmJuno.dsc @@ -129,6 +129,11 @@ gArmPlatformTokenSpaceGuid.PL011UartClkInHz|7372800 gArmPlatformTokenSpaceGuid.PL011UartInterrupt|115
+ ## PL011 - Serial Debug UART + gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x7FF70000 + gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz|7372800 + gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate|115200 + ## PL031 RealTimeClock gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
Also fine with this replacement.
Graeme
On Wed, Mar 09, 2016 at 06:26:12PM +0000, evan.lloyd@arm.com wrote:
From: Sami Mujawar sami.mujawar@arm.com
The DBG2 table is used to publish the presence of debug ports available on a system.
The existing DBG2 table implementation configures the Juno UART0 port to be used for SPCR and DBG2. This prevents the usage of the Operating System Debugger when the EMS terminal is active.
This patch:
- Changes the usage of the UART ports as below:
- Juno UART0 - for UEFI serial terminal and SPCR port.
- Juno UART1 - for debug port.
- It also replaces the Dbg2.asl file which described the DBG2 table in
TDL format with Dbg2.aslc, which allows more flexibility by way of allowing the usage of PCDs.
Dependency:
- This patch requires ARM Trusted Firmware to configure the UART1 for
Non-Secure World access.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Alexei Fedorov alexei.fedorov@arm.com Signed-off-by: Girish Pathak girish.pathak@arm.com Signed-off-by: Sami Mujawar sami.mujawar@arm.com Signed-off-by: Evan Lloyd evan.lloyd@arm.com
Platforms/ARM/Juno/AcpiTables/AcpiTables.inf | 4 +- Platforms/ARM/Juno/AcpiTables/Dbg2.asl | 72 --------------- Platforms/ARM/Juno/AcpiTables/Dbg2.aslc | 92 ++++++++++++++++++++ Platforms/ARM/Juno/ArmJuno.dsc | 5 ++ 4 files changed, 100 insertions(+), 73 deletions(-)
diff --git a/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf b/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf index 412f43d..076110c 100644 --- a/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf +++ b/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf @@ -23,7 +23,7 @@ [Sources] Dsdt.asl
- Dbg2.asl
- Dbg2.aslc Spcr.aslc Facs.aslc Fadt.aslc
@@ -60,3 +60,5 @@ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate gArmPlatformTokenSpaceGuid.PL011UartClkInHz gArmPlatformTokenSpaceGuid.PL011UartInterrupt
- gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase
diff --git a/Platforms/ARM/Juno/AcpiTables/Dbg2.asl b/Platforms/ARM/Juno/AcpiTables/Dbg2.asl deleted file mode 100644 index f57fa7e..0000000 --- a/Platforms/ARM/Juno/AcpiTables/Dbg2.asl +++ /dev/null @@ -1,72 +0,0 @@ -/*
- Copyright (c) 2015, Graeme Gregory graeme.gregory@linaro.org
- All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- NB: This License is also known as the "BSD 2-Clause License".
- [DBG2] ACPI Table
- */
-[0004] Signature : "DBG2" [Debug Port table type 2] -[0004] Table Length : 0000005A -[0001] Revision : 00 -[0001] Checksum : 06 -[0006] Oem ID : "LINARO" -[0008] Oem Table ID : "ARM-JUNO" -[0004] Oem Revision : 00000000 -[0004] Asl Compiler ID : "INTL" -[0004] Asl Compiler Revision : 20140926
-[0004] Info Offset : 0000002C -[0004] Info Count : 00000001
-[0001] Revision : 00 -[0002] Length : 002C -[0001] Register Count : 01 -[0002] Namepath Length : 0005 -[0002] Namepath Offset : 0026 -[0002] OEM Data Length : 0000 [Optional field not present] -[0002] OEM Data Offset : 0000 [Optional field not present] -[0002] Port Type : 8000 -[0002] Port Subtype : 0003 -[0002] Reserved : 0000 -[0002] Base Address Offset : 0016 -[0002] Address Size Offset : 0022
-[000C] Base Address Register : [Generic Address Structure] -[0001] Space ID : 00 [SystemMemory] -[0001] Bit Width : 20 -[0001] Bit Offset : 00 -[0001] Encoded Access Width : 03 [DWord Access:32] -[0008] Address : 000000007FF80000
-[0004] Address Size : 00001000
-[0004] Namepath : "COM1" -[0001] OEM Data : 00 diff --git a/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc b/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc new file mode 100644 index 0000000..adb0650 --- /dev/null +++ b/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc @@ -0,0 +1,92 @@ +/** @file +* DBG2 Table +* +* Copyright (c) 2012-2016, ARM Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of the BSD License +* which accompanies this distribution. The full text of the license may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +* +**/
+#include "ArmPlatform.h" +#include <Library/AcpiLib.h> +#include <Library/ArmLib.h> +#include <Library/PcdLib.h> +#include <IndustryStandard/Acpi.h> +#include <IndustryStandard/DebugPort2Table.h>
+#pragma pack(1)
+#define DBG2_NUM_DEBUG_PORTS 1 +#define DBG2_NUMBER_OF_GENERIC_ADDRESS_REGISTERS 1 +#define DBG2_NAMESPACESTRING_FIELD_SIZE 8 +#define PL011_UART_LENGTH 0x1000
+#define NAME_STR_UART1 {'C', 'O', 'M', '1', '\0', '\0', '\0', '\0'}
+typedef struct {
- EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT Dbg2Device;
- EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister;
- UINT32 AddressSize;
- UINT8 NameSpaceString[DBG2_NAMESPACESTRING_FIELD_SIZE];
+} DBG2_DEBUG_DEVICE_INFORMATION;
+typedef struct {
- EFI_ACPI_DEBUG_PORT_2_DESCRIPTION_TABLE Description;
- DBG2_DEBUG_DEVICE_INFORMATION Dbg2DeviceInfo[DBG2_NUM_DEBUG_PORTS];
+} DBG2_TABLE;
+#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 */ \
DBG2_NAMESPACESTRING_FIELD_SIZE, /* 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_5_1_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \
- UartAddrLen, /* UINT32 AddressSize */ \
- UartNameStr /* UINT8 NameSpaceString[MAX_DBG2_NAME_LEN] */ \
- }
+STATIC DBG2_TABLE Dbg2 = {
- {
- ARM_ACPI_HEADER (EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE,
DBG2_TABLE,
EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION),
- OFFSET_OF (DBG2_TABLE, Dbg2DeviceInfo),
- DBG2_NUM_DEBUG_PORTS // UINT32 NumberDbgDeviceInfo
- },
- {
- /*
* Kernel Debug Port
*/
- DBG2_DEBUG_PORT_DDI (DBG2_NUMBER_OF_GENERIC_ADDRESS_REGISTERS,
EFI_ACPI_DBG2_PORT_SUBTYPE_SERIAL_ARM_PL011_UART,
FixedPcdGet64 (PcdSerialDbgRegisterBase),
PL011_UART_LENGTH,
NAME_STR_UART1),
- }
+};
+#pragma pack()
+// +// Reference the table being generated to prevent the optimizer from removing the +// data structure from the executable +// +VOID* CONST ReferenceAcpiTable = &Dbg2; diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc index 3e17831..3a15285 100644 --- a/Platforms/ARM/Juno/ArmJuno.dsc +++ b/Platforms/ARM/Juno/ArmJuno.dsc @@ -129,6 +129,11 @@ gArmPlatformTokenSpaceGuid.PL011UartClkInHz|7372800 gArmPlatformTokenSpaceGuid.PL011UartInterrupt|115
- ## PL011 - Serial Debug UART
- gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x7FF70000
- gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz|7372800
- gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate|115200
- ## PL031 RealTimeClock gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
2.7.0
Linaro-uefi mailing list Linaro-uefi@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-uefi
Hi Graeme. Thank you for supporting these mods.
Regards, Evan
-----Original Message----- From: Graeme Gregory [mailto:graeme.gregory@linaro.org] Sent: 10 March 2016 02:18 To: Evan Lloyd Cc: linaro-uefi@lists.linaro.org Subject: Re: [Linaro-uefi] [PATCH] Platforms/ARM: Juno: Acpi - DBG2 to aslc for UART1
Also fine with this replacement.
Graeme
On Wed, Mar 09, 2016 at 06:26:12PM +0000, evan.lloyd@arm.com wrote:
From: Sami Mujawar sami.mujawar@arm.com
The DBG2 table is used to publish the presence of debug ports available on a system.
The existing DBG2 table implementation configures the Juno UART0 port to be used for SPCR and DBG2. This prevents the usage of the Operating System Debugger when the EMS terminal is active.
This patch:
- Changes the usage of the UART ports as below:
- Juno UART0 - for UEFI serial terminal and SPCR port.
- Juno UART1 - for debug port.
- It also replaces the Dbg2.asl file which described the DBG2 table
in TDL format with Dbg2.aslc, which allows more flexibility by way of allowing the usage of PCDs.
Dependency:
- This patch requires ARM Trusted Firmware to configure the UART1 for
Non-Secure World access.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Alexei Fedorov alexei.fedorov@arm.com Signed-off-by: Girish Pathak girish.pathak@arm.com Signed-off-by: Sami Mujawar sami.mujawar@arm.com Signed-off-by: Evan Lloyd evan.lloyd@arm.com
Platforms/ARM/Juno/AcpiTables/AcpiTables.inf | 4 +- Platforms/ARM/Juno/AcpiTables/Dbg2.asl | 72 --------------- Platforms/ARM/Juno/AcpiTables/Dbg2.aslc | 92 ++++++++++++++++++++ Platforms/ARM/Juno/ArmJuno.dsc | 5 ++ 4 files changed, 100 insertions(+), 73 deletions(-)
diff --git a/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf b/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf index 412f43d..076110c 100644 --- a/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf +++ b/Platforms/ARM/Juno/AcpiTables/AcpiTables.inf @@ -23,7 +23,7 @@
[Sources] Dsdt.asl
- Dbg2.asl
- Dbg2.aslc Spcr.aslc Facs.aslc Fadt.aslc
@@ -60,3 +60,5 @@ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate gArmPlatformTokenSpaceGuid.PL011UartClkInHz gArmPlatformTokenSpaceGuid.PL011UartInterrupt
- gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase
diff --git a/Platforms/ARM/Juno/AcpiTables/Dbg2.asl b/Platforms/ARM/Juno/AcpiTables/Dbg2.asl deleted file mode 100644 index f57fa7e..0000000 --- a/Platforms/ARM/Juno/AcpiTables/Dbg2.asl +++ /dev/null @@ -1,72 +0,0 @@ -/*
- Copyright (c) 2015, Graeme Gregory graeme.gregory@linaro.org
- All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above
copyright
- notice, this list of conditions and the following disclaimer in
the
- documentation and/or other materials provided with the distribution.
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS
FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT
LIMITED
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- NB: This License is also known as the "BSD 2-Clause License".
- [DBG2] ACPI Table
- */
-[0004] Signature : "DBG2" [Debug Port table type 2] -[0004] Table Length : 0000005A -[0001] Revision : 00 -[0001] Checksum : 06 -[0006] Oem ID : "LINARO" -[0008] Oem Table ID : "ARM-JUNO" -[0004] Oem Revision : 00000000 -[0004] Asl Compiler ID : "INTL" -[0004] Asl Compiler Revision : 20140926
-[0004] Info Offset : 0000002C -[0004] Info Count : 00000001
-[0001] Revision : 00 -[0002] Length : 002C -[0001] Register Count : 01 -[0002] Namepath Length : 0005 -[0002] Namepath Offset : 0026 -[0002] OEM Data Length : 0000 [Optional field not present] -[0002] OEM Data Offset : 0000 [Optional field not present] -[0002] Port Type : 8000 -[0002] Port Subtype : 0003 -[0002] Reserved : 0000 -[0002] Base Address Offset : 0016 -[0002] Address Size Offset : 0022
-[000C] Base Address Register : [Generic Address Structure] -[0001] Space ID : 00 [SystemMemory] -[0001] Bit Width : 20 -[0001] Bit Offset : 00 -[0001] Encoded Access Width : 03 [DWord Access:32] -[0008] Address : 000000007FF80000
-[0004] Address Size : 00001000
-[0004] Namepath : "COM1" -[0001] OEM Data : 00 diff --git a/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc b/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc new file mode 100644 index 0000000..adb0650 --- /dev/null +++ b/Platforms/ARM/Juno/AcpiTables/Dbg2.aslc @@ -0,0 +1,92 @@ +/** @file +* DBG2 Table +* +* Copyright (c) 2012-2016, ARM Limited. All rights reserved. +* +* This program and the accompanying materials +* are licensed and made available under the terms and conditions of +the BSD License +* which accompanies this distribution. The full text of the license +may be found at +* http://opensource.org/licenses/bsd-license.php +* +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" +BASIS, +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
EXPRESS OR IMPLIED.
+* +**/
+#include "ArmPlatform.h" +#include <Library/AcpiLib.h> +#include <Library/ArmLib.h> +#include <Library/PcdLib.h> +#include <IndustryStandard/Acpi.h> +#include <IndustryStandard/DebugPort2Table.h>
+#pragma pack(1)
+#define DBG2_NUM_DEBUG_PORTS 1 +#define DBG2_NUMBER_OF_GENERIC_ADDRESS_REGISTERS 1 +#define DBG2_NAMESPACESTRING_FIELD_SIZE 8 +#define PL011_UART_LENGTH 0x1000
+#define NAME_STR_UART1 {'C', 'O', 'M', '1', '\0', '\0', '\0', '\0'}
+typedef struct {
- EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT Dbg2Device;
- EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister;
- UINT32 AddressSize;
- UINT8
NameSpaceString[DBG2_NAMESPACESTRING_FIELD_SIZE];
+} DBG2_DEBUG_DEVICE_INFORMATION;
+typedef struct {
- EFI_ACPI_DEBUG_PORT_2_DESCRIPTION_TABLE Description;
- DBG2_DEBUG_DEVICE_INFORMATION
Dbg2DeviceInfo[DBG2_NUM_DEBUG_PORTS];
+} DBG2_TABLE;
+#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 */ \
DBG2_NAMESPACESTRING_FIELD_SIZE, /* 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_5_1_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \
- UartAddrLen, /* UINT32 AddressSize */
\
- UartNameStr /* UINT8
NameSpaceString[MAX_DBG2_NAME_LEN] */ \
- }
+STATIC DBG2_TABLE Dbg2 = {
- {
- ARM_ACPI_HEADER (EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE,
DBG2_TABLE,
EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION),
- OFFSET_OF (DBG2_TABLE, Dbg2DeviceInfo),
- DBG2_NUM_DEBUG_PORTS // UINT32
NumberDbgDeviceInfo
- },
- {
- /*
* Kernel Debug Port
*/
- DBG2_DEBUG_PORT_DDI
(DBG2_NUMBER_OF_GENERIC_ADDRESS_REGISTERS,
EFI_ACPI_DBG2_PORT_SUBTYPE_SERIAL_ARM_PL011_UART,
FixedPcdGet64 (PcdSerialDbgRegisterBase),
PL011_UART_LENGTH,
NAME_STR_UART1),
- }
+};
+#pragma pack()
+// +// Reference the table being generated to prevent the optimizer from +removing the // data structure from the executable // +VOID* CONST ReferenceAcpiTable = &Dbg2; diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc index 3e17831..3a15285 100644 --- a/Platforms/ARM/Juno/ArmJuno.dsc +++ b/Platforms/ARM/Juno/ArmJuno.dsc @@ -129,6 +129,11 @@ gArmPlatformTokenSpaceGuid.PL011UartClkInHz|7372800 gArmPlatformTokenSpaceGuid.PL011UartInterrupt|115
- ## PL011 - Serial Debug UART
- gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x7FF70000
- gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz|7372800
- gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate|115200
- ## PL031 RealTimeClock gArmPlatformTokenSpaceGuid.PcdPL031RtcBase|0x1C170000
-- 2.7.0
Linaro-uefi mailing list Linaro-uefi@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-uefi
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.