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