1 /* 2 * Copyright (c) 2006-2025 RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2025-05-28 ZhangJing Porting to ultrarisc dp1000 9 */ 10 11 #ifndef __DRV_UART_H__ 12 #define __DRV_UART_H__ 13 14 #include "riscv_io.h" 15 16 /** 17 * uart ns16550a 18 * http://byterunner.com/16550.html 19 */ 20 21 /* TRANSMIT AND RECEIVE HOLDING REGISTER */ 22 #define UART_RHR 0 23 #define UART_THR 0 24 25 /* INTERRUPT ENABLE REGISTER */ 26 #define UART_IER 1 27 #define UART_IER_RX_ENABLE (1 << 0) 28 #define UART_IER_TX_ENABLE (1 << 1) 29 30 /* FIFO CONTROL REGISTER */ 31 #define UART_FCR 2 32 #define UART_FCR_FIFO_ENABLE (1 << 0) 33 #define UART_FCR_FIFO_CLEAR (3 << 1) 34 35 /* INTERRUPT STATUS REGISTER */ 36 #define UART_ISR 2 37 38 /* LINE CONTROL REGISTER */ 39 #define UART_LCR 3 40 #define UART_LCR_EIGHT_BITS (3 << 0) 41 /* special mode to set baud rate */ 42 #define UART_LCR_BAUD_LATCH (1 << 7) 43 44 /* LINE STATUS REGISTER */ 45 #define UART_LSR 5 46 /* input is waiting to be read from RHR */ 47 #define UART_LSR_RX_READY (1 << 0) 48 /* THR can accept another character to send */ 49 #define UART_LSR_TX_IDLE (1 << 5) 50 51 /*#define UART_REFERENCE_CLOCK 1843200 52 #define UART_DEFAULT_BAUDRATE 115200*/ 53 54 extern void *uart0_base; 55 56 57 void rt_hw_uart_start_rx_thread(); 58 int rt_hw_uart_init(void); 59 void drv_uart_puts(char *str); /* for syscall */ 60 61 #endif /* __DRV_UART_H__ */