Message ID | 20160701115206.14276-1-evan.lloyd@arm.com |
---|---|
State | New |
Headers | show |
On 1 July 2016 at 13:52, <evan.lloyd@arm.com> wrote: > From: Evan Lloyd <evan.lloyd@arm.com> > > 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 <sami.mujawar@arm.com> > Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> 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 edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On Fri, Jul 01, 2016 at 12:52:06PM +0100, evan.lloyd@arm.com wrote: > From: Evan Lloyd <evan.lloyd@arm.com> > > 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 <sami.mujawar@arm.com> > Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> I'd like a nod from Ryan on this one. 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 edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On 7 July 2016 at 16:59, Leif Lindholm <leif.lindholm@linaro.org> wrote: > On Fri, Jul 01, 2016 at 12:52:06PM +0100, evan.lloyd@arm.com wrote: >> From: Evan Lloyd <evan.lloyd@arm.com> >> >> 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 <sami.mujawar@arm.com> >> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> > > 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 <ryan.harkin@linaro.org> > 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 edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On 7 July 2016 at 17:01, Ryan Harkin <ryan.harkin@linaro.org> wrote: > On 7 July 2016 at 16:59, Leif Lindholm <leif.lindholm@linaro.org> wrote: >> On Fri, Jul 01, 2016 at 12:52:06PM +0100, evan.lloyd@arm.com wrote: >>> From: Evan Lloyd <evan.lloyd@arm.com> >>> >>> 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 <sami.mujawar@arm.com> >>> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> >> >> 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 <ryan.harkin@linaro.org> > > >> 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. >> I moved the new include to the top of the list and it built fine from clean, so go for it. >>> >>> #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 edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On Thu, Jul 07, 2016 at 05:24:54PM +0100, Ryan Harkin wrote: > On 7 July 2016 at 17:01, Ryan Harkin <ryan.harkin@linaro.org> wrote: > > On 7 July 2016 at 16:59, Leif Lindholm <leif.lindholm@linaro.org> wrote: > >> On Fri, Jul 01, 2016 at 12:52:06PM +0100, evan.lloyd@arm.com wrote: > >>> From: Evan Lloyd <evan.lloyd@arm.com> > >>> > >>> 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 <sami.mujawar@arm.com> > >>> Signed-off-by: Evan Lloyd <evan.lloyd@arm.com> > >> > >> 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 <ryan.harkin@linaro.org> > > > > > >> 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. > >> > > I moved the new include to the top of the list and it built fine from > clean, so go for it. Thanks Ryan - and Evan. Pushed. > >>> > >>> #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 edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
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; } /**