1/* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#include <config.h> 8#include <stdint.h> 9#include <util.h> 10#include <machine/io.h> 11#include <plat/machine/devices_gen.h> 12 13#define URXD 0x00 /* UART Receiver Register */ 14#define UTXD 0x40 /* UART Transmitter Register */ 15#define UCR1 0x80 /* UART Control Register 1 */ 16#define UCR2 0x84 /* UART Control Register 2 */ 17#define UCR3 0x88 /* UART Control Register 3 */ 18#define UCR4 0x8c /* UART Control Register 4 */ 19#define UFCR 0x90 /* UART FIFO Control Register */ 20#define USR1 0x94 /* UART Status Register 1 */ 21#define USR2 0x98 /* UART Status Register 2 */ 22#define UESC 0x9c /* UART Escape Character Register */ 23#define UTIM 0xa0 /* UART Escape Timer Register */ 24#define UBIR 0xa4 /* UART BRM Incremental Register */ 25#define UBMR 0xa8 /* UART BRM Modulator Register */ 26#define UBRC 0xac /* UART Baud Rate Counter Register */ 27#define ONEMS 0xb0 /* UART One Millisecond Register */ 28#define UTS 0xb4 /* UART Test Register */ 29 30#define UART_SR1_TRDY BIT(13) 31#define UART_SR1_RRDY BIT(9) 32#define UART_SR2_TXFIFO_EMPTY BIT(14) 33#define UART_SR2_RXFIFO_RDR BIT(0) 34 35#define UART_REG(x) ((volatile uint32_t *)(UART_PPTR + (x))) 36 37#if defined(CONFIG_DEBUG_BUILD) || defined(CONFIG_PRINTING) 38void putDebugChar(unsigned char c) 39{ 40 while (!(*UART_REG(USR2) & UART_SR2_TXFIFO_EMPTY)); 41 *UART_REG(UTXD) = c; 42} 43#endif 44 45#ifdef CONFIG_DEBUG_BUILD 46unsigned char getDebugChar(void) 47{ 48 while (!(*UART_REG(USR2) & UART_SR2_RXFIFO_RDR)); 49 return *UART_REG(URXD); 50} 51#endif /* CONFIG_DEBUG_BUILD */ 52