• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
25 #define R_UART_TX	0x30
26 #define R_UART_RX	0x30
27 
28 #define CONSOLE_T_CDNS_BASE	CONSOLE_T_DRVDATA
29 
30 #ifndef __ASSEMBLER__
31 
32 #include <stdint.h>
33 
34 typedef struct {
35 	console_t console;
36 	uintptr_t base;
37 } console_cdns_t;
38 
39 /*
40  * Initialize a new Cadence console instance and register it with the console
41  * framework. The |console| pointer must point to storage that will be valid
42  * for the lifetime of the console, such as a global or static local variable.
43  * Its contents will be reinitialized from scratch.
44  */
45 int console_cdns_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud,
46 			  console_cdns_t *console);
47 
48 #endif /*__ASSEMBLER__*/
49 
50 #endif /* CDNS_UART_H */
51