[edk2-devel] [PATCH v2 09/28] Silicon/NXP: Drop DUartPortLib

Pankaj Bansal pankaj.bansal at oss.nxp.com
Fri Mar 20 14:35:24 UTC 2020


From: Pankaj Bansal <pankaj.bansal at nxp.com>

DUartPortLib is for ns16550 compatible UART in LS1043A. Therefore, we can
remove it and use BaseSerialPortLib16550.

Signed-off-by: Pankaj Bansal <pankaj.bansal at nxp.com>
---
 Silicon/NXP/Library/DUartPortLib/DUart.h      | 122 ------
 .../NXP/Library/DUartPortLib/DUartPortLib.c   | 364 ------------------
 .../NXP/Library/DUartPortLib/DUartPortLib.inf |  34 --
 3 files changed, 520 deletions(-)
 delete mode 100644 Silicon/NXP/Library/DUartPortLib/DUart.h
 delete mode 100644 Silicon/NXP/Library/DUartPortLib/DUartPortLib.c
 delete mode 100644 Silicon/NXP/Library/DUartPortLib/DUartPortLib.inf

diff --git a/Silicon/NXP/Library/DUartPortLib/DUart.h b/Silicon/NXP/Library/DUartPortLib/DUart.h
deleted file mode 100644
index c71e2ce55d1d..000000000000
--- a/Silicon/NXP/Library/DUartPortLib/DUart.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/** DUart.h
-*  Header defining the DUART constants (Base addresses, sizes, flags)
-*
-*  Based on Serial I/O Port library headers available in PL011Uart.h
-*
-*  Copyright (c) 2011-2012, ARM Limited. All rights reserved.
-*  Copyright (c) 2016, Freescale Semiconductor, Inc. All rights reserved.
-*  Copyright 2017 NXP
-*
-*  SPDX-License-Identifier: BSD-2-Clause-Patent
-*
-**/
-
-#ifndef DUART_H_
-#define DUART_H_
-
-// FIFO Control Register
-#define DUART_FCR_FIFO_EN          0x01 /* Fifo enable */
-#define DUART_FCR_CLEAR_RCVR       0x02 /* Clear the RCVR FIFO */
-#define DUART_FCR_CLEAR_XMIT       0x04 /* Clear the XMIT FIFO */
-#define DUART_FCR_DMA_SELECT       0x08 /* For DMA applications */
-#define DUART_FCR_TRIGGER_MASK     0xC0 /* Mask for the FIFO trigger range */
-#define DUART_FCR_TRIGGER_1        0x00 /* Mask for trigger set at 1 */
-#define DUART_FCR_TRIGGER_4        0x40 /* Mask for trigger set at 4 */
-#define DUART_FCR_TRIGGER_8        0x80 /* Mask for trigger set at 8 */
-#define DUART_FCR_TRIGGER_14       0xC0 /* Mask for trigger set at 14 */
-#define DUART_FCR_RXSR             0x02 /* Receiver soft reset */
-#define DUART_FCR_TXSR             0x04 /* Transmitter soft reset */
-
-// Modem Control Register
-#define DUART_MCR_DTR              0x01 /* Reserved  */
-#define DUART_MCR_RTS              0x02 /* RTS   */
-#define DUART_MCR_OUT1             0x04 /* Reserved */
-#define DUART_MCR_OUT2             0x08 /* Reserved */
-#define DUART_MCR_LOOP             0x10 /* Enable loopback test mode */
-#define DUART_MCR_AFE              0x20 /* AFE (Auto Flow Control) */
-#define DUART_MCR_DMA_EN           0x04
-#define DUART_MCR_TX_DFR           0x08
-
-// Line Control Register
-/*
-* Note: if the word length is 5 bits (DUART_LCR_WLEN5), then setting
-* DUART_LCR_STOP will select 1.5 stop bits, not 2 stop bits.
-*/
-#define DUART_LCR_WLS_MSK          0x03 /* character length select mask */
-#define DUART_LCR_WLS_5            0x00 /* 5 bit character length */
-#define DUART_LCR_WLS_6            0x01 /* 6 bit character length */
-#define DUART_LCR_WLS_7            0x02 /* 7 bit character length */
-#define DUART_LCR_WLS_8            0x03 /* 8 bit character length */
-#define DUART_LCR_STB              0x04 /* # stop Bits, off=1, on=1.5 or 2) */
-#define DUART_LCR_PEN              0x08 /* Parity eneble */
-#define DUART_LCR_EPS              0x10 /* Even Parity Select */
-#define DUART_LCR_STKP             0x20 /* Stick Parity */
-#define DUART_LCR_SBRK             0x40 /* Set Break */
-#define DUART_LCR_BKSE             0x80 /* Bank select enable */
-#define DUART_LCR_DLAB             0x80 /* Divisor latch access bit */
-
-// Line Status Register
-#define DUART_LSR_DR               0x01 /* Data ready */
-#define DUART_LSR_OE               0x02 /* Overrun */
-#define DUART_LSR_PE               0x04 /* Parity error */
-#define DUART_LSR_FE               0x08 /* Framing error */
-#define DUART_LSR_BI               0x10 /* Break */
-#define DUART_LSR_THRE             0x20 /* Xmit holding register empty */
-#define DUART_LSR_TEMT             0x40 /* Xmitter empty */
-#define DUART_LSR_ERR              0x80 /* Error */
-
-// Modem Status Register
-#define DUART_MSR_DCTS             0x01 /* Delta CTS */
-#define DUART_MSR_DDSR             0x02 /* Reserved */
-#define DUART_MSR_TERI             0x04 /* Reserved */
-#define DUART_MSR_DDCD             0x08 /* Reserved */
-#define DUART_MSR_CTS              0x10 /* Clear to Send */
-#define DUART_MSR_DSR              0x20 /* Reserved */
-#define DUART_MSR_RI               0x40 /* Reserved */
-#define DUART_MSR_DCD              0x80 /* Reserved */
-
-// Interrupt Identification Register
-#define DUART_IIR_NO_INT           0x01 /* No interrupts pending */
-#define DUART_IIR_ID               0x06 /* Mask for the interrupt ID */
-#define DUART_IIR_MSI              0x00 /* Modem status interrupt */
-#define DUART_IIR_THRI             0x02 /* Transmitter holding register empty */
-#define DUART_IIR_RDI              0x04 /* Receiver data interrupt */
-#define DUART_IIR_RLSI             0x06 /* Receiver line status interrupt */
-
-//  Interrupt Enable Register
-#define DUART_IER_MSI              0x08 /* Enable Modem status interrupt */
-#define DUART_IER_RLSI             0x04 /* Enable receiver line status interrupt */
-#define DUART_IER_THRI             0x02 /* Enable Transmitter holding register int. */
-#define DUART_IER_RDI              0x01 /* Enable receiver data interrupt */
-
-// LCR defaults
-#define DUART_LCR_8N1              0x03
-#define DUART_LCRVAL               DUART_LCR_8N1          /* 8 data, 1 stop, no parity */
-#define DUART_MCRVAL               (DUART_MCR_DTR | \
-                                   DUART_MCR_RTS)         /* RTS/DTR */
-#define DUART_FCRVAL               (DUART_FCR_FIFO_EN | \
-                                   DUART_FCR_RXSR |    \
-                                   DUART_FCR_TXSR)        /* Clear & enable FIFOs */
-
-#define URBR         0x0
-#define UTHR         0x0
-#define UDLB         0x0
-#define UDMB         0x1
-#define UIER         0x1
-#define UIIR         0x2
-#define UFCR         0x2
-#define UAFR         0x2
-#define ULCR         0x3
-#define UMCR         0x4
-#define ULSR         0x5
-#define UMSR         0x6
-#define USCR         0x7
-#define UDSR         0x10
-
-extern
-UINT64
-GetBusFrequency (
-  VOID
-  );
-
-#endif /* DUART_H_ */
diff --git a/Silicon/NXP/Library/DUartPortLib/DUartPortLib.c b/Silicon/NXP/Library/DUartPortLib/DUartPortLib.c
deleted file mode 100644
index c3c738d3cca8..000000000000
--- a/Silicon/NXP/Library/DUartPortLib/DUartPortLib.c
+++ /dev/null
@@ -1,364 +0,0 @@
-/** DuartPortLib.c
-  DUART (NS16550) library functions
-
-  Based on Serial I/O Port library functions available in PL011SerialPortLib.c
-
-  Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
-  Copyright (c) 2012 - 2013, ARM Ltd. All rights reserved.<BR>
-  Copyright (c) 2016, Freescale Semiconductor, Inc. All rights reserved.
-  Copyright 2017 NXP
-
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <Base.h>
-#include <Library/IoLib.h>
-#include <Library/PcdLib.h>
-#include <Library/SerialPortLib.h>
-
-#include "DUart.h"
-
-STATIC CONST UINT32 mInvalidControlBits = (EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE | \
-                                           EFI_SERIAL_DATA_TERMINAL_READY);
-
-/**
-  Assert or deassert the control signals on a serial port.
-  The following control signals are set according their bit settings :
-  . Request to Send
-  . Data Terminal Ready
-
-  @param[in]  Control     The following bits are taken into account :
-                          . EFI_SERIAL_REQUEST_TO_SEND : assert/deassert the
-                            "Request To Send" control signal if this bit is
-                            equal to one/zero.
-                          . EFI_SERIAL_DATA_TERMINAL_READY : assert/deassert
-                            the "Data Terminal Ready" control signal if this
-                            bit is equal to one/zero.
-                          . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : enable/disable
-                            the hardware loopback if this bit is equal to
-                            one/zero.
-                          . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : not supported.
-                          . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : enable/
-                            disable the hardware flow control based on CTS (Clear
-                            To Send) and RTS (Ready To Send) control signals.
-
-  @retval  EFI_SUCCESS      The new control bits were set on the device.
-  @retval  EFI_UNSUPPORTED  The device does not support this operation.
-
-**/
-EFI_STATUS
-EFIAPI
-SerialPortSetControl (
-  IN  UINT32  Control
-  )
-{
-  UINT32  McrBits;
-  UINTN   UartBase;
-
-  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
-
-  if (Control & (mInvalidControlBits)) {
-    return EFI_UNSUPPORTED;
-  }
-
-  McrBits = MmioRead8 (UartBase + UMCR);
-
-  if (Control & EFI_SERIAL_REQUEST_TO_SEND) {
-    McrBits |= DUART_MCR_RTS;
-  } else {
-    McrBits &= ~DUART_MCR_RTS;
-  }
-
-  if (Control & EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE) {
-    McrBits |= DUART_MCR_LOOP;
-  } else {
-    McrBits &= ~DUART_MCR_LOOP;
-  }
-
-  if (Control & EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE) {
-    McrBits |= DUART_MCR_AFE;
-  } else {
-    McrBits &= ~DUART_MCR_AFE;
-  }
-
-  MmioWrite32 (UartBase + UMCR, McrBits);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Retrieve the status of the control bits on a serial device.
-
-  @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.
-
-  @retval EFI_SUCCESS      The control bits were read from the serial device.
-
-**/
-EFI_STATUS
-EFIAPI
-SerialPortGetControl (
-  OUT  UINT32   *Control
-  )
-{
-  UINT32        MsrRegister;
-  UINT32        McrRegister;
-  UINT32        LsrRegister;
-  UINTN         UartBase;
-
-  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
-
-  MsrRegister = MmioRead8 (UartBase + UMSR);
-  McrRegister = MmioRead8 (UartBase + UMCR);
-  LsrRegister = MmioRead8 (UartBase + ULSR);
-
-  *Control = 0;
-
-  if ((MsrRegister & DUART_MSR_CTS) == DUART_MSR_CTS) {
-    *Control |= EFI_SERIAL_CLEAR_TO_SEND;
-  }
-
-  if ((McrRegister & DUART_MCR_RTS) == DUART_MCR_RTS) {
-    *Control |= EFI_SERIAL_REQUEST_TO_SEND;
-  }
-
-  if ((LsrRegister & DUART_LSR_TEMT) == DUART_LSR_TEMT) {
-    *Control |= EFI_SERIAL_OUTPUT_BUFFER_EMPTY;
-  }
-
-  if ((McrRegister & DUART_MCR_AFE) == DUART_MCR_AFE) {
-    *Control |= EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE;
-  }
-
-  if ((McrRegister & DUART_MCR_LOOP) == DUART_MCR_LOOP) {
-    *Control |= EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE;
-  }
-
-  return EFI_SUCCESS;
-}
-
-/*
- * Return Baud divisor on basis of Baudrate
- */
-UINT32
-CalculateBaudDivisor (
-  IN UINT64 BaudRate
-  )
-{
-  UINTN DUartClk;
-  UINTN FreqSystemBus;
-
-  FreqSystemBus = GetBusFrequency ();
-  DUartClk = FreqSystemBus/PcdGet32(PcdPlatformFreqDiv);
-
-  return ((DUartClk)/(BaudRate * 16));
-}
-
-/*
-   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.
-
- **/
-VOID
-EFIAPI
-DuartInitializePort (
-  IN  UINT64  BaudRate
-  )
-{
-  UINTN   UartBase;
-  UINT32  BaudDivisor;
-
-  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
-  BaudDivisor = CalculateBaudDivisor (BaudRate);
-
-
-  while (!(MmioRead8 (UartBase + ULSR) & DUART_LSR_TEMT));
-
-  //
-  // Enable and assert interrupt when new data is available on
-  // external device,
-  // setup data format, setup baud divisor
-  //
-  MmioWrite8 (UartBase + UIER, 0x1);
-  MmioWrite8 (UartBase + ULCR, DUART_LCR_BKSE | DUART_LCRVAL);
-  MmioWrite8 (UartBase + UDLB, 0);
-  MmioWrite8 (UartBase + UDMB, 0);
-  MmioWrite8 (UartBase + ULCR, DUART_LCRVAL);
-  MmioWrite8 (UartBase + UMCR, DUART_MCRVAL);
-  MmioWrite8 (UartBase + UFCR, DUART_FCRVAL);
-  MmioWrite8 (UartBase + ULCR, DUART_LCR_BKSE | DUART_LCRVAL);
-  MmioWrite8 (UartBase + UDLB, BaudDivisor & 0xff);
-  MmioWrite8 (UartBase + UDMB, (BaudDivisor >> 8) & 0xff);
-  MmioWrite8 (UartBase + ULCR, DUART_LCRVAL);
-
-  return;
-}
-
-/**
-  Programmed hardware of Serial port.
-
-  @return    Always return EFI_SUCCESS.
-
-**/
-EFI_STATUS
-EFIAPI
-SerialPortInitialize (
-  VOID
-  )
-{
-  UINT64  BaudRate;
-  BaudRate = (UINTN)PcdGet64 (PcdUartDefaultBaudRate);
-
-
-  DuartInitializePort (BaudRate);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Write data to serial device.
-
-  @param  Buffer           Point of data buffer which need to be written.
-  @param  NumberOfBytes    Number of output bytes which are cached in Buffer.
-
-  @retval 0                Write data failed.
-  @retval !0               Actual number of bytes written to serial device.
-
-**/
-UINTN
-EFIAPI
-SerialPortWrite (
-  IN  UINT8     *Buffer,
-  IN  UINTN     NumberOfBytes
-  )
-{
-  UINT8         *Final;
-  UINTN         UartBase;
-
-  Final = &Buffer[NumberOfBytes];
-  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
-
-  while (Buffer < Final) {
-    while ((MmioRead8 (UartBase + ULSR) & DUART_LSR_THRE) == 0);
-    MmioWrite8 (UartBase + UTHR, *Buffer++);
-  }
-
-  return NumberOfBytes;
-}
-
-/**
-  Read data from serial device and save the data in buffer.
-
-  @param  Buffer           Point of data buffer which need to be written.
-  @param  NumberOfBytes    Number of output bytes which are cached in Buffer.
-
-  @retval 0                Read data failed.
-  @retval !0               Actual number of bytes read from serial device.
-
-**/
-UINTN
-EFIAPI
-SerialPortRead (
-  OUT UINT8     *Buffer,
-  IN  UINTN     NumberOfBytes
-  )
-{
-  UINTN   Count;
-  UINTN   UartBase;
-
-  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
-
-  for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) {
-     // Loop while waiting for a new char(s) to arrive in the
-     // RxFIFO
-    while ((MmioRead8 (UartBase + ULSR) & DUART_LSR_DR) == 0);
-
-    *Buffer = MmioRead8 (UartBase + URBR);
-  }
-
-  return NumberOfBytes;
-}
-
-/**
-  Check to see if any data is available to be read from the debug device.
-
-  @retval EFI_SUCCESS       At least one byte of data is available to be read
-  @retval EFI_NOT_READY     No data is available to be read
-  @retval EFI_DEVICE_ERROR  The serial device is not functioning properly
-
-**/
-BOOLEAN
-EFIAPI
-SerialPortPoll (
-  VOID
-  )
-{
-  UINTN   UartBase;
-
-  UartBase = (UINTN)PcdGet64 (PcdSerialRegisterBase);
-
-  return ((MmioRead8 (UartBase + ULSR) & DUART_LSR_DR) != 0);
-}
-
-/**
-  Set new attributes to LS1043a.
-
-  @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. If the specified
-                                  value is not supported, the variable's value will be reduced down to the
-                                  nearest supported one.
-  @param  Timeout                 If applicable, the number of microseconds the device will wait
-                                  before timing out a Read or a Write operation.
-  @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 EFI_SUCCESS             All attributes were set correctly on the serial device.
-
-**/
-EFI_STATUS
-EFIAPI
-SerialPortSetAttributes (
-  IN  OUT  UINT64              *BaudRate,
-  IN  OUT  UINT32              *ReceiveFifoDepth,
-  IN  OUT  UINT32              *Timeout,
-  IN  OUT  EFI_PARITY_TYPE     *Parity,
-  IN  OUT  UINT8               *DataBits,
-  IN  OUT  EFI_STOP_BITS_TYPE  *StopBits
-  )
-{
-  DuartInitializePort (*BaudRate);
-
-  return EFI_SUCCESS;
-}
diff --git a/Silicon/NXP/Library/DUartPortLib/DUartPortLib.inf b/Silicon/NXP/Library/DUartPortLib/DUartPortLib.inf
deleted file mode 100644
index 7a2fa619b027..000000000000
--- a/Silicon/NXP/Library/DUartPortLib/DUartPortLib.inf
+++ /dev/null
@@ -1,34 +0,0 @@
-#  DUartPortLib.inf
-#
-#  Component description file for DUartPortLib module
-#
-#  Copyright (c) 2013, Freescale Ltd. All rights reserved.
-#  Copyright 2017 NXP
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-
-[Defines]
-  INF_VERSION                    = 0x0001001A
-  BASE_NAME                      = DUartPortLib
-  FILE_GUID                      = c42dfe79-8de5-429e-a055-2d0a58591498
-  MODULE_TYPE                    = BASE
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = SerialPortLib
-
-[Sources.common]
-  DUartPortLib.c
-
-[LibraryClasses]
-  PcdLib
-  SocLib
-
-[Packages]
-  MdeModulePkg/MdeModulePkg.dec
-  MdePkg/MdePkg.dec
-  Silicon/NXP/NxpQoriqLs.dec
-
-[Pcd]
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase
-  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
-  gNxpQoriqLsTokenSpaceGuid.PcdPlatformFreqDiv
-- 
2.17.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#55995): https://edk2.groups.io/g/devel/message/55995
Mute This Topic: https://groups.io/mt/72077422/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list