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