On 7 July 2016 at 17:01, Ryan Harkin <[email protected]> wrote:
> 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.
>>

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
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to