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