From: Pankaj Bansal <pankaj.ban...@nxp.com> DUartPortLib is for ns16550 compatible UART in LS1043A. Therefore, we can remove it and use BaseSerialPortLib16550.
Signed-off-by: Pankaj Bansal <pankaj.ban...@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/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-