1 //-----------------------------------------------------------------------------
2 // Copyright 2012 (c) Silicon Laboratories Inc.
3 //
4 // SPDX-License-Identifier: Zlib
5 //
6 // This siHAL software is provided 'as-is', without any express or implied
7 // warranty. In no event will the authors be held liable for any damages
8 // arising from the use of this software.
9 //
10 // Permission is granted to anyone to use this software for any purpose,
11 // including commercial applications, and to alter it and redistribute it
12 // freely, subject to the following restrictions:
13 //
14 // 1. The origin of this software must not be misrepresented; you must not
15 //    claim that you wrote the original software. If you use this software
16 //    in a product, an acknowledgment in the product documentation would be
17 //    appreciated but is not required.
18 // 2. Altered source versions must be plainly marked as such, and must not be
19 //    misrepresented as being the original software.
20 // 3. This notice may not be removed or altered from any source distribution.
21 //-----------------------------------------------------------------------------
22 //
23 // Script: 0.61
24 // Version: 1
25 
26 #ifndef __SI32_UART_B_REGISTERS_H__
27 #define __SI32_UART_B_REGISTERS_H__
28 
29 #include <stdint.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 struct SI32_UART_B_CONFIG_Struct
36 {
37    union
38    {
39       struct
40       {
41          // Receiver Start Enable
42          volatile uint32_t RSTRTEN: 1;
43          // Receiver Parity Enable
44          volatile uint32_t RPAREN: 1;
45          // Receiver Stop Enable
46          volatile uint32_t RSTPEN: 1;
47          // Receiver Stop Mode
48          volatile uint32_t RSTPMD: 2;
49          // Receiver Parity Mode
50          volatile uint32_t RPARMD: 2;
51                   uint32_t reserved0: 1;
52          // Receiver Data Length
53          volatile uint32_t RDATLN: 3;
54                   uint32_t reserved1: 2;
55          // Receiver IrDA Enable
56          volatile uint32_t RIRDAEN: 1;
57          // Receiver Invert Enable
58          volatile uint32_t RINVEN: 1;
59                   uint32_t reserved2: 1;
60          // Transmitter Start Enable
61          volatile uint32_t TSTRTEN: 1;
62          // Transmitter Parity Enable
63          volatile uint32_t TPAREN: 1;
64          // Transmitter Stop Enable
65          volatile uint32_t TSTPEN: 1;
66          // Transmitter Stop Mode
67          volatile uint32_t TSTPMD: 2;
68          // Transmitter Parity Mode
69          volatile uint32_t TPARMD: 2;
70                   uint32_t reserved3: 1;
71          // Transmitter Data Length
72          volatile uint32_t TDATLN: 3;
73                   uint32_t reserved4: 2;
74          // Transmitter IrDA Enable
75          volatile uint32_t TIRDAEN: 1;
76          // Transmitter Invert Enable
77          volatile uint32_t TINVEN: 1;
78                   uint32_t reserved5: 1;
79       };
80       volatile uint32_t U32;
81    };
82 };
83 
84 #define SI32_UART_B_CONFIG_RSTRTEN_MASK  0x00000001
85 #define SI32_UART_B_CONFIG_RSTRTEN_SHIFT  0
86 // Do not expect a start bit during receptions.
87 #define SI32_UART_B_CONFIG_RSTRTEN_DISABLED_VALUE  0
88 #define SI32_UART_B_CONFIG_RSTRTEN_DISABLED_U32 \
89    (SI32_UART_B_CONFIG_RSTRTEN_DISABLED_VALUE << SI32_UART_B_CONFIG_RSTRTEN_SHIFT)
90 // Expect a start bit during receptions.
91 #define SI32_UART_B_CONFIG_RSTRTEN_ENABLED_VALUE  1
92 #define SI32_UART_B_CONFIG_RSTRTEN_ENABLED_U32 \
93    (SI32_UART_B_CONFIG_RSTRTEN_ENABLED_VALUE << SI32_UART_B_CONFIG_RSTRTEN_SHIFT)
94 
95 #define SI32_UART_B_CONFIG_RPAREN_MASK  0x00000002
96 #define SI32_UART_B_CONFIG_RPAREN_SHIFT  1
97 // Do not expect a parity bit during receptions.
98 #define SI32_UART_B_CONFIG_RPAREN_DISABLED_VALUE  0
99 #define SI32_UART_B_CONFIG_RPAREN_DISABLED_U32 \
100    (SI32_UART_B_CONFIG_RPAREN_DISABLED_VALUE << SI32_UART_B_CONFIG_RPAREN_SHIFT)
101 // Expect a parity bit during receptions.
102 #define SI32_UART_B_CONFIG_RPAREN_ENABLED_VALUE  1
103 #define SI32_UART_B_CONFIG_RPAREN_ENABLED_U32 \
104    (SI32_UART_B_CONFIG_RPAREN_ENABLED_VALUE << SI32_UART_B_CONFIG_RPAREN_SHIFT)
105 
106 #define SI32_UART_B_CONFIG_RSTPEN_MASK  0x00000004
107 #define SI32_UART_B_CONFIG_RSTPEN_SHIFT  2
108 // Do not expect stop bits during receptions.
109 #define SI32_UART_B_CONFIG_RSTPEN_DISABLED_VALUE  0
110 #define SI32_UART_B_CONFIG_RSTPEN_DISABLED_U32 \
111    (SI32_UART_B_CONFIG_RSTPEN_DISABLED_VALUE << SI32_UART_B_CONFIG_RSTPEN_SHIFT)
112 // Expect stop bits during receptions.
113 #define SI32_UART_B_CONFIG_RSTPEN_ENABLED_VALUE  1
114 #define SI32_UART_B_CONFIG_RSTPEN_ENABLED_U32 \
115    (SI32_UART_B_CONFIG_RSTPEN_ENABLED_VALUE << SI32_UART_B_CONFIG_RSTPEN_SHIFT)
116 
117 #define SI32_UART_B_CONFIG_RSTPMD_MASK  0x00000018
118 #define SI32_UART_B_CONFIG_RSTPMD_SHIFT  3
119 // 0.5 stop bit.
120 #define SI32_UART_B_CONFIG_RSTPMD_0P5_STOP_VALUE  0
121 #define SI32_UART_B_CONFIG_RSTPMD_0P5_STOP_U32 \
122    (SI32_UART_B_CONFIG_RSTPMD_0P5_STOP_VALUE << SI32_UART_B_CONFIG_RSTPMD_SHIFT)
123 // 1 stop bit.
124 #define SI32_UART_B_CONFIG_RSTPMD_1_STOP_VALUE  1
125 #define SI32_UART_B_CONFIG_RSTPMD_1_STOP_U32 \
126    (SI32_UART_B_CONFIG_RSTPMD_1_STOP_VALUE << SI32_UART_B_CONFIG_RSTPMD_SHIFT)
127 // 1.5 stop bits.
128 #define SI32_UART_B_CONFIG_RSTPMD_1P5_STOP_VALUE  2
129 #define SI32_UART_B_CONFIG_RSTPMD_1P5_STOP_U32 \
130    (SI32_UART_B_CONFIG_RSTPMD_1P5_STOP_VALUE << SI32_UART_B_CONFIG_RSTPMD_SHIFT)
131 // 2 stop bits.
132 #define SI32_UART_B_CONFIG_RSTPMD_2_STOP_VALUE  3
133 #define SI32_UART_B_CONFIG_RSTPMD_2_STOP_U32 \
134    (SI32_UART_B_CONFIG_RSTPMD_2_STOP_VALUE << SI32_UART_B_CONFIG_RSTPMD_SHIFT)
135 
136 #define SI32_UART_B_CONFIG_RPARMD_MASK  0x00000060
137 #define SI32_UART_B_CONFIG_RPARMD_SHIFT  5
138 // Odd Parity.
139 #define SI32_UART_B_CONFIG_RPARMD_ODD_VALUE  0
140 #define SI32_UART_B_CONFIG_RPARMD_ODD_U32 \
141    (SI32_UART_B_CONFIG_RPARMD_ODD_VALUE << SI32_UART_B_CONFIG_RPARMD_SHIFT)
142 // Even Parity.
143 #define SI32_UART_B_CONFIG_RPARMD_EVEN_VALUE  1
144 #define SI32_UART_B_CONFIG_RPARMD_EVEN_U32 \
145    (SI32_UART_B_CONFIG_RPARMD_EVEN_VALUE << SI32_UART_B_CONFIG_RPARMD_SHIFT)
146 // Set (Parity = 1).
147 #define SI32_UART_B_CONFIG_RPARMD_MARK_VALUE  2
148 #define SI32_UART_B_CONFIG_RPARMD_MARK_U32 \
149    (SI32_UART_B_CONFIG_RPARMD_MARK_VALUE << SI32_UART_B_CONFIG_RPARMD_SHIFT)
150 // Clear (Parity = 0).
151 #define SI32_UART_B_CONFIG_RPARMD_SPACE_VALUE  3
152 #define SI32_UART_B_CONFIG_RPARMD_SPACE_U32 \
153    (SI32_UART_B_CONFIG_RPARMD_SPACE_VALUE << SI32_UART_B_CONFIG_RPARMD_SHIFT)
154 
155 #define SI32_UART_B_CONFIG_RDATLN_MASK  0x00000700
156 #define SI32_UART_B_CONFIG_RDATLN_SHIFT  8
157 // 5 bits.
158 #define SI32_UART_B_CONFIG_RDATLN_5_BITS_VALUE  0
159 #define SI32_UART_B_CONFIG_RDATLN_5_BITS_U32 \
160    (SI32_UART_B_CONFIG_RDATLN_5_BITS_VALUE << SI32_UART_B_CONFIG_RDATLN_SHIFT)
161 // 6 bits.
162 #define SI32_UART_B_CONFIG_RDATLN_6_BITS_VALUE  1
163 #define SI32_UART_B_CONFIG_RDATLN_6_BITS_U32 \
164    (SI32_UART_B_CONFIG_RDATLN_6_BITS_VALUE << SI32_UART_B_CONFIG_RDATLN_SHIFT)
165 // 7 bits.
166 #define SI32_UART_B_CONFIG_RDATLN_7_BITS_VALUE  2
167 #define SI32_UART_B_CONFIG_RDATLN_7_BITS_U32 \
168    (SI32_UART_B_CONFIG_RDATLN_7_BITS_VALUE << SI32_UART_B_CONFIG_RDATLN_SHIFT)
169 // 8 bits.
170 #define SI32_UART_B_CONFIG_RDATLN_8_BITS_VALUE  3
171 #define SI32_UART_B_CONFIG_RDATLN_8_BITS_U32 \
172    (SI32_UART_B_CONFIG_RDATLN_8_BITS_VALUE << SI32_UART_B_CONFIG_RDATLN_SHIFT)
173 // 9 bits. The 9th bit is stored in the FIFO (normal mode).
174 #define SI32_UART_B_CONFIG_RDATLN_9_BITS_STORED_VALUE  4
175 #define SI32_UART_B_CONFIG_RDATLN_9_BITS_STORED_U32 \
176    (SI32_UART_B_CONFIG_RDATLN_9_BITS_STORED_VALUE << SI32_UART_B_CONFIG_RDATLN_SHIFT)
177 // 9 bits. The 9th bit is not stored in the FIFO (fixed mode). This mode is used
178 // when the 9th bit is only used for match operations (see MATMD).
179 #define SI32_UART_B_CONFIG_RDATLN_9_BITS_MATCH_VALUE  5
180 #define SI32_UART_B_CONFIG_RDATLN_9_BITS_MATCH_U32 \
181    (SI32_UART_B_CONFIG_RDATLN_9_BITS_MATCH_VALUE << SI32_UART_B_CONFIG_RDATLN_SHIFT)
182 
183 #define SI32_UART_B_CONFIG_RIRDAEN_MASK  0x00002000
184 #define SI32_UART_B_CONFIG_RIRDAEN_SHIFT  13
185 // The receiver does not operate in IrDA mode.
186 #define SI32_UART_B_CONFIG_RIRDAEN_DISABLED_VALUE  0
187 #define SI32_UART_B_CONFIG_RIRDAEN_DISABLED_U32 \
188    (SI32_UART_B_CONFIG_RIRDAEN_DISABLED_VALUE << SI32_UART_B_CONFIG_RIRDAEN_SHIFT)
189 // The receiver operates in IrDA mode.
190 #define SI32_UART_B_CONFIG_RIRDAEN_ENABLED_VALUE  1
191 #define SI32_UART_B_CONFIG_RIRDAEN_ENABLED_U32 \
192    (SI32_UART_B_CONFIG_RIRDAEN_ENABLED_VALUE << SI32_UART_B_CONFIG_RIRDAEN_SHIFT)
193 
194 #define SI32_UART_B_CONFIG_RINVEN_MASK  0x00004000
195 #define SI32_UART_B_CONFIG_RINVEN_SHIFT  14
196 // Do not invert the RX pin signals (the RX idle state is high).
197 #define SI32_UART_B_CONFIG_RINVEN_DISABLED_VALUE  0
198 #define SI32_UART_B_CONFIG_RINVEN_DISABLED_U32 \
199    (SI32_UART_B_CONFIG_RINVEN_DISABLED_VALUE << SI32_UART_B_CONFIG_RINVEN_SHIFT)
200 // Invert the RX pin signals (the RX idle state is low).
201 #define SI32_UART_B_CONFIG_RINVEN_ENABLED_VALUE  1
202 #define SI32_UART_B_CONFIG_RINVEN_ENABLED_U32 \
203    (SI32_UART_B_CONFIG_RINVEN_ENABLED_VALUE << SI32_UART_B_CONFIG_RINVEN_SHIFT)
204 
205 #define SI32_UART_B_CONFIG_TSTRTEN_MASK  0x00010000
206 #define SI32_UART_B_CONFIG_TSTRTEN_SHIFT  16
207 // Do not generate a start bit during transmissions.
208 #define SI32_UART_B_CONFIG_TSTRTEN_DISABLED_VALUE  0
209 #define SI32_UART_B_CONFIG_TSTRTEN_DISABLED_U32 \
210    (SI32_UART_B_CONFIG_TSTRTEN_DISABLED_VALUE << SI32_UART_B_CONFIG_TSTRTEN_SHIFT)
211 // Generate a start bit during transmissions.
212 #define SI32_UART_B_CONFIG_TSTRTEN_ENABLED_VALUE  1
213 #define SI32_UART_B_CONFIG_TSTRTEN_ENABLED_U32 \
214    (SI32_UART_B_CONFIG_TSTRTEN_ENABLED_VALUE << SI32_UART_B_CONFIG_TSTRTEN_SHIFT)
215 
216 #define SI32_UART_B_CONFIG_TPAREN_MASK  0x00020000
217 #define SI32_UART_B_CONFIG_TPAREN_SHIFT  17
218 // Do not send a parity bit during transmissions.
219 #define SI32_UART_B_CONFIG_TPAREN_DISABLED_VALUE  0
220 #define SI32_UART_B_CONFIG_TPAREN_DISABLED_U32 \
221    (SI32_UART_B_CONFIG_TPAREN_DISABLED_VALUE << SI32_UART_B_CONFIG_TPAREN_SHIFT)
222 // Send a parity bit during transmissions.
223 #define SI32_UART_B_CONFIG_TPAREN_ENABLED_VALUE  1
224 #define SI32_UART_B_CONFIG_TPAREN_ENABLED_U32 \
225    (SI32_UART_B_CONFIG_TPAREN_ENABLED_VALUE << SI32_UART_B_CONFIG_TPAREN_SHIFT)
226 
227 #define SI32_UART_B_CONFIG_TSTPEN_MASK  0x00040000
228 #define SI32_UART_B_CONFIG_TSTPEN_SHIFT  18
229 // Do not send stop bits during transmissions.
230 #define SI32_UART_B_CONFIG_TSTPEN_DISABLED_VALUE  0
231 #define SI32_UART_B_CONFIG_TSTPEN_DISABLED_U32 \
232    (SI32_UART_B_CONFIG_TSTPEN_DISABLED_VALUE << SI32_UART_B_CONFIG_TSTPEN_SHIFT)
233 // Send stop bits during transmissions.
234 #define SI32_UART_B_CONFIG_TSTPEN_ENABLED_VALUE  1
235 #define SI32_UART_B_CONFIG_TSTPEN_ENABLED_U32 \
236    (SI32_UART_B_CONFIG_TSTPEN_ENABLED_VALUE << SI32_UART_B_CONFIG_TSTPEN_SHIFT)
237 
238 #define SI32_UART_B_CONFIG_TSTPMD_MASK  0x00180000
239 #define SI32_UART_B_CONFIG_TSTPMD_SHIFT  19
240 // 0.5 stop bit.
241 #define SI32_UART_B_CONFIG_TSTPMD_0P5_STOP_VALUE  0
242 #define SI32_UART_B_CONFIG_TSTPMD_0P5_STOP_U32 \
243    (SI32_UART_B_CONFIG_TSTPMD_0P5_STOP_VALUE << SI32_UART_B_CONFIG_TSTPMD_SHIFT)
244 // 1 stop bit.
245 #define SI32_UART_B_CONFIG_TSTPMD_1_STOP_VALUE  1
246 #define SI32_UART_B_CONFIG_TSTPMD_1_STOP_U32 \
247    (SI32_UART_B_CONFIG_TSTPMD_1_STOP_VALUE << SI32_UART_B_CONFIG_TSTPMD_SHIFT)
248 // 1.5 stop bits.
249 #define SI32_UART_B_CONFIG_TSTPMD_1P5_STOP_VALUE  2
250 #define SI32_UART_B_CONFIG_TSTPMD_1P5_STOP_U32 \
251    (SI32_UART_B_CONFIG_TSTPMD_1P5_STOP_VALUE << SI32_UART_B_CONFIG_TSTPMD_SHIFT)
252 // 2 stop bits.
253 #define SI32_UART_B_CONFIG_TSTPMD_2_STOP_VALUE  3
254 #define SI32_UART_B_CONFIG_TSTPMD_2_STOP_U32 \
255    (SI32_UART_B_CONFIG_TSTPMD_2_STOP_VALUE << SI32_UART_B_CONFIG_TSTPMD_SHIFT)
256 
257 #define SI32_UART_B_CONFIG_TPARMD_MASK  0x00600000
258 #define SI32_UART_B_CONFIG_TPARMD_SHIFT  21
259 // Odd Parity.
260 #define SI32_UART_B_CONFIG_TPARMD_ODD_VALUE  0
261 #define SI32_UART_B_CONFIG_TPARMD_ODD_U32 \
262    (SI32_UART_B_CONFIG_TPARMD_ODD_VALUE << SI32_UART_B_CONFIG_TPARMD_SHIFT)
263 // Even Parity.
264 #define SI32_UART_B_CONFIG_TPARMD_EVEN_VALUE  1
265 #define SI32_UART_B_CONFIG_TPARMD_EVEN_U32 \
266    (SI32_UART_B_CONFIG_TPARMD_EVEN_VALUE << SI32_UART_B_CONFIG_TPARMD_SHIFT)
267 // Set (Parity = 1).
268 #define SI32_UART_B_CONFIG_TPARMD_MARK_VALUE  2
269 #define SI32_UART_B_CONFIG_TPARMD_MARK_U32 \
270    (SI32_UART_B_CONFIG_TPARMD_MARK_VALUE << SI32_UART_B_CONFIG_TPARMD_SHIFT)
271 // Clear (Parity = 0).
272 #define SI32_UART_B_CONFIG_TPARMD_SPACE_VALUE  3
273 #define SI32_UART_B_CONFIG_TPARMD_SPACE_U32 \
274    (SI32_UART_B_CONFIG_TPARMD_SPACE_VALUE << SI32_UART_B_CONFIG_TPARMD_SHIFT)
275 
276 #define SI32_UART_B_CONFIG_TDATLN_MASK  0x07000000
277 #define SI32_UART_B_CONFIG_TDATLN_SHIFT  24
278 // 5 bits.
279 #define SI32_UART_B_CONFIG_TDATLN_5_BITS_VALUE  0
280 #define SI32_UART_B_CONFIG_TDATLN_5_BITS_U32 \
281    (SI32_UART_B_CONFIG_TDATLN_5_BITS_VALUE << SI32_UART_B_CONFIG_TDATLN_SHIFT)
282 // 6 bits.
283 #define SI32_UART_B_CONFIG_TDATLN_6_BITS_VALUE  1
284 #define SI32_UART_B_CONFIG_TDATLN_6_BITS_U32 \
285    (SI32_UART_B_CONFIG_TDATLN_6_BITS_VALUE << SI32_UART_B_CONFIG_TDATLN_SHIFT)
286 // 7 bits.
287 #define SI32_UART_B_CONFIG_TDATLN_7_BITS_VALUE  2
288 #define SI32_UART_B_CONFIG_TDATLN_7_BITS_U32 \
289    (SI32_UART_B_CONFIG_TDATLN_7_BITS_VALUE << SI32_UART_B_CONFIG_TDATLN_SHIFT)
290 // 8 bits.
291 #define SI32_UART_B_CONFIG_TDATLN_8_BITS_VALUE  3
292 #define SI32_UART_B_CONFIG_TDATLN_8_BITS_U32 \
293    (SI32_UART_B_CONFIG_TDATLN_8_BITS_VALUE << SI32_UART_B_CONFIG_TDATLN_SHIFT)
294 // 9 bits. The 9th bit is taken from the FIFO data (normal mode).
295 #define SI32_UART_B_CONFIG_TDATLN_9_BITS_FIFO_VALUE  4
296 #define SI32_UART_B_CONFIG_TDATLN_9_BITS_FIFO_U32 \
297    (SI32_UART_B_CONFIG_TDATLN_9_BITS_FIFO_VALUE << SI32_UART_B_CONFIG_TDATLN_SHIFT)
298 // 9 bits. The 9th bit is set by the value of TBIT (fixed mode).
299 #define SI32_UART_B_CONFIG_TDATLN_9_BITS_TBIT_VALUE  5
300 #define SI32_UART_B_CONFIG_TDATLN_9_BITS_TBIT_U32 \
301    (SI32_UART_B_CONFIG_TDATLN_9_BITS_TBIT_VALUE << SI32_UART_B_CONFIG_TDATLN_SHIFT)
302 
303 #define SI32_UART_B_CONFIG_TIRDAEN_MASK  0x20000000
304 #define SI32_UART_B_CONFIG_TIRDAEN_SHIFT  29
305 // Disable IrDA transmit mode.
306 #define SI32_UART_B_CONFIG_TIRDAEN_DISABLED_VALUE  0
307 #define SI32_UART_B_CONFIG_TIRDAEN_DISABLED_U32 \
308    (SI32_UART_B_CONFIG_TIRDAEN_DISABLED_VALUE << SI32_UART_B_CONFIG_TIRDAEN_SHIFT)
309 // Enable IrDA transmit mode.
310 #define SI32_UART_B_CONFIG_TIRDAEN_ENABLED_VALUE  1
311 #define SI32_UART_B_CONFIG_TIRDAEN_ENABLED_U32 \
312    (SI32_UART_B_CONFIG_TIRDAEN_ENABLED_VALUE << SI32_UART_B_CONFIG_TIRDAEN_SHIFT)
313 
314 #define SI32_UART_B_CONFIG_TINVEN_MASK  0x40000000
315 #define SI32_UART_B_CONFIG_TINVEN_SHIFT  30
316 // Do not invert the TX pin signals (the TX idle state is high).
317 #define SI32_UART_B_CONFIG_TINVEN_DISABLED_VALUE  0
318 #define SI32_UART_B_CONFIG_TINVEN_DISABLED_U32 \
319    (SI32_UART_B_CONFIG_TINVEN_DISABLED_VALUE << SI32_UART_B_CONFIG_TINVEN_SHIFT)
320 // Invert the TX pin signals (the TX idle state is low).
321 #define SI32_UART_B_CONFIG_TINVEN_ENABLED_VALUE  1
322 #define SI32_UART_B_CONFIG_TINVEN_ENABLED_U32 \
323    (SI32_UART_B_CONFIG_TINVEN_ENABLED_VALUE << SI32_UART_B_CONFIG_TINVEN_SHIFT)
324 
325 
326 
327 struct SI32_UART_B_MODE_Struct
328 {
329    union
330    {
331       struct
332       {
333                   uint32_t reserved0: 8;
334          // RTC Clock Mode
335          volatile uint32_t RTCCKMD: 1;
336          // RTC Baud Rate Mode
337          volatile uint32_t RTCBDMD: 1;
338          // Force Clock On
339          volatile uint32_t FORCECLK: 1;
340          // Clock Switch Busy Status
341          volatile uint32_t CLKBUSY: 1;
342          // Receive Automatic Clock Switch
343          volatile uint32_t RXCLKSW: 1;
344          // Transmit Automatic Clock Switch
345          volatile uint32_t TXCLKSW: 1;
346                   uint32_t reserved1: 2;
347          // UART Debug Mode
348          volatile uint32_t DBGMD: 1;
349                   uint32_t reserved2: 1;
350          // Loop Back Mode
351          volatile uint32_t LBMD: 2;
352                   uint32_t reserved3: 7;
353          // Duplex Mode
354          volatile uint32_t DUPLEXMD: 1;
355                   uint32_t reserved4: 2;
356          // Idle TX Tristate Enable
357          volatile uint32_t ITSEN: 1;
358                   uint32_t reserved5: 1;
359       };
360       volatile uint32_t U32;
361    };
362 };
363 
364 #define SI32_UART_B_MODE_RTCCKMD_MASK  0x00000100
365 #define SI32_UART_B_MODE_RTCCKMD_SHIFT  8
366 // UART clocked from the APB clock. The RBAUD and TBAUD controls will use the APB
367 // clock mode to determine the baudrate unless RTCBDMD = 1.
368 #define SI32_UART_B_MODE_RTCCKMD_APBCLK_VALUE  0
369 #define SI32_UART_B_MODE_RTCCKMD_APBCLK_U32 \
370    (SI32_UART_B_MODE_RTCCKMD_APBCLK_VALUE << SI32_UART_B_MODE_RTCCKMD_SHIFT)
371 // UART clocked from RTC0TCLK. The RBAUD and TBAUD controls will use the RTC0TCLK
372 // mode to determine the baudrate. Software should only set this bit to one when
373 // the UART is idle.
374 #define SI32_UART_B_MODE_RTCCKMD_RTC0TCLK_VALUE  1
375 #define SI32_UART_B_MODE_RTCCKMD_RTC0TCLK_U32 \
376    (SI32_UART_B_MODE_RTCCKMD_RTC0TCLK_VALUE << SI32_UART_B_MODE_RTCCKMD_SHIFT)
377 
378 #define SI32_UART_B_MODE_RTCBDMD_MASK  0x00000200
379 #define SI32_UART_B_MODE_RTCBDMD_SHIFT  9
380 // The RBAUD and TBAUD controls use the RTCCKMD setting to determine whether to use
381 // APB clock mode (RTCCKMD = 0) or the RTC0TCLK mode (RTCCKMD = 1).  Use this
382 // setting when APB clock != RTC0TCLK.
383 #define SI32_UART_B_MODE_RTCBDMD_DISABLED_VALUE  0
384 #define SI32_UART_B_MODE_RTCBDMD_DISABLED_U32 \
385    (SI32_UART_B_MODE_RTCBDMD_DISABLED_VALUE << SI32_UART_B_MODE_RTCBDMD_SHIFT)
386 // The RBAUD and TBAUD controls use RTC0TCLK mode. Use this setting when APB clock
387 // = RTC0TCLK and RTCCKMD = 0 to force the RBAUD and TBAUD controls into RTC0TCLK
388 // mode.
389 #define SI32_UART_B_MODE_RTCBDMD_ENABLED_VALUE  1
390 #define SI32_UART_B_MODE_RTCBDMD_ENABLED_U32 \
391    (SI32_UART_B_MODE_RTCBDMD_ENABLED_VALUE << SI32_UART_B_MODE_RTCBDMD_SHIFT)
392 
393 #define SI32_UART_B_MODE_FORCECLK_MASK  0x00000400
394 #define SI32_UART_B_MODE_FORCECLK_SHIFT  10
395 // UART clock is only on when necessary.
396 #define SI32_UART_B_MODE_FORCECLK_DISABLED_VALUE  0
397 #define SI32_UART_B_MODE_FORCECLK_DISABLED_U32 \
398    (SI32_UART_B_MODE_FORCECLK_DISABLED_VALUE << SI32_UART_B_MODE_FORCECLK_SHIFT)
399 // Force the UART clock to always be on.
400 #define SI32_UART_B_MODE_FORCECLK_ENABLED_VALUE  1
401 #define SI32_UART_B_MODE_FORCECLK_ENABLED_U32 \
402    (SI32_UART_B_MODE_FORCECLK_ENABLED_VALUE << SI32_UART_B_MODE_FORCECLK_SHIFT)
403 
404 #define SI32_UART_B_MODE_CLKBUSY_MASK  0x00000800
405 #define SI32_UART_B_MODE_CLKBUSY_SHIFT  11
406 // Clock switch completed.
407 #define SI32_UART_B_MODE_CLKBUSY_IDLE_VALUE  0
408 #define SI32_UART_B_MODE_CLKBUSY_IDLE_U32 \
409    (SI32_UART_B_MODE_CLKBUSY_IDLE_VALUE << SI32_UART_B_MODE_CLKBUSY_SHIFT)
410 // Clock switch in progress.
411 #define SI32_UART_B_MODE_CLKBUSY_BUSY_VALUE  1
412 #define SI32_UART_B_MODE_CLKBUSY_BUSY_U32 \
413    (SI32_UART_B_MODE_CLKBUSY_BUSY_VALUE << SI32_UART_B_MODE_CLKBUSY_SHIFT)
414 
415 #define SI32_UART_B_MODE_RXCLKSW_MASK  0x00001000
416 #define SI32_UART_B_MODE_RXCLKSW_SHIFT  12
417 // UART will always use the selected clock for receive operations.
418 #define SI32_UART_B_MODE_RXCLKSW_DISABLED_VALUE  0
419 #define SI32_UART_B_MODE_RXCLKSW_DISABLED_U32 \
420    (SI32_UART_B_MODE_RXCLKSW_DISABLED_VALUE << SI32_UART_B_MODE_RXCLKSW_SHIFT)
421 // UART will automatically switch from RTC0TCLK to the APB clock when a receive
422 // interrupt is pending.
423 #define SI32_UART_B_MODE_RXCLKSW_ENABLED_VALUE  1
424 #define SI32_UART_B_MODE_RXCLKSW_ENABLED_U32 \
425    (SI32_UART_B_MODE_RXCLKSW_ENABLED_VALUE << SI32_UART_B_MODE_RXCLKSW_SHIFT)
426 
427 #define SI32_UART_B_MODE_TXCLKSW_MASK  0x00002000
428 #define SI32_UART_B_MODE_TXCLKSW_SHIFT  13
429 // UART will always use the selected clock for transmit operations.
430 #define SI32_UART_B_MODE_TXCLKSW_DISABLED_VALUE  0
431 #define SI32_UART_B_MODE_TXCLKSW_DISABLED_U32 \
432    (SI32_UART_B_MODE_TXCLKSW_DISABLED_VALUE << SI32_UART_B_MODE_TXCLKSW_SHIFT)
433 // UART will automatically switch from RTC0TCLK to the APB clock when a transmit
434 // interrupt is pending.
435 #define SI32_UART_B_MODE_TXCLKSW_ENABLED_VALUE  1
436 #define SI32_UART_B_MODE_TXCLKSW_ENABLED_U32 \
437    (SI32_UART_B_MODE_TXCLKSW_ENABLED_VALUE << SI32_UART_B_MODE_TXCLKSW_SHIFT)
438 
439 #define SI32_UART_B_MODE_DBGMD_MASK  0x00010000
440 #define SI32_UART_B_MODE_DBGMD_SHIFT  16
441 // The UART module will continue to operate while the core is halted in debug mode.
442 #define SI32_UART_B_MODE_DBGMD_RUN_VALUE  0
443 #define SI32_UART_B_MODE_DBGMD_RUN_U32 \
444    (SI32_UART_B_MODE_DBGMD_RUN_VALUE << SI32_UART_B_MODE_DBGMD_SHIFT)
445 // A debug breakpoint will cause the UART module to halt. Any active transmissions
446 // and receptions will complete first.
447 #define SI32_UART_B_MODE_DBGMD_HALT_VALUE  1
448 #define SI32_UART_B_MODE_DBGMD_HALT_U32 \
449    (SI32_UART_B_MODE_DBGMD_HALT_VALUE << SI32_UART_B_MODE_DBGMD_SHIFT)
450 
451 #define SI32_UART_B_MODE_LBMD_MASK  0x000C0000
452 #define SI32_UART_B_MODE_LBMD_SHIFT  18
453 // Loop back is disabled and the TX and RX signals are connected to the
454 // corresponding external pins.
455 #define SI32_UART_B_MODE_LBMD_DISABLED_VALUE  0
456 #define SI32_UART_B_MODE_LBMD_DISABLED_U32 \
457    (SI32_UART_B_MODE_LBMD_DISABLED_VALUE << SI32_UART_B_MODE_LBMD_SHIFT)
458 // Receive loop back. The receiver input path is disconnected from the RX pin and
459 // internally connected to the transmitter. Data transmitted will be sent out on TX
460 // and also received by the device.
461 #define SI32_UART_B_MODE_LBMD_RXONLY_VALUE  1
462 #define SI32_UART_B_MODE_LBMD_RXONLY_U32 \
463    (SI32_UART_B_MODE_LBMD_RXONLY_VALUE << SI32_UART_B_MODE_LBMD_SHIFT)
464 // Transmit loop back. The transmitter output path is disconnected from the TX pin
465 // and the RX input pin is internally looped back out to the TX pin. Data received
466 // at RX will be received by the device and also sent directly back out on TX.
467 #define SI32_UART_B_MODE_LBMD_TXONLY_VALUE  2
468 #define SI32_UART_B_MODE_LBMD_TXONLY_U32 \
469    (SI32_UART_B_MODE_LBMD_TXONLY_VALUE << SI32_UART_B_MODE_LBMD_SHIFT)
470 // Full loop back. Internally, the transmitter output is routed back to the
471 // receiver input. Neither the transmitter nor receiver are connected to external
472 // device pins. The device pin RX is looped back to TX in a similar fashion. Data
473 // transmitted on TX will be sent directly back in on RX.
474 #define SI32_UART_B_MODE_LBMD_BOTH_VALUE  3
475 #define SI32_UART_B_MODE_LBMD_BOTH_U32 \
476    (SI32_UART_B_MODE_LBMD_BOTH_VALUE << SI32_UART_B_MODE_LBMD_SHIFT)
477 
478 #define SI32_UART_B_MODE_DUPLEXMD_MASK  0x08000000
479 #define SI32_UART_B_MODE_DUPLEXMD_SHIFT  27
480 // Full-duplex mode. The transmitter and receiver can operate simultaneously.
481 #define SI32_UART_B_MODE_DUPLEXMD_FULL_DUPLEX_VALUE  0
482 #define SI32_UART_B_MODE_DUPLEXMD_FULL_DUPLEX_U32 \
483    (SI32_UART_B_MODE_DUPLEXMD_FULL_DUPLEX_VALUE << SI32_UART_B_MODE_DUPLEXMD_SHIFT)
484 // Half-duplex mode. The transmitter automatically inhibits when the receiver is
485 // active and the receiver automatically inhibits when the transmitter is active.
486 #define SI32_UART_B_MODE_DUPLEXMD_HALF_DUPLEX_VALUE  1
487 #define SI32_UART_B_MODE_DUPLEXMD_HALF_DUPLEX_U32 \
488    (SI32_UART_B_MODE_DUPLEXMD_HALF_DUPLEX_VALUE << SI32_UART_B_MODE_DUPLEXMD_SHIFT)
489 
490 #define SI32_UART_B_MODE_ITSEN_MASK  0x40000000
491 #define SI32_UART_B_MODE_ITSEN_SHIFT  30
492 // The TX pin is always an output in this mode, even when idle.
493 #define SI32_UART_B_MODE_ITSEN_DISABLED_VALUE  0
494 #define SI32_UART_B_MODE_ITSEN_DISABLED_U32 \
495    (SI32_UART_B_MODE_ITSEN_DISABLED_VALUE << SI32_UART_B_MODE_ITSEN_SHIFT)
496 // The TX pin is tristated when idle.
497 #define SI32_UART_B_MODE_ITSEN_ENABLED_VALUE  1
498 #define SI32_UART_B_MODE_ITSEN_ENABLED_U32 \
499    (SI32_UART_B_MODE_ITSEN_ENABLED_VALUE << SI32_UART_B_MODE_ITSEN_SHIFT)
500 
501 
502 
503 struct SI32_UART_B_FLOWCN_Struct
504 {
505    union
506    {
507       struct
508       {
509                   uint32_t reserved0: 1;
510          // RX Pin Status
511          volatile uint32_t RX: 1;
512                   uint32_t reserved1: 10;
513          // TX Output Enable
514          volatile uint32_t TXOEN: 1;
515                   uint32_t reserved2: 4;
516          // TX State
517          volatile uint32_t TX: 1;
518                   uint32_t reserved3: 10;
519          // Transmit IrDA Pulse Width
520          volatile uint32_t TIRDAPW: 2;
521                   uint32_t reserved4: 2;
522       };
523       volatile uint32_t U32;
524    };
525 };
526 
527 #define SI32_UART_B_FLOWCN_RX_MASK  0x00000002
528 #define SI32_UART_B_FLOWCN_RX_SHIFT  1
529 // RX pin (after optional inversion) is low.
530 #define SI32_UART_B_FLOWCN_RX_LOW_VALUE  0
531 #define SI32_UART_B_FLOWCN_RX_LOW_U32 \
532    (SI32_UART_B_FLOWCN_RX_LOW_VALUE << SI32_UART_B_FLOWCN_RX_SHIFT)
533 // RX pin (after optional inversion) is high.
534 #define SI32_UART_B_FLOWCN_RX_HIGH_VALUE  1
535 #define SI32_UART_B_FLOWCN_RX_HIGH_U32 \
536    (SI32_UART_B_FLOWCN_RX_HIGH_VALUE << SI32_UART_B_FLOWCN_RX_SHIFT)
537 
538 #define SI32_UART_B_FLOWCN_TXOEN_MASK  0x00001000
539 #define SI32_UART_B_FLOWCN_TXOEN_SHIFT  12
540 // The pin assigned to TX is controlled by the direct port output value.
541 #define SI32_UART_B_FLOWCN_TXOEN_DISABLED_VALUE  0
542 #define SI32_UART_B_FLOWCN_TXOEN_DISABLED_U32 \
543    (SI32_UART_B_FLOWCN_TXOEN_DISABLED_VALUE << SI32_UART_B_FLOWCN_TXOEN_SHIFT)
544 // The pin assigned to TX is controlled by the UART.
545 #define SI32_UART_B_FLOWCN_TXOEN_ENABLED_VALUE  1
546 #define SI32_UART_B_FLOWCN_TXOEN_ENABLED_U32 \
547    (SI32_UART_B_FLOWCN_TXOEN_ENABLED_VALUE << SI32_UART_B_FLOWCN_TXOEN_SHIFT)
548 
549 #define SI32_UART_B_FLOWCN_TX_MASK  0x00020000
550 #define SI32_UART_B_FLOWCN_TX_SHIFT  17
551 // The TX pin (before optional inversion) is low.
552 #define SI32_UART_B_FLOWCN_TX_LOW_VALUE  0
553 #define SI32_UART_B_FLOWCN_TX_LOW_U32 \
554    (SI32_UART_B_FLOWCN_TX_LOW_VALUE << SI32_UART_B_FLOWCN_TX_SHIFT)
555 // The TX pin (before optional inversion) is high.
556 #define SI32_UART_B_FLOWCN_TX_HIGH_VALUE  1
557 #define SI32_UART_B_FLOWCN_TX_HIGH_U32 \
558    (SI32_UART_B_FLOWCN_TX_HIGH_VALUE << SI32_UART_B_FLOWCN_TX_SHIFT)
559 
560 #define SI32_UART_B_FLOWCN_TIRDAPW_MASK  0x30000000
561 #define SI32_UART_B_FLOWCN_TIRDAPW_SHIFT  28
562 // The IrDA pulse width is 1/16th of a bit period.
563 #define SI32_UART_B_FLOWCN_TIRDAPW_1_16TH_VALUE  0
564 #define SI32_UART_B_FLOWCN_TIRDAPW_1_16TH_U32 \
565    (SI32_UART_B_FLOWCN_TIRDAPW_1_16TH_VALUE << SI32_UART_B_FLOWCN_TIRDAPW_SHIFT)
566 // The IrDA pulse width is 1/8th of a bit period.
567 #define SI32_UART_B_FLOWCN_TIRDAPW_1_8TH_VALUE  1
568 #define SI32_UART_B_FLOWCN_TIRDAPW_1_8TH_U32 \
569    (SI32_UART_B_FLOWCN_TIRDAPW_1_8TH_VALUE << SI32_UART_B_FLOWCN_TIRDAPW_SHIFT)
570 // The IrDA pulse width is 3/16th of a bit period.
571 #define SI32_UART_B_FLOWCN_TIRDAPW_3_16TH_VALUE  2
572 #define SI32_UART_B_FLOWCN_TIRDAPW_3_16TH_U32 \
573    (SI32_UART_B_FLOWCN_TIRDAPW_3_16TH_VALUE << SI32_UART_B_FLOWCN_TIRDAPW_SHIFT)
574 // The IrDA pulse width is 1/4th of a bit period.
575 #define SI32_UART_B_FLOWCN_TIRDAPW_1_4TH_VALUE  3
576 #define SI32_UART_B_FLOWCN_TIRDAPW_1_4TH_U32 \
577    (SI32_UART_B_FLOWCN_TIRDAPW_1_4TH_VALUE << SI32_UART_B_FLOWCN_TIRDAPW_SHIFT)
578 
579 
580 
581 struct SI32_UART_B_CONTROL_Struct
582 {
583    union
584    {
585       struct
586       {
587          // Receive Frame Error Interrupt Flag
588          volatile uint32_t RFRMERI: 1;
589          // Receive Parity Error Interrupt Flag
590          volatile uint32_t RPARERI: 1;
591          // Receive Overrun Error Interrupt Flag
592          volatile uint32_t ROREI: 1;
593          // Receive Data Request Interrupt Flag
594          volatile uint32_t RDREQI: 1;
595                   uint32_t reserved0: 1;
596          // Receive Error Interrupt Enable
597          volatile uint32_t RERIEN: 1;
598          // Receive Data Request Interrupt Enable
599          volatile uint32_t RDREQIEN: 1;
600                   uint32_t reserved1: 1;
601          // Match Mode
602          volatile uint32_t MATMD: 2;
603          // Receiver Auto-Baud Enable
604          volatile uint32_t RABDEN: 1;
605          // Receiver Busy Flag
606          volatile uint32_t RBUSYF: 1;
607          // Last Receive Bit
608          volatile uint32_t RBIT: 1;
609          // Receiver One-Shot Enable
610          volatile uint32_t ROSEN: 1;
611          // Receiver Inhibit
612          volatile uint32_t RINH: 1;
613          // Receiver Enable
614          volatile uint32_t REN: 1;
615                   uint32_t reserved2: 2;
616          // Transmit Data Request Interrupt Flag
617          volatile uint32_t TDREQI: 1;
618          // Transmit Complete Interrupt Flag
619          volatile uint32_t TCPTI: 1;
620          // Transmit Complete Threshold
621          volatile uint32_t TCPTTH: 1;
622                   uint32_t reserved3: 1;
623          // Transmit Data Request Interrupt Enable
624          volatile uint32_t TDREQIEN: 1;
625          // Transmit Complete Interrupt Enable
626          volatile uint32_t TCPTIEN: 1;
627                   uint32_t reserved4: 3;
628          // Transmitter Busy Flag
629          volatile uint32_t TBUSYF: 1;
630          // Last Transmit Bit
631          volatile uint32_t TBIT: 1;
632                   uint32_t reserved5: 1;
633          // Transmit Inhibit
634          volatile uint32_t TINH: 1;
635          // Transmitter Enable
636          volatile uint32_t TEN: 1;
637       };
638       volatile uint32_t U32;
639    };
640 };
641 
642 #define SI32_UART_B_CONTROL_RFRMERI_MASK  0x00000001
643 #define SI32_UART_B_CONTROL_RFRMERI_SHIFT  0
644 // Read: A frame error has not occurred since RFRMERI was last cleared. Write:
645 // Clear the interrupt.
646 #define SI32_UART_B_CONTROL_RFRMERI_NOT_SET_VALUE  0
647 #define SI32_UART_B_CONTROL_RFRMERI_NOT_SET_U32 \
648    (SI32_UART_B_CONTROL_RFRMERI_NOT_SET_VALUE << SI32_UART_B_CONTROL_RFRMERI_SHIFT)
649 // Read: A frame error occurred. Write: Force a frame error interrupt.
650 #define SI32_UART_B_CONTROL_RFRMERI_SET_VALUE  1
651 #define SI32_UART_B_CONTROL_RFRMERI_SET_U32 \
652    (SI32_UART_B_CONTROL_RFRMERI_SET_VALUE << SI32_UART_B_CONTROL_RFRMERI_SHIFT)
653 
654 #define SI32_UART_B_CONTROL_RPARERI_MASK  0x00000002
655 #define SI32_UART_B_CONTROL_RPARERI_SHIFT  1
656 // Read: An invalid parity bit has not been received since RPARERI was last
657 // cleared. Write: Clear the interrupt.
658 #define SI32_UART_B_CONTROL_RPARERI_NOT_SET_VALUE  0
659 #define SI32_UART_B_CONTROL_RPARERI_NOT_SET_U32 \
660    (SI32_UART_B_CONTROL_RPARERI_NOT_SET_VALUE << SI32_UART_B_CONTROL_RPARERI_SHIFT)
661 // Read: An invalid parity bit has been received since RPARERI was last cleared.
662 // Write: Force a parity error interrupt.
663 #define SI32_UART_B_CONTROL_RPARERI_SET_VALUE  1
664 #define SI32_UART_B_CONTROL_RPARERI_SET_U32 \
665    (SI32_UART_B_CONTROL_RPARERI_SET_VALUE << SI32_UART_B_CONTROL_RPARERI_SHIFT)
666 
667 #define SI32_UART_B_CONTROL_ROREI_MASK  0x00000004
668 #define SI32_UART_B_CONTROL_ROREI_SHIFT  2
669 // Read: A receiver overrun has not occurred since ROREI was last cleared. Write:
670 // Clear the interrupt.
671 #define SI32_UART_B_CONTROL_ROREI_NOT_SET_VALUE  0
672 #define SI32_UART_B_CONTROL_ROREI_NOT_SET_U32 \
673    (SI32_UART_B_CONTROL_ROREI_NOT_SET_VALUE << SI32_UART_B_CONTROL_ROREI_SHIFT)
674 // Read: A receiver overrun occurred. Write: Force a receiver overrun interrupt.
675 #define SI32_UART_B_CONTROL_ROREI_SET_VALUE  1
676 #define SI32_UART_B_CONTROL_ROREI_SET_U32 \
677    (SI32_UART_B_CONTROL_ROREI_SET_VALUE << SI32_UART_B_CONTROL_ROREI_SHIFT)
678 
679 #define SI32_UART_B_CONTROL_RDREQI_MASK  0x00000008
680 #define SI32_UART_B_CONTROL_RDREQI_SHIFT  3
681 // Fewer than RFTH FIFO entries are filled with data.
682 #define SI32_UART_B_CONTROL_RDREQI_NOT_SET_VALUE  0
683 #define SI32_UART_B_CONTROL_RDREQI_NOT_SET_U32 \
684    (SI32_UART_B_CONTROL_RDREQI_NOT_SET_VALUE << SI32_UART_B_CONTROL_RDREQI_SHIFT)
685 // At least RFTH FIFO entries are filled with data.
686 #define SI32_UART_B_CONTROL_RDREQI_SET_VALUE  1
687 #define SI32_UART_B_CONTROL_RDREQI_SET_U32 \
688    (SI32_UART_B_CONTROL_RDREQI_SET_VALUE << SI32_UART_B_CONTROL_RDREQI_SHIFT)
689 
690 #define SI32_UART_B_CONTROL_RERIEN_MASK  0x00000020
691 #define SI32_UART_B_CONTROL_RERIEN_SHIFT  5
692 // Disable the receive error interrupt.
693 #define SI32_UART_B_CONTROL_RERIEN_DISABLED_VALUE  0
694 #define SI32_UART_B_CONTROL_RERIEN_DISABLED_U32 \
695    (SI32_UART_B_CONTROL_RERIEN_DISABLED_VALUE << SI32_UART_B_CONTROL_RERIEN_SHIFT)
696 // Enable the receive error interrupt. A receive interrupt is asserted when ROREI,
697 // RFRMERI, or RPARERI is set to 1.
698 #define SI32_UART_B_CONTROL_RERIEN_ENABLED_VALUE  1
699 #define SI32_UART_B_CONTROL_RERIEN_ENABLED_U32 \
700    (SI32_UART_B_CONTROL_RERIEN_ENABLED_VALUE << SI32_UART_B_CONTROL_RERIEN_SHIFT)
701 
702 #define SI32_UART_B_CONTROL_RDREQIEN_MASK  0x00000040
703 #define SI32_UART_B_CONTROL_RDREQIEN_SHIFT  6
704 // Disable the read data request interrupt.
705 #define SI32_UART_B_CONTROL_RDREQIEN_DISABLED_VALUE  0
706 #define SI32_UART_B_CONTROL_RDREQIEN_DISABLED_U32 \
707    (SI32_UART_B_CONTROL_RDREQIEN_DISABLED_VALUE << SI32_UART_B_CONTROL_RDREQIEN_SHIFT)
708 // Enable the read data request interrupt. A receive interrupt is generated when
709 // RDREQI is set to 1.
710 #define SI32_UART_B_CONTROL_RDREQIEN_ENABLED_VALUE  1
711 #define SI32_UART_B_CONTROL_RDREQIEN_ENABLED_U32 \
712    (SI32_UART_B_CONTROL_RDREQIEN_ENABLED_VALUE << SI32_UART_B_CONTROL_RDREQIEN_SHIFT)
713 
714 #define SI32_UART_B_CONTROL_MATMD_MASK  0x00000300
715 #define SI32_UART_B_CONTROL_MATMD_SHIFT  8
716 // Disable the match function.
717 #define SI32_UART_B_CONTROL_MATMD_OFF_VALUE  0
718 #define SI32_UART_B_CONTROL_MATMD_OFF_U32 \
719    (SI32_UART_B_CONTROL_MATMD_OFF_VALUE << SI32_UART_B_CONTROL_MATMD_SHIFT)
720 // (MCE) Data whose last data bit equals RBIT is accepted and stored.
721 #define SI32_UART_B_CONTROL_MATMD_MCE_VALUE  1
722 #define SI32_UART_B_CONTROL_MATMD_MCE_U32 \
723    (SI32_UART_B_CONTROL_MATMD_MCE_VALUE << SI32_UART_B_CONTROL_MATMD_SHIFT)
724 // (Frame) A framing error is asserted if the last received data bit matches RBIT.
725 #define SI32_UART_B_CONTROL_MATMD_FRAME_VALUE  2
726 #define SI32_UART_B_CONTROL_MATMD_FRAME_U32 \
727    (SI32_UART_B_CONTROL_MATMD_FRAME_VALUE << SI32_UART_B_CONTROL_MATMD_SHIFT)
728 // (Store) Store the last incoming data bit in RBIT. This mode can be used
729 // inconjunction with the RDATLN setting.
730 #define SI32_UART_B_CONTROL_MATMD_STORE_VALUE  3
731 #define SI32_UART_B_CONTROL_MATMD_STORE_U32 \
732    (SI32_UART_B_CONTROL_MATMD_STORE_VALUE << SI32_UART_B_CONTROL_MATMD_SHIFT)
733 
734 #define SI32_UART_B_CONTROL_RABDEN_MASK  0x00000400
735 #define SI32_UART_B_CONTROL_RABDEN_SHIFT  10
736 // Disable receiver auto-baud.
737 #define SI32_UART_B_CONTROL_RABDEN_DISABLED_VALUE  0
738 #define SI32_UART_B_CONTROL_RABDEN_DISABLED_U32 \
739    (SI32_UART_B_CONTROL_RABDEN_DISABLED_VALUE << SI32_UART_B_CONTROL_RABDEN_SHIFT)
740 // Enable receiver auto-baud.
741 #define SI32_UART_B_CONTROL_RABDEN_ENABLED_VALUE  1
742 #define SI32_UART_B_CONTROL_RABDEN_ENABLED_U32 \
743    (SI32_UART_B_CONTROL_RABDEN_ENABLED_VALUE << SI32_UART_B_CONTROL_RABDEN_SHIFT)
744 
745 #define SI32_UART_B_CONTROL_RBUSYF_MASK  0x00000800
746 #define SI32_UART_B_CONTROL_RBUSYF_SHIFT  11
747 // The UART receiver is idle.
748 #define SI32_UART_B_CONTROL_RBUSYF_NOT_SET_VALUE  0
749 #define SI32_UART_B_CONTROL_RBUSYF_NOT_SET_U32 \
750    (SI32_UART_B_CONTROL_RBUSYF_NOT_SET_VALUE << SI32_UART_B_CONTROL_RBUSYF_SHIFT)
751 // The UART receiver is receiving data.
752 #define SI32_UART_B_CONTROL_RBUSYF_SET_VALUE  1
753 #define SI32_UART_B_CONTROL_RBUSYF_SET_U32 \
754    (SI32_UART_B_CONTROL_RBUSYF_SET_VALUE << SI32_UART_B_CONTROL_RBUSYF_SHIFT)
755 
756 #define SI32_UART_B_CONTROL_RBIT_MASK  0x00001000
757 #define SI32_UART_B_CONTROL_RBIT_SHIFT  12
758 #define SI32_UART_B_CONTROL_RBIT_NOT_SET_VALUE  0
759 #define SI32_UART_B_CONTROL_RBIT_NOT_SET_U32 \
760    (SI32_UART_B_CONTROL_RBIT_NOT_SET_VALUE << SI32_UART_B_CONTROL_RBIT_SHIFT)
761 #define SI32_UART_B_CONTROL_RBIT_SET_VALUE  1
762 #define SI32_UART_B_CONTROL_RBIT_SET_U32 \
763    (SI32_UART_B_CONTROL_RBIT_SET_VALUE << SI32_UART_B_CONTROL_RBIT_SHIFT)
764 
765 #define SI32_UART_B_CONTROL_ROSEN_MASK  0x00002000
766 #define SI32_UART_B_CONTROL_ROSEN_SHIFT  13
767 // Disable one-shot receive mode.
768 #define SI32_UART_B_CONTROL_ROSEN_DISABLED_VALUE  0
769 #define SI32_UART_B_CONTROL_ROSEN_DISABLED_U32 \
770    (SI32_UART_B_CONTROL_ROSEN_DISABLED_VALUE << SI32_UART_B_CONTROL_ROSEN_SHIFT)
771 // Enable one-shot receive mode.
772 #define SI32_UART_B_CONTROL_ROSEN_ENABLED_VALUE  1
773 #define SI32_UART_B_CONTROL_ROSEN_ENABLED_U32 \
774    (SI32_UART_B_CONTROL_ROSEN_ENABLED_VALUE << SI32_UART_B_CONTROL_ROSEN_SHIFT)
775 
776 #define SI32_UART_B_CONTROL_RINH_MASK  0x00004000
777 #define SI32_UART_B_CONTROL_RINH_SHIFT  14
778 // The receiver operates normally.
779 #define SI32_UART_B_CONTROL_RINH_INACTIVE_VALUE  0
780 #define SI32_UART_B_CONTROL_RINH_INACTIVE_U32 \
781    (SI32_UART_B_CONTROL_RINH_INACTIVE_VALUE << SI32_UART_B_CONTROL_RINH_SHIFT)
782 // The receiver will complete any ongoing reception, but ignore all traffic after
783 // that.
784 #define SI32_UART_B_CONTROL_RINH_ACTIVE_VALUE  1
785 #define SI32_UART_B_CONTROL_RINH_ACTIVE_U32 \
786    (SI32_UART_B_CONTROL_RINH_ACTIVE_VALUE << SI32_UART_B_CONTROL_RINH_SHIFT)
787 
788 #define SI32_UART_B_CONTROL_REN_MASK  0x00008000
789 #define SI32_UART_B_CONTROL_REN_SHIFT  15
790 // Disable the receiver. The receiver can receive one data transaction only if
791 // ROSEN is set.
792 #define SI32_UART_B_CONTROL_REN_DISABLED_VALUE  0
793 #define SI32_UART_B_CONTROL_REN_DISABLED_U32 \
794    (SI32_UART_B_CONTROL_REN_DISABLED_VALUE << SI32_UART_B_CONTROL_REN_SHIFT)
795 // Enable the receiver.
796 #define SI32_UART_B_CONTROL_REN_ENABLED_VALUE  1
797 #define SI32_UART_B_CONTROL_REN_ENABLED_U32 \
798    (SI32_UART_B_CONTROL_REN_ENABLED_VALUE << SI32_UART_B_CONTROL_REN_SHIFT)
799 
800 #define SI32_UART_B_CONTROL_TDREQI_MASK  0x00040000
801 #define SI32_UART_B_CONTROL_TDREQI_SHIFT  18
802 // The transmitter is not requesting more FIFO data.
803 #define SI32_UART_B_CONTROL_TDREQI_NOT_SET_VALUE  0
804 #define SI32_UART_B_CONTROL_TDREQI_NOT_SET_U32 \
805    (SI32_UART_B_CONTROL_TDREQI_NOT_SET_VALUE << SI32_UART_B_CONTROL_TDREQI_SHIFT)
806 // The transmitter is requesting more FIFO data.
807 #define SI32_UART_B_CONTROL_TDREQI_SET_VALUE  1
808 #define SI32_UART_B_CONTROL_TDREQI_SET_U32 \
809    (SI32_UART_B_CONTROL_TDREQI_SET_VALUE << SI32_UART_B_CONTROL_TDREQI_SHIFT)
810 
811 #define SI32_UART_B_CONTROL_TCPTI_MASK  0x00080000
812 #define SI32_UART_B_CONTROL_TCPTI_SHIFT  19
813 // Read: A transmit has not completed since TCPTI was last cleared. Write: Clear
814 // the interrupt.
815 #define SI32_UART_B_CONTROL_TCPTI_NOT_SET_VALUE  0
816 #define SI32_UART_B_CONTROL_TCPTI_NOT_SET_U32 \
817    (SI32_UART_B_CONTROL_TCPTI_NOT_SET_VALUE << SI32_UART_B_CONTROL_TCPTI_SHIFT)
818 // Read: A byte was transmitted (TCCPTH = 0) or the last available byte was
819 // transmitted (TCPTTH = 1). Write: Force a transmit complete interrupt.
820 #define SI32_UART_B_CONTROL_TCPTI_SET_VALUE  1
821 #define SI32_UART_B_CONTROL_TCPTI_SET_U32 \
822    (SI32_UART_B_CONTROL_TCPTI_SET_VALUE << SI32_UART_B_CONTROL_TCPTI_SHIFT)
823 
824 #define SI32_UART_B_CONTROL_TCPTTH_MASK  0x00100000
825 #define SI32_UART_B_CONTROL_TCPTTH_SHIFT  20
826 // The TCPTI flag is set after each data transmission.
827 #define SI32_UART_B_CONTROL_TCPTTH_SET_ON_TX_VALUE  0
828 #define SI32_UART_B_CONTROL_TCPTTH_SET_ON_TX_U32 \
829    (SI32_UART_B_CONTROL_TCPTTH_SET_ON_TX_VALUE << SI32_UART_B_CONTROL_TCPTTH_SHIFT)
830 // The TCPTI flag is set after transmission of the last available data.
831 #define SI32_UART_B_CONTROL_TCPTTH_SET_ON_EMPTY_VALUE  1
832 #define SI32_UART_B_CONTROL_TCPTTH_SET_ON_EMPTY_U32 \
833    (SI32_UART_B_CONTROL_TCPTTH_SET_ON_EMPTY_VALUE << SI32_UART_B_CONTROL_TCPTTH_SHIFT)
834 
835 #define SI32_UART_B_CONTROL_TDREQIEN_MASK  0x00400000
836 #define SI32_UART_B_CONTROL_TDREQIEN_SHIFT  22
837 // Disable the transmit data request interrupt.
838 #define SI32_UART_B_CONTROL_TDREQIEN_DISABLED_VALUE  0
839 #define SI32_UART_B_CONTROL_TDREQIEN_DISABLED_U32 \
840    (SI32_UART_B_CONTROL_TDREQIEN_DISABLED_VALUE << SI32_UART_B_CONTROL_TDREQIEN_SHIFT)
841 // Enable the transmit data request interrupt. A transmit interrupt is asserted
842 // when TDREQI is set to 1.
843 #define SI32_UART_B_CONTROL_TDREQIEN_ENABLED_VALUE  1
844 #define SI32_UART_B_CONTROL_TDREQIEN_ENABLED_U32 \
845    (SI32_UART_B_CONTROL_TDREQIEN_ENABLED_VALUE << SI32_UART_B_CONTROL_TDREQIEN_SHIFT)
846 
847 #define SI32_UART_B_CONTROL_TCPTIEN_MASK  0x00800000
848 #define SI32_UART_B_CONTROL_TCPTIEN_SHIFT  23
849 // Disable the transmit complete interrupt.
850 #define SI32_UART_B_CONTROL_TCPTIEN_DISABLED_VALUE  0
851 #define SI32_UART_B_CONTROL_TCPTIEN_DISABLED_U32 \
852    (SI32_UART_B_CONTROL_TCPTIEN_DISABLED_VALUE << SI32_UART_B_CONTROL_TCPTIEN_SHIFT)
853 // Enable the transmit complete interrupt. A transmit interrupt is generated when
854 // TCPTI is set to 1.
855 #define SI32_UART_B_CONTROL_TCPTIEN_ENABLED_VALUE  1
856 #define SI32_UART_B_CONTROL_TCPTIEN_ENABLED_U32 \
857    (SI32_UART_B_CONTROL_TCPTIEN_ENABLED_VALUE << SI32_UART_B_CONTROL_TCPTIEN_SHIFT)
858 
859 #define SI32_UART_B_CONTROL_TBUSYF_MASK  0x08000000
860 #define SI32_UART_B_CONTROL_TBUSYF_SHIFT  27
861 // The UART transmitter is idle.
862 #define SI32_UART_B_CONTROL_TBUSYF_NOT_SET_VALUE  0
863 #define SI32_UART_B_CONTROL_TBUSYF_NOT_SET_U32 \
864    (SI32_UART_B_CONTROL_TBUSYF_NOT_SET_VALUE << SI32_UART_B_CONTROL_TBUSYF_SHIFT)
865 // The UART transmitter is active and transmitting.
866 #define SI32_UART_B_CONTROL_TBUSYF_SET_VALUE  1
867 #define SI32_UART_B_CONTROL_TBUSYF_SET_U32 \
868    (SI32_UART_B_CONTROL_TBUSYF_SET_VALUE << SI32_UART_B_CONTROL_TBUSYF_SHIFT)
869 
870 #define SI32_UART_B_CONTROL_TBIT_MASK  0x10000000
871 #define SI32_UART_B_CONTROL_TBIT_SHIFT  28
872 #define SI32_UART_B_CONTROL_TBIT_NOT_SET_VALUE  0
873 #define SI32_UART_B_CONTROL_TBIT_NOT_SET_U32 \
874    (SI32_UART_B_CONTROL_TBIT_NOT_SET_VALUE << SI32_UART_B_CONTROL_TBIT_SHIFT)
875 #define SI32_UART_B_CONTROL_TBIT_SET_VALUE  1
876 #define SI32_UART_B_CONTROL_TBIT_SET_U32 \
877    (SI32_UART_B_CONTROL_TBIT_SET_VALUE << SI32_UART_B_CONTROL_TBIT_SHIFT)
878 
879 #define SI32_UART_B_CONTROL_TINH_MASK  0x40000000
880 #define SI32_UART_B_CONTROL_TINH_SHIFT  30
881 // The transmitter operates normally.
882 #define SI32_UART_B_CONTROL_TINH_INACTIVE_VALUE  0
883 #define SI32_UART_B_CONTROL_TINH_INACTIVE_U32 \
884    (SI32_UART_B_CONTROL_TINH_INACTIVE_VALUE << SI32_UART_B_CONTROL_TINH_SHIFT)
885 // Transmissions are inhibited. The transmitter will stall after any current
886 // transmission is complete.
887 #define SI32_UART_B_CONTROL_TINH_ACTIVE_VALUE  1
888 #define SI32_UART_B_CONTROL_TINH_ACTIVE_U32 \
889    (SI32_UART_B_CONTROL_TINH_ACTIVE_VALUE << SI32_UART_B_CONTROL_TINH_SHIFT)
890 
891 #define SI32_UART_B_CONTROL_TEN_MASK  0x80000000
892 #define SI32_UART_B_CONTROL_TEN_SHIFT  31
893 // Disable the transmitter. When cleared, the transmitter immediately aborts any
894 // active transmission. Clearing this bit does not automatically flush the transmit
895 // FIFO.
896 #define SI32_UART_B_CONTROL_TEN_DISABLED_VALUE  0U
897 #define SI32_UART_B_CONTROL_TEN_DISABLED_U32 \
898    (SI32_UART_B_CONTROL_TEN_DISABLED_VALUE << SI32_UART_B_CONTROL_TEN_SHIFT)
899 // Enable the transmitter. The transmitter will initiate a transmission when data
900 // becomes available in the transmit FIFO.
901 #define SI32_UART_B_CONTROL_TEN_ENABLED_VALUE  1U
902 #define SI32_UART_B_CONTROL_TEN_ENABLED_U32 \
903    (SI32_UART_B_CONTROL_TEN_ENABLED_VALUE << SI32_UART_B_CONTROL_TEN_SHIFT)
904 
905 
906 
907 struct SI32_UART_B_IPDELAY_Struct
908 {
909    union
910    {
911       struct
912       {
913                   uint32_t reserved0: 16;
914          // Inter-Packet Delay
915          volatile uint8_t IPDELAY_BITS;
916                   uint32_t reserved1: 8;
917       };
918       volatile uint32_t U32;
919    };
920 };
921 
922 #define SI32_UART_B_IPDELAY_IPDELAY_MASK  0x00FF0000
923 #define SI32_UART_B_IPDELAY_IPDELAY_SHIFT  16
924 
925 
926 
927 struct SI32_UART_B_BAUDRATE_Struct
928 {
929    union
930    {
931       struct
932       {
933          // Receiver Baud Rate Control
934          volatile uint16_t RBAUD;
935          // Transmitter Baud Rate Control
936          volatile uint16_t TBAUD;
937       };
938       volatile uint32_t U32;
939    };
940 };
941 
942 #define SI32_UART_B_BAUDRATE_RBAUD_MASK  0x0000FFFF
943 #define SI32_UART_B_BAUDRATE_RBAUD_SHIFT  0
944 
945 #define SI32_UART_B_BAUDRATE_TBAUD_MASK  0xFFFF0000
946 #define SI32_UART_B_BAUDRATE_TBAUD_SHIFT  16
947 
948 
949 
950 struct SI32_UART_B_FIFOCN_Struct
951 {
952    union
953    {
954       struct
955       {
956          // Receive FIFO Count
957          volatile uint32_t RCNT: 3;
958                   uint32_t reserved0: 1;
959          // Receive FIFO Threshold
960          volatile uint32_t RFTH: 2;
961                   uint32_t reserved1: 2;
962          // Receive FIFO Flush
963          volatile uint32_t RFIFOFL: 1;
964          // Receive FIFO Error Interrupt Flag
965          volatile uint32_t RFERI: 1;
966          // Receive Shift Register Full Flag
967          volatile uint32_t RSRFULLF: 1;
968                   uint32_t reserved2: 5;
969          // Transmit FIFO Count
970          volatile uint32_t TCNT: 3;
971                   uint32_t reserved3: 1;
972          // Transmit FIFO Threshold
973          volatile uint32_t TFTH: 2;
974                   uint32_t reserved4: 2;
975          // Transmit FIFO Flush
976          volatile uint32_t TFIFOFL: 1;
977          // Transmit FIFO Error Interrupt Flag
978          volatile uint32_t TFERI: 1;
979          // Transmit Shift Register Full Flag
980          volatile uint32_t TSRFULLF: 1;
981                   uint32_t reserved5: 5;
982       };
983       volatile uint32_t U32;
984    };
985 };
986 
987 #define SI32_UART_B_FIFOCN_RCNT_MASK  0x00000007
988 #define SI32_UART_B_FIFOCN_RCNT_SHIFT  0
989 
990 #define SI32_UART_B_FIFOCN_RFTH_MASK  0x00000030
991 #define SI32_UART_B_FIFOCN_RFTH_SHIFT  4
992 // A read data request interrupt (RDREQI) is asserted when >= 1 FIFO entry is full.
993 #define SI32_UART_B_FIFOCN_RFTH_ONE_VALUE  0
994 #define SI32_UART_B_FIFOCN_RFTH_ONE_U32 \
995    (SI32_UART_B_FIFOCN_RFTH_ONE_VALUE << SI32_UART_B_FIFOCN_RFTH_SHIFT)
996 // A read data request interrupt (RDREQI) is asserted when >= 2 FIFO entries are
997 // full.
998 #define SI32_UART_B_FIFOCN_RFTH_TWO_VALUE  1
999 #define SI32_UART_B_FIFOCN_RFTH_TWO_U32 \
1000    (SI32_UART_B_FIFOCN_RFTH_TWO_VALUE << SI32_UART_B_FIFOCN_RFTH_SHIFT)
1001 // A read data request interrupt (RDREQI) is asserted when >= 3 FIFO entries are
1002 // full.
1003 #define SI32_UART_B_FIFOCN_RFTH_THREE_VALUE  2
1004 #define SI32_UART_B_FIFOCN_RFTH_THREE_U32 \
1005    (SI32_UART_B_FIFOCN_RFTH_THREE_VALUE << SI32_UART_B_FIFOCN_RFTH_SHIFT)
1006 // A read data request interrupt (RDREQI) is asserted when >= 4 FIFO entries are
1007 // full.
1008 #define SI32_UART_B_FIFOCN_RFTH_FOUR_VALUE  3
1009 #define SI32_UART_B_FIFOCN_RFTH_FOUR_U32 \
1010    (SI32_UART_B_FIFOCN_RFTH_FOUR_VALUE << SI32_UART_B_FIFOCN_RFTH_SHIFT)
1011 
1012 #define SI32_UART_B_FIFOCN_RFIFOFL_MASK  0x00000100
1013 #define SI32_UART_B_FIFOCN_RFIFOFL_SHIFT  8
1014 // Flush the contents of the receive FIFO and any data in the receive shift
1015 // register.
1016 #define SI32_UART_B_FIFOCN_RFIFOFL_SET_VALUE  1
1017 #define SI32_UART_B_FIFOCN_RFIFOFL_SET_U32 \
1018    (SI32_UART_B_FIFOCN_RFIFOFL_SET_VALUE << SI32_UART_B_FIFOCN_RFIFOFL_SHIFT)
1019 
1020 #define SI32_UART_B_FIFOCN_RFERI_MASK  0x00000200
1021 #define SI32_UART_B_FIFOCN_RFERI_SHIFT  9
1022 // A receive FIFO error has not occurred since RFERI was last cleared.
1023 #define SI32_UART_B_FIFOCN_RFERI_NOT_SET_VALUE  0
1024 #define SI32_UART_B_FIFOCN_RFERI_NOT_SET_U32 \
1025    (SI32_UART_B_FIFOCN_RFERI_NOT_SET_VALUE << SI32_UART_B_FIFOCN_RFERI_SHIFT)
1026 // A receive FIFO error occurred.
1027 #define SI32_UART_B_FIFOCN_RFERI_SET_VALUE  1
1028 #define SI32_UART_B_FIFOCN_RFERI_SET_U32 \
1029    (SI32_UART_B_FIFOCN_RFERI_SET_VALUE << SI32_UART_B_FIFOCN_RFERI_SHIFT)
1030 
1031 #define SI32_UART_B_FIFOCN_RSRFULLF_MASK  0x00000400
1032 #define SI32_UART_B_FIFOCN_RSRFULLF_SHIFT  10
1033 // The receive data shift register is not full.
1034 #define SI32_UART_B_FIFOCN_RSRFULLF_NOT_SET_VALUE  0
1035 #define SI32_UART_B_FIFOCN_RSRFULLF_NOT_SET_U32 \
1036    (SI32_UART_B_FIFOCN_RSRFULLF_NOT_SET_VALUE << SI32_UART_B_FIFOCN_RSRFULLF_SHIFT)
1037 // The receive data shift register is full.
1038 #define SI32_UART_B_FIFOCN_RSRFULLF_SET_VALUE  1
1039 #define SI32_UART_B_FIFOCN_RSRFULLF_SET_U32 \
1040    (SI32_UART_B_FIFOCN_RSRFULLF_SET_VALUE << SI32_UART_B_FIFOCN_RSRFULLF_SHIFT)
1041 
1042 #define SI32_UART_B_FIFOCN_TCNT_MASK  0x00070000
1043 #define SI32_UART_B_FIFOCN_TCNT_SHIFT  16
1044 
1045 #define SI32_UART_B_FIFOCN_TFTH_MASK  0x00300000
1046 #define SI32_UART_B_FIFOCN_TFTH_SHIFT  20
1047 // A transmit data request interrupt (TDREQI) is asserted when >= 1 FIFO entry is
1048 // empty.
1049 #define SI32_UART_B_FIFOCN_TFTH_ONE_VALUE  0
1050 #define SI32_UART_B_FIFOCN_TFTH_ONE_U32 \
1051    (SI32_UART_B_FIFOCN_TFTH_ONE_VALUE << SI32_UART_B_FIFOCN_TFTH_SHIFT)
1052 // A transmit data request interrupt (TDREQI) is asserted when >= 2 FIFO entries
1053 // are empty.
1054 #define SI32_UART_B_FIFOCN_TFTH_TWO_VALUE  1
1055 #define SI32_UART_B_FIFOCN_TFTH_TWO_U32 \
1056    (SI32_UART_B_FIFOCN_TFTH_TWO_VALUE << SI32_UART_B_FIFOCN_TFTH_SHIFT)
1057 // A transmit data request interrupt (TDREQI) is asserted when >= 3 FIFO entries
1058 // are empty.
1059 #define SI32_UART_B_FIFOCN_TFTH_THREE_VALUE  2
1060 #define SI32_UART_B_FIFOCN_TFTH_THREE_U32 \
1061    (SI32_UART_B_FIFOCN_TFTH_THREE_VALUE << SI32_UART_B_FIFOCN_TFTH_SHIFT)
1062 // A transmit data request interrupt (TDREQI) is asserted when >= 4 FIFO entries
1063 // are empty.
1064 #define SI32_UART_B_FIFOCN_TFTH_FOUR_VALUE  3
1065 #define SI32_UART_B_FIFOCN_TFTH_FOUR_U32 \
1066    (SI32_UART_B_FIFOCN_TFTH_FOUR_VALUE << SI32_UART_B_FIFOCN_TFTH_SHIFT)
1067 
1068 #define SI32_UART_B_FIFOCN_TFIFOFL_MASK  0x01000000
1069 #define SI32_UART_B_FIFOCN_TFIFOFL_SHIFT  24
1070 // Flush the contents of the transmit FIFO. If data is pending in the transmit
1071 // shift register but a transmit has not begun, the shift register is also flushed.
1072 #define SI32_UART_B_FIFOCN_TFIFOFL_SET_VALUE  1
1073 #define SI32_UART_B_FIFOCN_TFIFOFL_SET_U32 \
1074    (SI32_UART_B_FIFOCN_TFIFOFL_SET_VALUE << SI32_UART_B_FIFOCN_TFIFOFL_SHIFT)
1075 
1076 #define SI32_UART_B_FIFOCN_TFERI_MASK  0x02000000
1077 #define SI32_UART_B_FIFOCN_TFERI_SHIFT  25
1078 // A transmit FIFO error has not occurred since TFERI was last cleared.
1079 #define SI32_UART_B_FIFOCN_TFERI_NOT_SET_VALUE  0
1080 #define SI32_UART_B_FIFOCN_TFERI_NOT_SET_U32 \
1081    (SI32_UART_B_FIFOCN_TFERI_NOT_SET_VALUE << SI32_UART_B_FIFOCN_TFERI_SHIFT)
1082 // A transmit FIFO error occurred.
1083 #define SI32_UART_B_FIFOCN_TFERI_SET_VALUE  1
1084 #define SI32_UART_B_FIFOCN_TFERI_SET_U32 \
1085    (SI32_UART_B_FIFOCN_TFERI_SET_VALUE << SI32_UART_B_FIFOCN_TFERI_SHIFT)
1086 
1087 #define SI32_UART_B_FIFOCN_TSRFULLF_MASK  0x04000000
1088 #define SI32_UART_B_FIFOCN_TSRFULLF_SHIFT  26
1089 // The transmit shift register is not full.
1090 #define SI32_UART_B_FIFOCN_TSRFULLF_NOT_SET_VALUE  0
1091 #define SI32_UART_B_FIFOCN_TSRFULLF_NOT_SET_U32 \
1092    (SI32_UART_B_FIFOCN_TSRFULLF_NOT_SET_VALUE << SI32_UART_B_FIFOCN_TSRFULLF_SHIFT)
1093 // The transmit shift register is full.
1094 #define SI32_UART_B_FIFOCN_TSRFULLF_SET_VALUE  1
1095 #define SI32_UART_B_FIFOCN_TSRFULLF_SET_U32 \
1096    (SI32_UART_B_FIFOCN_TSRFULLF_SET_VALUE << SI32_UART_B_FIFOCN_TSRFULLF_SHIFT)
1097 
1098 
1099 
1100 struct SI32_UART_B_DATA_Struct
1101 {
1102    union
1103    {
1104       // This is a FIFO register
1105       volatile uint8_t  U8;
1106       volatile uint16_t U16;
1107       volatile uint32_t U32;
1108    };
1109 };
1110 
1111 #define SI32_UART_B_DATA_DATA_MASK  0xFFFFFFFF
1112 #define SI32_UART_B_DATA_DATA_SHIFT  0
1113 
1114 
1115 
1116 struct SI32_UART_B_CLKDIV_Struct
1117 {
1118    union
1119    {
1120       struct
1121       {
1122          // Clock Divider
1123          volatile uint32_t CLKDIV_BITS: 2;
1124                   uint32_t reserved0: 30;
1125       };
1126       volatile uint32_t U32;
1127    };
1128 };
1129 
1130 #define SI32_UART_B_CLKDIV_CLKDIV_MASK  0x00000003
1131 #define SI32_UART_B_CLKDIV_CLKDIV_SHIFT  0
1132 // Divide by 1.
1133 #define SI32_UART_B_CLKDIV_CLKDIV_DIV1_VALUE  0
1134 #define SI32_UART_B_CLKDIV_CLKDIV_DIV1_U32 \
1135    (SI32_UART_B_CLKDIV_CLKDIV_DIV1_VALUE << SI32_UART_B_CLKDIV_CLKDIV_SHIFT)
1136 // Divide by 2.
1137 #define SI32_UART_B_CLKDIV_CLKDIV_DIV2_VALUE  1
1138 #define SI32_UART_B_CLKDIV_CLKDIV_DIV2_U32 \
1139    (SI32_UART_B_CLKDIV_CLKDIV_DIV2_VALUE << SI32_UART_B_CLKDIV_CLKDIV_SHIFT)
1140 // Divide by 4.
1141 #define SI32_UART_B_CLKDIV_CLKDIV_DIV4_VALUE  2
1142 #define SI32_UART_B_CLKDIV_CLKDIV_DIV4_U32 \
1143    (SI32_UART_B_CLKDIV_CLKDIV_DIV4_VALUE << SI32_UART_B_CLKDIV_CLKDIV_SHIFT)
1144 
1145 
1146 
1147 typedef struct SI32_UART_B_Struct
1148 {
1149    struct SI32_UART_B_CONFIG_Struct                CONFIG         ; // Base Address + 0x0
1150    volatile uint32_t                               CONFIG_SET;
1151    volatile uint32_t                               CONFIG_CLR;
1152    uint32_t                                        reserved0;
1153    struct SI32_UART_B_MODE_Struct                  MODE           ; // Base Address + 0x10
1154    volatile uint32_t                               MODE_SET;
1155    volatile uint32_t                               MODE_CLR;
1156    uint32_t                                        reserved1;
1157    struct SI32_UART_B_FLOWCN_Struct                FLOWCN         ; // Base Address + 0x20
1158    volatile uint32_t                               FLOWCN_SET;
1159    volatile uint32_t                               FLOWCN_CLR;
1160    uint32_t                                        reserved2;
1161    struct SI32_UART_B_CONTROL_Struct               CONTROL        ; // Base Address + 0x30
1162    volatile uint32_t                               CONTROL_SET;
1163    volatile uint32_t                               CONTROL_CLR;
1164    uint32_t                                        reserved3;
1165    struct SI32_UART_B_IPDELAY_Struct               IPDELAY        ; // Base Address + 0x40
1166    uint32_t                                        reserved4;
1167    uint32_t                                        reserved5;
1168    uint32_t                                        reserved6;
1169    struct SI32_UART_B_BAUDRATE_Struct              BAUDRATE       ; // Base Address + 0x50
1170    uint32_t                                        reserved7;
1171    uint32_t                                        reserved8;
1172    uint32_t                                        reserved9;
1173    struct SI32_UART_B_FIFOCN_Struct                FIFOCN         ; // Base Address + 0x60
1174    volatile uint32_t                               FIFOCN_SET;
1175    volatile uint32_t                               FIFOCN_CLR;
1176    uint32_t                                        reserved10;
1177    struct SI32_UART_B_DATA_Struct                  DATA           ; // Base Address + 0x70
1178    uint32_t                                        reserved11;
1179    uint32_t                                        reserved12;
1180    uint32_t                                        reserved13;
1181    struct SI32_UART_B_CLKDIV_Struct                CLKDIV         ; // Base Address + 0x80
1182    uint32_t                                        reserved14;
1183    uint32_t                                        reserved15;
1184    uint32_t                                        reserved16;
1185 } SI32_UART_B_Type;
1186 
1187 #ifdef __cplusplus
1188 }
1189 #endif
1190 
1191 #endif // __SI32_UART_B_REGISTERS_H__
1192 
1193 //-eof--------------------------------------------------------------------------
1194 
1195