2 * Copyright (C) 2017 C-SKY Microsystems Co., Ltd. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 /******************************************************************************
18 * @brief header file for usart driver
21 ******************************************************************************/
29 #define BAUDRATE_DEFAULT 19200
30 #define UART_BUSY_TIMEOUT 1000000
31 #define UART_RECEIVE_TIMEOUT 1000
32 #define UART_TRANSMIT_TIMEOUT 1000
33 #define UART_MAX_FIFO 0x10
34 /* UART register bit definitions */
36 #define USR_UART_BUSY 0x01
37 #define USR_UART_TFE 0x04
38 #define USR_UART_RFNE 0x08
39 #define LSR_DATA_READY 0x01
40 #define LSR_THR_EMPTY 0x20
41 #define IER_RDA_INT_ENABLE 0x01
42 #define IER_THRE_INT_ENABLE 0x02
43 #define IIR_NO_ISQ_PEND 0x01
44 #define IIR_RECV_LINE_ENABLE 0x04
46 #define LCR_SET_DLAB 0x80 /* enable r/w DLR to set the baud rate */
47 #define LCR_PARITY_ENABLE 0x08 /* parity enabled */
48 #define LCR_PARITY_EVEN 0x10 /* Even parity enabled */
49 #define LCR_PARITY_ODD 0xef /* Odd parity enabled */
50 #define LCR_WORD_SIZE_5 0xfc /* the data length is 5 bits */
51 #define LCR_WORD_SIZE_6 0x01 /* the data length is 6 bits */
52 #define LCR_WORD_SIZE_7 0x02 /* the data length is 7 bits */
53 #define LCR_WORD_SIZE_8 0x03 /* the data length is 8 bits */
54 #define LCR_STOP_BIT1 0xfb /* 1 stop bit */
55 #define LCR_STOP_BIT2 0x04 /* 1.5 stop bit */
57 #define DW_LSR_PFE 0x80
58 #define DW_LSR_TEMT 0x40
59 #define DW_LSR_THRE 0x40
60 #define DW_LSR_BI 0x10
61 #define DW_LSR_FE 0x08
62 #define DW_LSR_PE 0x04
63 #define DW_LSR_OE 0x02
64 #define DW_LSR_DR 0x01
65 #define DW_LSR_TRANS_EMPTY 0x20
67 #define DW_FCR_FIFOE 0x01
68 #define DW_FCR_RFIFOR 0x02
69 #define DW_FCR_XFIFOR 0x04
70 #define DW_FCR_RT_FIFO_SINGLE 0x0 << 6 /* rcvr trigger 1 character in the FIFO */
71 #define DW_FCR_RT_FIFO_QUARTER 0x1 << 6 /* rcvr trigger FIFO 1/4 full */
72 #define DW_FCR_RT_FIFO_HALF 0x2 << 6 /* rcvr trigger FIFO 1/2 full */
73 #define DW_FCR_RT_FIFO_LESSTWO 0x3 << 6 /* rcvr trigger FIFO 2 less than full */
74 #define DW_FCR_TET_FIFO_EMPTY 0x0 << 4 /* tx empty trigger FIFO empty */
75 #define DW_FCR_TET_FIFO_TWO 0x1 << 4 /* tx empty trigger 2 characters in the FIFO */
76 #define DW_FCR_TET_FIFO_QUARTER 0x2 << 4 /* tx empty trigger FIFO 1/4 full */
77 #define DW_FCR_TET_FIFO_HALF 0x3 << 4 /* tx empty trigger FIFO 1/2 full*/
79 #define DW_IIR_THR_EMPTY 0x02 /* threshold empty */
80 #define DW_IIR_RECV_DATA 0x04 /* received data available */
81 #define DW_IIR_RECV_LINE 0x06 /* receiver line status */
82 #define DW_IIR_CHAR_TIMEOUT 0x0c /* character timeout */
84 #define DW_MCR_AFCE 0x20 /* Auto Flow Control Enable */
85 #define DW_MCR_RTS 0x02
89 __IM uint32_t RBR; /* Offset: 0x000 (R/ ) Receive buffer register */
90 __OM uint32_t THR; /* Offset: 0x000 ( /W) Transmission hold register */
91 __IOM uint32_t DLL; /* Offset: 0x000 (R/W) Clock frequency division low section register */
94 __IOM uint32_t DLH; /* Offset: 0x004 (R/W) Clock frequency division high section register */
95 __IOM uint32_t IER; /* Offset: 0x004 (R/W) Interrupt enable register */
98 __IM uint32_t IIR; /* Offset: 0x008 (R/ ) Interrupt indicia register */
99 __OM uint32_t FCR; /* Offset: 0x008 ( /W) FIFO control register */
101 __IOM uint32_t LCR; /* Offset: 0x00C (R/W) Transmission control register */
102 __IOM uint32_t MCR; /* Offset: 0x010 (R/W) Modem control register */
103 __IM uint32_t LSR; /* Offset: 0x014 (R/ ) Transmission state register */
104 __IM uint32_t MSR; /* Offset: 0x018 (R/ ) Modem state register */
105 uint32_t RESERVED1[21];
106 __IOM uint32_t FAR; /* Offset: 0x070 (R/W) FIFO accesss register */
107 __IM uint32_t TFR; /* Offset: 0x074 (R/ ) transmit FIFO read */
108 __OM uint32_t RFW; /* Offset: 0x078 ( /W) receive FIFO write */
109 __IM uint32_t USR; /* Offset: 0x07c (R/ ) UART state register */
110 __IM uint32_t TFL; /* Offset: 0x080 (R/ ) transmit FIFO level */
111 __IM uint32_t RFL; /* Offset: 0x084 (R/ ) receive FIFO level */
115 #endif /* __DW_USART_H */