On 1 July 2016 at 13:52, <[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]>
This looks fine to me, but given that I've never been within 10 ft of a Juno in my life, I'd rather have Leif pick this up Thanks, Ard. > --- > > 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> > > #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

