On 7 July 2016 at 16:59, Leif Lindholm <[email protected]> wrote: > On Fri, Jul 01, 2016 at 12:52:06PM +0100, [email protected] wrote: >> From: Evan Lloyd <[email protected]> >> >> Juno has several serial ports, one of which may be used for a remote >> debug interface (e.g. gdb, WinDbg). The debug serial port needs to >> be distinct from that used for UEFI trace to prevent corruption of >> debugger protocol messaging. >> The UEFI spec requires that serial devices be initialised to default >> settings. (11.8 Serial I/O Protocol - "The default attributes for all >> UART-style serial device interfaces are: 115,200 baud, ..." >> and 17.3.3 EFI Debugport Variable - "These defaults must be used in the >> absence of a DEBUGPORT variable...") >> >> This change adds initialization of the serial device reported in the >> ACPI DBG2 table. The initialisation is done early in the boot to allow >> the possibility of remote debug of UEFI itself. >> >> NOTE: This is functionally dependent on the DBG2 table being updated in >> OpenPlatformPkg, but is required as a precursor to that change. >> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Sami Mujawar <[email protected]> >> Signed-off-by: Evan Lloyd <[email protected]> > > I'd like a nod from Ryan on this one.
As it happens, I've just finished testing it (on R0, R1 and R2): Tested-by: Ryan Harkin <[email protected]> > One style comment below. > >> --- >> >> Notes: >> v2 >> - No code change. >> - Clarified commit message in response to comments [Ard Bieshevel] >> Specific points include clarity that change is not OS specific, >> and pertains to any debugger use, and justification for doing it >> at an early point in the process. >> Confirmed with Leif that update here (not OpenPlatformPkg) is >> appropriate. >> >> ArmPlatformPkg/ArmPlatformPkg.dec | 5 +++ >> ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf | 15 ++++++++- >> ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c | 35 >> ++++++++++++++++++-- >> 3 files changed, 52 insertions(+), 3 deletions(-) >> >> Code available at: >> https://github.com/EvanLloyd/tianocore/tree/debug_serial_v2 >> >> diff --git a/ArmPlatformPkg/ArmPlatformPkg.dec >> b/ArmPlatformPkg/ArmPlatformPkg.dec >> index >> 1c05132cd625be75b0d9d1cd09950af983d1f049..5864d9835989382b79b1e6db6486fe67082df6a0 >> 100644 >> --- a/ArmPlatformPkg/ArmPlatformPkg.dec >> +++ b/ArmPlatformPkg/ArmPlatformPkg.dec >> @@ -98,6 +98,11 @@ [PcdsFixedAtBuild.common] >> gArmPlatformTokenSpaceGuid.PL011UartFractional|0|UINT32|0x0000002D >> gArmPlatformTokenSpaceGuid.PL011UartInterrupt|0x00000000|UINT32|0x0000002F >> >> + ## PL011 Serial Debug UART >> + >> gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x00000000|UINT64|0x00000030 >> + >> gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate|0x00000000|UINT64|0x00000031 >> + >> gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz|0x00000000|UINT32|0x00000032 >> + >> ## PL061 GPIO >> gArmPlatformTokenSpaceGuid.PcdPL061GpioBase|0x0|UINT32|0x00000025 >> >> diff --git a/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf >> b/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf >> index >> 8c8b141c35a2693b618c1515cb665b9b1e81cc4e..77d18f855a833fff0d38518436ef331dfab2d7e1 >> 100644 >> --- a/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf >> +++ b/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf >> @@ -1,5 +1,5 @@ >> # >> -# Copyright (c) 2013-2015, ARM Limited. All rights reserved. >> +# Copyright (c) 2013-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 >> @@ -57,6 +57,19 @@ [FixedPcd] >> gArmJunoTokenSpaceGuid.PcdPciConfigurationSpaceBaseAddress >> gArmJunoTokenSpaceGuid.PcdPciConfigurationSpaceSize >> >> + >> + # >> + # PL011 Serial Debug UART >> + # >> + gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase >> + gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate >> + gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz >> + >> + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate >> + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits >> + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity >> + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits >> + >> [Pcd] >> gArmTokenSpaceGuid.PcdPciMmio32Base >> gArmTokenSpaceGuid.PcdPciMmio32Size >> diff --git a/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c >> b/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c >> index >> ffff5628247f61f4c2f31d3b9f7763b24f10641d..ae7f5e94acdaa5a37ba56c27fe0700c588dafcc9 >> 100644 >> --- a/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c >> +++ b/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c >> @@ -1,6 +1,6 @@ >> /** @file >> * >> -* Copyright (c) 2013-2014, ARM Limited. All rights reserved. >> +* Copyright (c) 2013-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 >> @@ -18,6 +18,7 @@ >> #include <Library/PcdLib.h> >> >> #include <Ppi/ArmMpCoreInfo.h> >> +#include <Drivers/PL011Uart.h> > > Is there an ordering requirement for the include file? > If not, I would prefer it before the Library includes in order to keep > the sort order. > > I can do this before pushing if someone tells me it's OK. > >> >> #include <ArmPlatform.h> >> >> @@ -112,7 +113,37 @@ ArmPlatformInitialize ( >> IN UINTN MpId >> ) >> { >> - return RETURN_SUCCESS; >> + RETURN_STATUS Status; >> + UINT64 BaudRate; >> + UINT32 ReceiveFifoDepth; >> + EFI_PARITY_TYPE Parity; >> + UINT8 DataBits; >> + EFI_STOP_BITS_TYPE StopBits; >> + >> + Status = RETURN_SUCCESS; >> + >> + // >> + // Initialize the Serial Debug UART >> + // >> + if (FixedPcdGet64 (PcdSerialDbgRegisterBase)) { >> + ReceiveFifoDepth = 0; // Use the default value for FIFO depth >> + Parity = (EFI_PARITY_TYPE)FixedPcdGet8 (PcdUartDefaultParity); >> + DataBits = FixedPcdGet8 (PcdUartDefaultDataBits); >> + StopBits = (EFI_STOP_BITS_TYPE)FixedPcdGet8 (PcdUartDefaultStopBits); >> + >> + BaudRate = (UINTN)FixedPcdGet64 (PcdSerialDbgUartBaudRate); >> + Status = PL011UartInitializePort ( >> + (UINTN)FixedPcdGet64 (PcdSerialDbgRegisterBase), >> + FixedPcdGet32 (PcdSerialDbgUartClkInHz), >> + &BaudRate, >> + &ReceiveFifoDepth, >> + &Parity, >> + &DataBits, >> + &StopBits >> + ); >> + } >> + >> + return Status; >> } >> >> /** >> -- >> Guid("CE165669-3EF3-493F-B85D-6190EE5B9759") >> _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

