1 /*
2  * Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef CDNS_UART_H
8 #define CDNS_UART_H
9 
10 #include <drivers/console.h>
11 
12 /* This is very minimalistic and will only work in QEMU.  */
13 
14 /* CADENCE Registers */
15 #define R_UART_CR	0
16 #define R_UART_CR_RXRST	(1 << 0) /* RX logic reset */
17 #define R_UART_CR_TXRST	(1 << 1) /* TX logic reset */
18 #define R_UART_CR_RX_EN	(1 << 2) /* RX enabled */
19 #define R_UART_CR_TX_EN	(1 << 4) /* TX enabled */
20 
21 #define R_UART_SR		0x2C
22 #define UART_SR_INTR_REMPTY_BIT	1
23 #define UART_SR_INTR_TFUL_BIT	4
24 #define UART_SR_INTR_TEMPTY_BIT	3
25 
26 #define R_UART_TX	0x30
27 #define R_UART_RX	0x30
28 
29 #ifndef __ASSEMBLER__
30 
31 #include <stdint.h>
32 
33 /*
34  * Initialize a new Cadence console instance and register it with the console
35  * framework. The |console| pointer must point to storage that will be valid
36  * for the lifetime of the console, such as a global or static local variable.
37  * Its contents will be reinitialized from scratch.
38  */
39 int console_cdns_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud,
40 			  console_t *console);
41 
42 #endif /*__ASSEMBLER__*/
43 
44 #endif /* CDNS_UART_H */
45