[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