VSF Documented
vsf_pl011_uart_reg.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
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 *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
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. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_PL011_USART_REG_H__
19#define __VSF_PL011_USART_REG_H__
20
21/*============================ INCLUDES ======================================*/
22
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/*============================ MACROS ========================================*/
35
36/* Define structure member permissions : read only/write only/read write */
37#ifndef __IM
38# define __IM const
39#endif
40#ifndef __OM
41# define __OM
42#endif
43#ifndef __IOM
44# define __IOM
45#endif
46
47/*============================ MACROFIED FUNCTIONS ===========================*/
48
49#ifndef VSF_DEF_REG
50# define VSF_DEF_REG(__NAME, __TOTAL_SIZE, ...) \
51 union { \
52 struct { \
53 __VA_ARGS__ \
54 }; \
55 reg##__TOTAL_SIZE##_t VALUE; \
56 } __NAME
57#endif
58
59/*============================ TYPES =========================================*/
60
61// refer to: https://developer.arm.com/Processors/PL011
62typedef struct vsf_pl011_usart_reg_t {
63 // 0x000 UARTDR
64 VSF_DEF_REG(UARTDR, 32,
65 __IOM reg32_t DATA : 8;
66 __IOM reg32_t FE : 1;
67 __IOM reg32_t PE : 1;
68 __IOM reg32_t BE : 1;
69 __IOM reg32_t OE : 1;
70 );
71 union {
72 // 0x004 UARTRSR/UARTECR
73 VSF_DEF_REG(UARTRSR, 32,
74 __IOM reg32_t FE : 1;
75 __IOM reg32_t PE : 1;
76 __IOM reg32_t BE : 1;
77 __IOM reg32_t OE : 1;
78 );
79 VSF_DEF_REG(UARTECR, 32,
80 __IOM reg32_t FE : 1;
81 __IOM reg32_t PE : 1;
82 __IOM reg32_t BE : 1;
83 __IOM reg32_t OE : 1;
84 );
85 };
86 // 0x008-0x014
87 REG_RSVD_N(32, 4);
88 // 0x018 UARTFR
89 VSF_DEF_REG(UARTFR, 32,
90 __IOM reg32_t CTS : 1;
91 __IOM reg32_t DSR : 1;
92 __IOM reg32_t DCD : 1;
93 __IOM reg32_t BUSY : 1;
94 __IOM reg32_t RXFE : 1;
95 __IOM reg32_t TXFF : 1;
96 __IOM reg32_t RXFF : 1;
97 __IOM reg32_t TXFE : 1;
98 __IOM reg32_t RI : 1;
99 );
100 // 0x01C
102 // 0x020 UARTILPR
103 VSF_DEF_REG(UARTILPR, 32,
104 __IOM reg32_t ILPDVSR : 8;
105 );
106 // 0x024 UARTIBRD
107 VSF_DEF_REG(UARTIBRD, 32,
108 __IOM reg32_t BAUD_DIVINT : 16;
109 );
110 // 0x028 UARTFBRD
111 VSF_DEF_REG(UARTFBRD, 32,
112 __IOM reg32_t BAUD_DIVFRAC : 5;
113 );
114 // 0x02C UARTLCR_H
115 VSF_DEF_REG(UARTLCR_H, 32,
116 __IOM reg32_t BRK : 1;
117 __IOM reg32_t PEN : 1;
118 __IOM reg32_t EPS : 1;
119 __IOM reg32_t STP2 : 1;
120 __IOM reg32_t FEN : 1;
121 __IOM reg32_t WLEN : 2;
122 __IOM reg32_t SPS : 1;
123 );
124 // 0x030 UARTCR
125 VSF_DEF_REG(UARTCR, 32,
126 __IOM reg32_t UARTEN : 1;
127 __IOM reg32_t SIREN : 1;
128 __IOM reg32_t SIRLP : 1;
129 __IOM reg32_t RESERVED : 4;
130 __IOM reg32_t LBE : 1;
131 __IOM reg32_t TXE : 1;
132 __IOM reg32_t RXE : 1;
133 __IOM reg32_t DTR : 1;
134 __IOM reg32_t RTS : 1;
135 __IOM reg32_t OUT1 : 1;
136 __IOM reg32_t OUT2 : 1;
137 __IOM reg32_t RTSEN : 1;
138 __IOM reg32_t CTSEN : 1;
139 );
140 // 0x034 UARTIFLS
141 VSF_DEF_REG(UARTIFLS, 32,
142 __IOM reg32_t TXIFLSEL : 3;
143 __IOM reg32_t RXIFLSEL : 3;
144 );
145 // 0x038 UARTIMSC
146 VSF_DEF_REG(UARTIMSC, 32,
147 __IOM reg32_t RIMIM : 1;
148 __IOM reg32_t CTSMIM : 1;
149 __IOM reg32_t DCDMIM : 1;
150 __IOM reg32_t DSRMIM : 1;
151 __IOM reg32_t RXIM : 1;
152 __IOM reg32_t TXIM : 1;
153 __IOM reg32_t RTIM : 1;
154 __IOM reg32_t FEIM : 1;
155 __IOM reg32_t PEIM : 1;
156 __IOM reg32_t BEIM : 1;
157 __IOM reg32_t OEIM : 1;
158 );
159 // 0x03C UARTRIS
160 VSF_DEF_REG(UARTRIS, 32,
161 __IM reg32_t RIRMIS : 1;
162 __IM reg32_t CTSRMIS : 1;
163 __IM reg32_t DCDRMIS : 1;
164 __IM reg32_t DSRRMIS : 1;
165 __IM reg32_t RXRIS : 1;
166 __IM reg32_t TXRIS : 1;
167 __IM reg32_t RTRIS : 1;
168 __IM reg32_t FERIS : 1;
169 __IM reg32_t PERIS : 1;
170 __IM reg32_t BERIS : 1;
171 __IM reg32_t OERIS : 1;
172 );
173 // 0x040 UARTMIS
174 VSF_DEF_REG(UARTMIS, 32,
175 __IM reg32_t RIMMIS : 1;
176 __IM reg32_t CTSMMIS : 1;
177 __IM reg32_t DCDMMIS : 1;
178 __IM reg32_t DSRMMIS : 1;
179 __IM reg32_t RXMIS : 1;
180 __IM reg32_t TXMIS : 1;
181 __IM reg32_t RTMIS : 1;
182 __IM reg32_t FEMIS : 1;
183 __IM reg32_t PEMIS : 1;
184 __IM reg32_t BEMIS : 1;
185 __IM reg32_t OEMIS : 1;
186 );
187 // 0x044 UARTICR
188 VSF_DEF_REG(UARTICR, 32,
189 __OM reg32_t RIMIC : 1;
190 __OM reg32_t CTSMIC : 1;
191 __OM reg32_t DCDMMIC : 1;
192 __OM reg32_t DSRMMIC : 1;
193 __OM reg32_t RXIC : 1;
194 __OM reg32_t TXIC : 1;
195 __OM reg32_t RTIC : 1;
196 __OM reg32_t FEIC : 1;
197 __OM reg32_t PEIC : 1;
198 __OM reg32_t BEIC : 1;
199 __OM reg32_t OEIC : 1;
200 );
201 // 0x048 UARTDMACR
202 VSF_DEF_REG(UARTDMACR, 32,
203 __IOM reg32_t RXDMAE : 1;
204 __IOM reg32_t TXDMAE : 1;
205 __IOM reg32_t DMAONERR : 1;
206 );
208
209
210#ifdef __cplusplus
211}
212#endif
213
214#endif
215
216/* EOF */
volatile uint32_t reg32_t
Definition i_io_systick.h:120
Definition vsf_pl011_uart_reg.h:62
VSF_DEF_REG(UARTFBRD, 32, __IOM reg32_t BAUD_DIVFRAC :5;)
VSF_DEF_REG(UARTIMSC, 32, __IOM reg32_t RIMIM :1;__IOM reg32_t CTSMIM :1;__IOM reg32_t DCDMIM :1;__IOM reg32_t DSRMIM :1;__IOM reg32_t RXIM :1;__IOM reg32_t TXIM :1;__IOM reg32_t RTIM :1;__IOM reg32_t FEIM :1;__IOM reg32_t PEIM :1;__IOM reg32_t BEIM :1;__IOM reg32_t OEIM :1;)
VSF_DEF_REG(UARTMIS, 32, __IM reg32_t RIMMIS :1;__IM reg32_t CTSMMIS :1;__IM reg32_t DCDMMIS :1;__IM reg32_t DSRMMIS :1;__IM reg32_t RXMIS :1;__IM reg32_t TXMIS :1;__IM reg32_t RTMIS :1;__IM reg32_t FEMIS :1;__IM reg32_t PEMIS :1;__IM reg32_t BEMIS :1;__IM reg32_t OEMIS :1;)
VSF_DEF_REG(UARTDR, 32, __IOM reg32_t DATA :8;__IOM reg32_t FE :1;__IOM reg32_t PE :1;__IOM reg32_t BE :1;__IOM reg32_t OE :1;)
VSF_DEF_REG(UARTCR, 32, __IOM reg32_t UARTEN :1;__IOM reg32_t SIREN :1;__IOM reg32_t SIRLP :1;__IOM reg32_t RESERVED :4;__IOM reg32_t LBE :1;__IOM reg32_t TXE :1;__IOM reg32_t RXE :1;__IOM reg32_t DTR :1;__IOM reg32_t RTS :1;__IOM reg32_t OUT1 :1;__IOM reg32_t OUT2 :1;__IOM reg32_t RTSEN :1;__IOM reg32_t CTSEN :1;)
VSF_DEF_REG(UARTIFLS, 32, __IOM reg32_t TXIFLSEL :3;__IOM reg32_t RXIFLSEL :3;)
VSF_DEF_REG(UARTIBRD, 32, __IOM reg32_t BAUD_DIVINT :16;)
VSF_DEF_REG(UARTRIS, 32, __IM reg32_t RIRMIS :1;__IM reg32_t CTSRMIS :1;__IM reg32_t DCDRMIS :1;__IM reg32_t DSRRMIS :1;__IM reg32_t RXRIS :1;__IM reg32_t TXRIS :1;__IM reg32_t RTRIS :1;__IM reg32_t FERIS :1;__IM reg32_t PERIS :1;__IM reg32_t BERIS :1;__IM reg32_t OERIS :1;)
VSF_DEF_REG(UARTFR, 32, __IOM reg32_t CTS :1;__IOM reg32_t DSR :1;__IOM reg32_t DCD :1;__IOM reg32_t BUSY :1;__IOM reg32_t RXFE :1;__IOM reg32_t TXFF :1;__IOM reg32_t RXFF :1;__IOM reg32_t TXFE :1;__IOM reg32_t RI :1;)
VSF_DEF_REG(UARTDMACR, 32, __IOM reg32_t RXDMAE :1;__IOM reg32_t TXDMAE :1;__IOM reg32_t DMAONERR :1;)
VSF_DEF_REG(UARTILPR, 32, __IOM reg32_t ILPDVSR :8;)
VSF_DEF_REG(UARTICR, 32, __OM reg32_t RIMIC :1;__OM reg32_t CTSMIC :1;__OM reg32_t DCDMMIC :1;__OM reg32_t DSRMMIC :1;__OM reg32_t RXIC :1;__OM reg32_t TXIC :1;__OM reg32_t RTIC :1;__OM reg32_t FEIC :1;__OM reg32_t PEIC :1;__OM reg32_t BEIC :1;__OM reg32_t OEIC :1;)
VSF_DEF_REG(UARTLCR_H, 32, __IOM reg32_t BRK :1;__IOM reg32_t PEN :1;__IOM reg32_t EPS :1;__IOM reg32_t STP2 :1;__IOM reg32_t FEN :1;__IOM reg32_t WLEN :2;__IOM reg32_t SPS :1;)
#define __OM
Definition vsf_pl011_uart_reg.h:41
#define VSF_DEF_REG(__NAME, __TOTAL_SIZE,...)
Definition vsf_pl011_uart_reg.h:50
#define __IM
Definition vsf_pl011_uart_reg.h:38
#define __IOM
Definition vsf_pl011_uart_reg.h:44