On 28 May 2016 at 14:54, <[email protected]> wrote: > From: Evan Lloyd <[email protected]> > > This cosmetic change only tidies things up in preparation for actual > updates. (This reflects responses to a previously submitted patch, > which has been split into several discrete changes.) > There are no functional changes in this commit. > Changes comprise: > Minor corrections to comment typos. > Minor formatting mods (80 columns). > Expansion of function comments. > Remove OUT from UartBase parameter. > Addition of #define for "magic mumbers". > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Evan Lloyd <[email protected]>
A minor comment below, but otherwise, this looks fine. Reviewed-by: Ryan Harkin <[email protected]> > --- > ArmPlatformPkg/Include/Drivers/PL011Uart.h | 21 ++++- > ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c | 99 > +++++++++++++------- > ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c | 24 +++-- > 3 files changed, 99 insertions(+), 45 deletions(-) > > diff --git a/ArmPlatformPkg/Include/Drivers/PL011Uart.h > b/ArmPlatformPkg/Include/Drivers/PL011Uart.h > index > 2fe796f9e42e663ae838a9559c16e237bf3db28b..8c2616ede4131b7504088d656160ce184dadf914 > 100644 > --- a/ArmPlatformPkg/Include/Drivers/PL011Uart.h > +++ b/ArmPlatformPkg/Include/Drivers/PL011Uart.h > @@ -1,6 +1,6 @@ > /** @file > * > -* Copyright (c) 2011-2014, ARM Limited. All rights reserved. > +* Copyright (c) 2011-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 > @@ -91,15 +91,30 @@ > > /* > > + Initialise the serial port to the specified settings. > Programmed hardware of Serial port. > + @param UartBase The base address of the serial device. > + @param BaudRate The baud rate of the serial device. If the > baud rate is not supported, > + the speed will be reduced down to the > nearest supported one and the > + variable's value will be updated > accordingly. > + @param ReceiveFifoDepth The number of characters the device will > buffer on input. > + ReceiveFifoDepth value of 0 will use the > device's default FIFO depth. > + @param Parity If applicable, this is the EFI_PARITY_TYPE > that is computed or checked > + as each character is transmitted or > received. If the device does not > + support parity, the value is the default > parity value. > + @param DataBits The number of data bits in each character > + @param StopBits If applicable, the EFI_STOP_BITS_TYPE > number of stop bits per character. > + If the device does not support stop bits, > the value is the default stop > + bit value. > > - @return Always return EFI_UNSUPPORTED. > + @retval RETURN_SUCCESS All attributes were set correctly on the > serial device. > + @retval RETURN_INVALID_PARAMETER One or more of the attributes has an > unsupported value. > This whole section blows the 80 column limit. I'm not sure it matter for comments. Or at least, I don't mind comments running over the 80 column mark. But the patch states that it's limiting things to 80 columns, so I thought I'd point it out. > **/ > RETURN_STATUS > EFIAPI > PL011UartInitializePort ( > - IN OUT UINTN UartBase, > + IN UINTN UartBase, > IN OUT UINT64 *BaudRate, > IN OUT UINT32 *ReceiveFifoDepth, > IN OUT EFI_PARITY_TYPE *Parity, > diff --git a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c > b/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c > index > 8b256de945d2115bf98de16e890bf944afc470a6..006feab72e82f9735d11b471e031f8b149026ccf > 100644 > --- a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c > +++ b/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c > @@ -2,7 +2,7 @@ > Serial I/O Port library functions with no library constructor/destructor > > Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR> > - Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR> > + Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.<BR> > > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD > License > @@ -20,6 +20,9 @@ > > #include <Drivers/PL011Uart.h> > > +#define FRACTION_PART_SIZE_IN_BITS 6 > +#define FRACTION_PART_MASK ((1 << FRACTION_PART_SIZE_IN_BITS) - 1) > + > // > // EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE is the only > // control bit that is not supported. > @@ -31,13 +34,35 @@ STATIC CONST UINT32 mInvalidControlBits = > EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE; > Initialise the serial port to the specified settings. > All unspecified settings will be set to the default values. > > - @return Always return EFI_SUCCESS or EFI_INVALID_PARAMETER. > + @param UartBase The base address of the serial device. > + @param BaudRate The baud rate of the serial device. If the > + baud rate is not supported, the speed will > be > + reduced to the nearest supported one and > the > + variable's value will be updated > accordingly. > + @param ReceiveFifoDepth The number of characters the device will > + buffer on input. Value of 0 will use the > + device's default FIFO depth. > + @param Parity If applicable, this is the EFI_PARITY_TYPE > + that is computed or checked as each > character > + is transmitted or received. If the device > does > + not support parity, the value is the > default > + parity value. > + @param DataBits The number of data bits in each character. > + @param StopBits If applicable, the EFI_STOP_BITS_TYPE > number > + of stop bits per character. > + If the device does not support stop bits, > the > + value is the default stop bit value. > + > + @retval RETURN_SUCCESS All attributes were set correctly on the > + serial device. > + @retval RETURN_INVALID_PARAMETER One or more of the attributes has an > + unsupported value. > > **/ > RETURN_STATUS > EFIAPI > PL011UartInitializePort ( > - IN OUT UINTN UartBase, > + IN UINTN UartBase, > IN OUT UINT64 *BaudRate, > IN OUT UINT32 *ReceiveFifoDepth, > IN OUT EFI_PARITY_TYPE *Parity, > @@ -51,9 +76,10 @@ PL011UartInitializePort ( > LineControl = 0; > > // The PL011 supports a buffer of 1, 16 or 32 chars. Therefore we can > accept > - // 1 char buffer as the minimum fifo size. Because everything can be > rounded down, > - // there is no maximum fifo size. > + // 1 char buffer as the minimum FIFO size. Because everything can be > rounded > + // down, there is no maximum FIFO size. > if ((*ReceiveFifoDepth == 0) || (*ReceiveFifoDepth >= 32)) { > + // Enable FIFO > LineControl |= PL011_UARTLCR_H_FEN; > if (PL011_UARTPID2_VER (MmioRead32 (UartBase + UARTPID2)) > > PL011_VER_R1P4) > *ReceiveFifoDepth = 32; > @@ -61,7 +87,7 @@ PL011UartInitializePort ( > *ReceiveFifoDepth = 16; > } else { > ASSERT (*ReceiveFifoDepth < 32); > - // Nothing else to do. 1 byte fifo is default. > + // Nothing else to do. 1 byte FIFO is default. > *ReceiveFifoDepth = 1; > } > > @@ -81,7 +107,9 @@ PL011UartInitializePort ( > LineControl |= PL011_UARTLCR_H_PEN; > break; > case MarkParity: > - LineControl |= (PL011_UARTLCR_H_PEN | PL011_UARTLCR_H_SPS | > PL011_UARTLCR_H_EPS); > + LineControl |= ( PL011_UARTLCR_H_PEN \ > + | PL011_UARTLCR_H_SPS \ > + | PL011_UARTLCR_H_EPS); > break; > case SpaceParity: > LineControl |= (PL011_UARTLCR_H_PEN | PL011_UARTLCR_H_SPS); > @@ -125,7 +153,7 @@ PL011UartInitializePort ( > LineControl |= PL011_UARTLCR_H_STP2; > break; > case OneFiveStopBits: > - // Only 1 or 2 stops bits are supported > + // Only 1 or 2 stop bits are supported > default: > return RETURN_INVALID_PARAMETER; > } > @@ -139,7 +167,7 @@ PL011UartInitializePort ( > // Baud Rate > // > > - // If PL011 Integral value has been defined then always ignore the BAUD > rate > + // If PL011 Integer value has been defined then always ignore the BAUD rate > if (PcdGet32 (PL011UartInteger) != 0) { > MmioWrite32 (UartBase + UARTIBRD, PcdGet32 (PL011UartInteger)); > MmioWrite32 (UartBase + UARTFBRD, PcdGet32 (PL011UartFractional)); > @@ -151,8 +179,8 @@ PL011UartInitializePort ( > } > > Divisor = (PcdGet32 (PL011UartClkInHz) * 4) / *BaudRate; > - MmioWrite32 (UartBase + UARTIBRD, Divisor >> 6); > - MmioWrite32 (UartBase + UARTFBRD, Divisor & 0x3F); > + MmioWrite32 (UartBase + UARTIBRD, Divisor >> FRACTION_PART_SIZE_IN_BITS); > + MmioWrite32 (UartBase + UARTFBRD, Divisor & FRACTION_PART_MASK); > } > > // No parity, 1 stop, no fifo, 8 data bits > @@ -161,8 +189,9 @@ PL011UartInitializePort ( > // Clear any pending errors > MmioWrite32 (UartBase + UARTECR, 0); > > - // Enable tx, rx, and uart overall > - MmioWrite32 (UartBase + UARTCR, PL011_UARTCR_RXE | PL011_UARTCR_TXE | > PL011_UARTCR_UARTEN); > + // Enable Tx, Rx, and UART overall > + MmioWrite32 (UartBase + UARTCR, > + PL011_UARTCR_RXE | PL011_UARTCR_TXE | PL011_UARTCR_UARTEN); > > return RETURN_SUCCESS; > } > @@ -190,8 +219,8 @@ PL011UartInitializePort ( > disable the hardware flow control based on CTS > (Clear > To Send) and RTS (Ready To Send) control signals. > > - @retval RETURN_SUCCESS The new control bits were set on the serial > device. > - @retval RETURN_UNSUPPORTED The serial device does not support this > operation. > + @retval RETURN_SUCCESS The new control bits were set on the device. > + @retval RETURN_UNSUPPORTED The device does not support this operation. > > **/ > RETURN_STATUS > @@ -245,24 +274,28 @@ PL011UartSetControl ( > @param[in] UartBase UART registers base address > @param[out] Control Status of the control bits on a serial device : > > - . EFI_SERIAL_DATA_CLEAR_TO_SEND, > EFI_SERIAL_DATA_SET_READY, > - EFI_SERIAL_RING_INDICATE, > EFI_SERIAL_CARRIER_DETECT, > - EFI_SERIAL_REQUEST_TO_SEND, > EFI_SERIAL_DATA_TERMINAL_READY > - are all related to the DTE (Data Terminal > Equipment) and > - DCE (Data Communication Equipment) modes of > operation of > - the serial device. > - . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if > the receive > - buffer is empty, 0 otherwise. > - . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if > the transmit > - buffer is empty, 0 otherwise. > - . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to > one if the > - hardware loopback is enabled (the ouput feeds the > receive > - buffer), 0 otherwise. > - . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to > one if a > - loopback is accomplished by software, 0 otherwise. > - . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal > to one if the > - hardware flow control based on CTS (Clear To > Send) and RTS > - (Ready To Send) control signals is enabled, 0 > otherwise. > + . EFI_SERIAL_DATA_CLEAR_TO_SEND, > + EFI_SERIAL_DATA_SET_READY, > + EFI_SERIAL_RING_INDICATE, > + EFI_SERIAL_CARRIER_DETECT, > + EFI_SERIAL_REQUEST_TO_SEND, > + EFI_SERIAL_DATA_TERMINAL_READY > + are all related to the DTE (Data Terminal > Equipment) > + and DCE (Data Communication Equipment) modes of > + operation of the serial device. > + . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if > the > + receive buffer is empty, 0 otherwise. > + . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if > the > + transmit buffer is empty, 0 otherwise. > + . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to > one if > + the hardware loopback is enabled (the ouput feeds > the > + receive buffer), 0 otherwise. > + . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to > one if > + a loopback is accomplished by software, 0 > otherwise. > + . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to > + one if the hardware flow control based on CTS > (Clear > + To Send) and RTS (Ready To Send) control signals > is > + enabled, 0 otherwise. > > @retval RETURN_SUCCESS The control bits were read from the serial device. > > diff --git a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c > b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c > index > 7497b5eb7f19fbce6ef0bb7eda34a1b0a2b9ea69..1b4043b61c18a4eada4446c9b99a767b4cbc74a7 > 100644 > --- a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c > +++ b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c > @@ -2,7 +2,7 @@ > Serial I/O Port library functions with no library constructor/destructor > > Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR> > - Copyright (c) 2012 - 2014, ARM Ltd. All rights reserved.<BR> > + Copyright (c) 2012 - 2016, ARM Ltd. All rights reserved.<BR> > Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> > > This program and the accompanying materials > @@ -44,14 +44,19 @@ SerialPortInitialize ( > EFI_STOP_BITS_TYPE StopBits; > > BaudRate = (UINTN)PcdGet64 (PcdUartDefaultBaudRate); > - ReceiveFifoDepth = 0; // Use the default value for Fifo depth > + ReceiveFifoDepth = 0; // Use default FIFO depth > Parity = (EFI_PARITY_TYPE)PcdGet8 (PcdUartDefaultParity); > DataBits = PcdGet8 (PcdUartDefaultDataBits); > StopBits = (EFI_STOP_BITS_TYPE) PcdGet8 (PcdUartDefaultStopBits); > > return PL011UartInitializePort ( > (UINTN)PcdGet64 (PcdSerialRegisterBase), > - &BaudRate, &ReceiveFifoDepth, &Parity, &DataBits, &StopBits); > + &BaudRate, > + &ReceiveFifoDepth, > + &Parity, > + &DataBits, > + &StopBits > + ); > } > > /** > @@ -145,12 +150,13 @@ SerialPortSetAttributes ( > ) > { > return PL011UartInitializePort ( > - (UINTN)PcdGet64 (PcdSerialRegisterBase), > - BaudRate, > - ReceiveFifoDepth, > - Parity, > - DataBits, > - StopBits); > + (UINTN)PcdGet64 (PcdSerialRegisterBase), > + BaudRate, > + ReceiveFifoDepth, > + Parity, > + DataBits, > + StopBits > + ); > } > > /** > -- > Guid("CE165669-3EF3-493F-B85D-6190EE5B9759") > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

