1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Email: opensource_embedded@phytium.com.cn 7 * 8 * Change Logs: 9 * Date Author Notes 10 * 2022-10-26 huanghe first commit 11 * 2023-04-27 huanghe support RT-Smart 12 */ 13 14 #ifndef __DRV_USART_H__ 15 #define __DRV_USART_H__ 16 17 #include <rtthread.h> 18 #include "rtdevice.h" 19 20 #include "fpl011.h" 21 #include "fpl011_hw.h" 22 23 #define RTOS_UART_ISR_OEIM_MASK FPL011IMSC_OEIM /* Overrun error interrupt mask. */ 24 #define RTOS_UART_ISR_BEIM_MASK FPL011IMSC_BEIM /* Break error interrupt mask */ 25 #define RTOS_UART_ISR_PEIM_MASK FPL011IMSC_PEIM /* Parity error interrupt mask. */ 26 #define RTOS_UART_ISR_FEIM_MASK FPL011IMSC_FEIM /* Framing error interrupt mask. */ 27 #define RTOS_UART_ISR_RTIM_MASK FPL011IMSC_RTIM /* Receive timeout interrupt mask. */ 28 #define RTOS_UART_ISR_TXIM_MASK FPL011IMSC_TXIM /* Transmit interrupt mask. */ 29 #define RTOS_UART_ISR_RXIM_MASK FPL011IMSC_RXIM /* Receive interrupt mask. */ 30 31 typedef struct 32 { 33 u32 uart_instance; /* select uart global object */ 34 u32 isr_priority; /* irq Priority */ 35 u32 isr_event_mask; /* followed by RTOS_UART_ISR_XX */ 36 u32 uart_baudrate; 37 } FtRtthreadUartConfig; 38 39 struct drv_usart 40 { 41 const char *name; 42 FPl011 *handle; 43 FtRtthreadUartConfig config; 44 struct rt_serial_device serial; 45 }; 46 47 #endif // ! 48