mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-27 15:24:54 +00:00

The implementation of code changes manages the transmit FIFO (TxFIFO) in the UART driver. The added code snippet includes a sequence of instructions that ensures efficient handling of data transmission and synchronization with the host software. The code first checks the TxFIFO empty flag to determine whether there is data available for transmission. If the TxFIFO is not empty, the code waits until it becomes empty, ensuring that the transmit operation is synchronized with the availability of data. Subsequently, the code monitors the transmit operation's activity status. It waits until the transmit operation becomes inactive, indicating the completion of the previous transmission. This synchronization step ensures that new data can be added to the TxFIFO without causing any loss of transmission time. Update console_flush() function, the function waits for the Transmitter FIFO to empty and checks the transmitter's active state. If the transmitter is in an active state, it means it is currently shifting out a character. Signed-off-by: Prasad Kummari <prasad.kummari@amd.com> Change-Id: I9d6c05bdfb9270924b40bf1f6ecb5fe541a2242e
45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
/*
|
|
* Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef CDNS_UART_H
|
|
#define CDNS_UART_H
|
|
|
|
#include <drivers/console.h>
|
|
|
|
/* This is very minimalistic and will only work in QEMU. */
|
|
|
|
/* CADENCE Registers */
|
|
#define R_UART_CR 0
|
|
#define R_UART_CR_RXRST (1 << 0) /* RX logic reset */
|
|
#define R_UART_CR_TXRST (1 << 1) /* TX logic reset */
|
|
#define R_UART_CR_RX_EN (1 << 2) /* RX enabled */
|
|
#define R_UART_CR_TX_EN (1 << 4) /* TX enabled */
|
|
|
|
#define R_UART_SR 0x2C
|
|
#define UART_SR_INTR_REMPTY_BIT 1
|
|
#define UART_SR_INTR_TFUL_BIT 4
|
|
#define UART_SR_INTR_TEMPTY_BIT 3
|
|
#define UART_SR_INTR_TACTIVE_BIT 11
|
|
|
|
#define R_UART_TX 0x30
|
|
#define R_UART_RX 0x30
|
|
|
|
#ifndef __ASSEMBLER__
|
|
|
|
#include <stdint.h>
|
|
|
|
/*
|
|
* Initialize a new Cadence console instance and register it with the console
|
|
* framework. The |console| pointer must point to storage that will be valid
|
|
* for the lifetime of the console, such as a global or static local variable.
|
|
* Its contents will be reinitialized from scratch.
|
|
*/
|
|
int console_cdns_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud,
|
|
console_t *console);
|
|
|
|
#endif /*__ASSEMBLER__*/
|
|
|
|
#endif /* CDNS_UART_H */
|