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.62
24 // Version: 1
25 
26 #ifndef __SI32_ACCTR_A_REGISTERS_H__
27 #define __SI32_ACCTR_A_REGISTERS_H__
28 
29 #include <stdint.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 struct SI32_ACCTR_A_CONFIG_Struct
36 {
37    union
38    {
39       struct
40       {
41          // Write Update Status Flag
42          volatile uint32_t UPDSTSF: 1;
43                   uint32_t reserved0: 4;
44          // Debug Signal Select
45          volatile uint32_t DBGSEL: 3;
46                   uint32_t reserved1: 16;
47          // Flutter Quadrature-to-Dual Switch Enable
48          volatile uint32_t FLQDEN: 1;
49          // Flutter Stop Enable
50          volatile uint32_t FLSTPEN: 1;
51                   uint32_t reserved2: 3;
52          // Topology Mode
53          volatile uint32_t TOPMD: 1;
54          // Pulse Counter Mode
55          volatile uint32_t PCMD: 2;
56       };
57       volatile uint32_t U32;
58    };
59 };
60 
61 #define SI32_ACCTR_A_CONFIG_UPDSTSF_MASK  0x00000001
62 #define SI32_ACCTR_A_CONFIG_UPDSTSF_SHIFT  0
63 // An internal pulse counter register update is not in progress.
64 #define SI32_ACCTR_A_CONFIG_UPDSTSF_NOT_SET_VALUE  0
65 #define SI32_ACCTR_A_CONFIG_UPDSTSF_NOT_SET_U32 \
66    (SI32_ACCTR_A_CONFIG_UPDSTSF_NOT_SET_VALUE << SI32_ACCTR_A_CONFIG_UPDSTSF_SHIFT)
67 // An internal pulse counter register update is in progress.
68 #define SI32_ACCTR_A_CONFIG_UPDSTSF_SET_VALUE  1
69 #define SI32_ACCTR_A_CONFIG_UPDSTSF_SET_U32 \
70    (SI32_ACCTR_A_CONFIG_UPDSTSF_SET_VALUE << SI32_ACCTR_A_CONFIG_UPDSTSF_SHIFT)
71 
72 #define SI32_ACCTR_A_CONFIG_DBGSEL_MASK  0x000000E0
73 #define SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT  5
74 // No debug signals output.
75 #define SI32_ACCTR_A_CONFIG_DBGSEL_NONE_VALUE  0
76 #define SI32_ACCTR_A_CONFIG_DBGSEL_NONE_U32 \
77    (SI32_ACCTR_A_CONFIG_DBGSEL_NONE_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT)
78 // (LC Mode) DBG0 = CMP0OUT,  DBG1 = CMP1OUT.
79 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_LCC1_VALUE  1
80 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_LCC1_U32 \
81    (SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_LCC1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT)
82 // (LC Mode) DBG0 = CMP0OUT,  DBG1 = INTEG0.
83 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_INT0_VALUE  2
84 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_INT0_U32 \
85    (SI32_ACCTR_A_CONFIG_DBGSEL_LCC0_INT0_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT)
86 // (LC Mode) DBG0 = CMP1OUT,  DBG1 = INTEG1.
87 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC1_INT1_VALUE  3
88 #define SI32_ACCTR_A_CONFIG_DBGSEL_LCC1_INT1_U32 \
89    (SI32_ACCTR_A_CONFIG_DBGSEL_LCC1_INT1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT)
90 // (Any Mode) DBG0 = INTEG0  DBG1 = INTEG1.
91 #define SI32_ACCTR_A_CONFIG_DBGSEL_INT0_INT1_VALUE  4
92 #define SI32_ACCTR_A_CONFIG_DBGSEL_INT0_INT1_U32 \
93    (SI32_ACCTR_A_CONFIG_DBGSEL_INT0_INT1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT)
94 // (Switch Mode) DBG0 = CMP0OUT,  DBG1 = CMP1OUT.
95 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_CMP1_VALUE  5
96 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_CMP1_U32 \
97    (SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_CMP1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT)
98 // (Switch Mode) DBG0 = CMP0OUT,  DBG1 = INTEG0.
99 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_INT0_VALUE  6
100 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_INT0_U32 \
101    (SI32_ACCTR_A_CONFIG_DBGSEL_CMP0_INT0_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT)
102 // (Switch Mode) DBG0= CMP1OUT,  DBG1 = INTEG1.
103 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP1_INT1_VALUE  7
104 #define SI32_ACCTR_A_CONFIG_DBGSEL_CMP1_INT1_U32 \
105    (SI32_ACCTR_A_CONFIG_DBGSEL_CMP1_INT1_VALUE << SI32_ACCTR_A_CONFIG_DBGSEL_SHIFT)
106 
107 #define SI32_ACCTR_A_CONFIG_FLQDEN_MASK  0x01000000
108 #define SI32_ACCTR_A_CONFIG_FLQDEN_SHIFT  24
109 // The pulse counter remains in quadrature mode during a flutter event.
110 #define SI32_ACCTR_A_CONFIG_FLQDEN_DISABLED_VALUE  0
111 #define SI32_ACCTR_A_CONFIG_FLQDEN_DISABLED_U32 \
112    (SI32_ACCTR_A_CONFIG_FLQDEN_DISABLED_VALUE << SI32_ACCTR_A_CONFIG_FLQDEN_SHIFT)
113 // The pulse counter switches from quadrature mode to dual mode during a flutter
114 // event.
115 #define SI32_ACCTR_A_CONFIG_FLQDEN_ENABLED_VALUE  1
116 #define SI32_ACCTR_A_CONFIG_FLQDEN_ENABLED_U32 \
117    (SI32_ACCTR_A_CONFIG_FLQDEN_ENABLED_VALUE << SI32_ACCTR_A_CONFIG_FLQDEN_SHIFT)
118 
119 #define SI32_ACCTR_A_CONFIG_FLSTPEN_MASK  0x02000000
120 #define SI32_ACCTR_A_CONFIG_FLSTPEN_SHIFT  25
121 // The pulse counter continues operating during a flutter event.
122 #define SI32_ACCTR_A_CONFIG_FLSTPEN_DISABLED_VALUE  0
123 #define SI32_ACCTR_A_CONFIG_FLSTPEN_DISABLED_U32 \
124    (SI32_ACCTR_A_CONFIG_FLSTPEN_DISABLED_VALUE << SI32_ACCTR_A_CONFIG_FLSTPEN_SHIFT)
125 // The 24-bit counters stop counting during a flutter event.
126 #define SI32_ACCTR_A_CONFIG_FLSTPEN_ENABLED_VALUE  1
127 #define SI32_ACCTR_A_CONFIG_FLSTPEN_ENABLED_U32 \
128    (SI32_ACCTR_A_CONFIG_FLSTPEN_ENABLED_VALUE << SI32_ACCTR_A_CONFIG_FLSTPEN_SHIFT)
129 
130 #define SI32_ACCTR_A_CONFIG_TOPMD_MASK  0x20000000
131 #define SI32_ACCTR_A_CONFIG_TOPMD_SHIFT  29
132 // Select the switch closure topology.
133 #define SI32_ACCTR_A_CONFIG_TOPMD_SWITCH_VALUE  0
134 #define SI32_ACCTR_A_CONFIG_TOPMD_SWITCH_U32 \
135    (SI32_ACCTR_A_CONFIG_TOPMD_SWITCH_VALUE << SI32_ACCTR_A_CONFIG_TOPMD_SHIFT)
136 // Select the LC resonant topology.
137 #define SI32_ACCTR_A_CONFIG_TOPMD_LC_VALUE  1
138 #define SI32_ACCTR_A_CONFIG_TOPMD_LC_U32 \
139    (SI32_ACCTR_A_CONFIG_TOPMD_LC_VALUE << SI32_ACCTR_A_CONFIG_TOPMD_SHIFT)
140 
141 #define SI32_ACCTR_A_CONFIG_PCMD_MASK  0xC0000000
142 #define SI32_ACCTR_A_CONFIG_PCMD_SHIFT  30
143 // Disable the pulse counter.
144 #define SI32_ACCTR_A_CONFIG_PCMD_DISABLED_VALUE  0U
145 #define SI32_ACCTR_A_CONFIG_PCMD_DISABLED_U32 \
146    (SI32_ACCTR_A_CONFIG_PCMD_DISABLED_VALUE << SI32_ACCTR_A_CONFIG_PCMD_SHIFT)
147 // Select single channel mode.
148 #define SI32_ACCTR_A_CONFIG_PCMD_SINGLE_VALUE  1U
149 #define SI32_ACCTR_A_CONFIG_PCMD_SINGLE_U32 \
150    (SI32_ACCTR_A_CONFIG_PCMD_SINGLE_VALUE << SI32_ACCTR_A_CONFIG_PCMD_SHIFT)
151 // Select dual channel mode.
152 #define SI32_ACCTR_A_CONFIG_PCMD_DUAL_VALUE  2U
153 #define SI32_ACCTR_A_CONFIG_PCMD_DUAL_U32 \
154    (SI32_ACCTR_A_CONFIG_PCMD_DUAL_VALUE << SI32_ACCTR_A_CONFIG_PCMD_SHIFT)
155 // Select quadrature mode.
156 #define SI32_ACCTR_A_CONFIG_PCMD_QUADRATURE_VALUE  3U
157 #define SI32_ACCTR_A_CONFIG_PCMD_QUADRATURE_U32 \
158    (SI32_ACCTR_A_CONFIG_PCMD_QUADRATURE_VALUE << SI32_ACCTR_A_CONFIG_PCMD_SHIFT)
159 
160 
161 
162 struct SI32_ACCTR_A_CONTROL_Struct
163 {
164    union
165    {
166       struct
167       {
168                   uint32_t reserved0: 15;
169          // Comparator Low Threshold
170          volatile uint32_t CMPLTH: 2;
171          // Comparator High Threshold
172          volatile uint32_t CMPHTH: 2;
173          // Automatic Calibration Mode
174          volatile uint32_t CALMD: 1;
175          // Automatic Calibration Pull-up Mode
176          volatile uint32_t CALPUMD: 2;
177          // Force Continuous Pull-up Enable
178          volatile uint32_t FPUPEN: 1;
179          // Force Ground Input Enable
180          volatile uint32_t FPDNEN: 1;
181          // Pull-up Value
182          volatile uint32_t PUVAL: 5;
183          // Automatic Calibration Input Select
184          volatile uint32_t CALSEL: 1;
185          // Calibration Result Flag
186          volatile uint32_t CALRF: 1;
187          // Calibration Busy Flag
188          volatile uint32_t CALBUSYF: 1;
189       };
190       volatile uint32_t U32;
191    };
192 };
193 
194 #define SI32_ACCTR_A_CONTROL_CMPLTH_MASK  0x00018000
195 #define SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT  15
196 // Set the digital comparator low threshold to 32% of VIO.
197 #define SI32_ACCTR_A_CONTROL_CMPLTH_32_PERCENT_VALUE  0
198 #define SI32_ACCTR_A_CONTROL_CMPLTH_32_PERCENT_U32 \
199    (SI32_ACCTR_A_CONTROL_CMPLTH_32_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT)
200 // Set the digital comparator low threshold to 36% of VIO.
201 #define SI32_ACCTR_A_CONTROL_CMPLTH_36_PERCENT_VALUE  1
202 #define SI32_ACCTR_A_CONTROL_CMPLTH_36_PERCENT_U32 \
203    (SI32_ACCTR_A_CONTROL_CMPLTH_36_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT)
204 // Set the digital comparator low threshold to 40% of VIO.
205 #define SI32_ACCTR_A_CONTROL_CMPLTH_40_PERCENT_VALUE  2
206 #define SI32_ACCTR_A_CONTROL_CMPLTH_40_PERCENT_U32 \
207    (SI32_ACCTR_A_CONTROL_CMPLTH_40_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT)
208 // Set the digital comparator low threshold to 44% of VIO.
209 #define SI32_ACCTR_A_CONTROL_CMPLTH_44_PERCENT_VALUE  3
210 #define SI32_ACCTR_A_CONTROL_CMPLTH_44_PERCENT_U32 \
211    (SI32_ACCTR_A_CONTROL_CMPLTH_44_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPLTH_SHIFT)
212 
213 #define SI32_ACCTR_A_CONTROL_CMPHTH_MASK  0x00060000
214 #define SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT  17
215 // Set the digital comparator high threshold to 48% of VIO.
216 #define SI32_ACCTR_A_CONTROL_CMPHTH_48_PERCENT_VALUE  0
217 #define SI32_ACCTR_A_CONTROL_CMPHTH_48_PERCENT_U32 \
218    (SI32_ACCTR_A_CONTROL_CMPHTH_48_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT)
219 // Set the digital comparator high threshold to 52% of VIO.
220 #define SI32_ACCTR_A_CONTROL_CMPHTH_52_PERCENT_VALUE  1
221 #define SI32_ACCTR_A_CONTROL_CMPHTH_52_PERCENT_U32 \
222    (SI32_ACCTR_A_CONTROL_CMPHTH_52_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT)
223 // Set the digital comparator high threshold to 56% of VIO.
224 #define SI32_ACCTR_A_CONTROL_CMPHTH_56_PERCENT_VALUE  2
225 #define SI32_ACCTR_A_CONTROL_CMPHTH_56_PERCENT_U32 \
226    (SI32_ACCTR_A_CONTROL_CMPHTH_56_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT)
227 // Set the digital comparator high threshold to 60% of VIO.
228 #define SI32_ACCTR_A_CONTROL_CMPHTH_60_PERCENT_VALUE  3
229 #define SI32_ACCTR_A_CONTROL_CMPHTH_60_PERCENT_U32 \
230    (SI32_ACCTR_A_CONTROL_CMPHTH_60_PERCENT_VALUE << SI32_ACCTR_A_CONTROL_CMPHTH_SHIFT)
231 
232 #define SI32_ACCTR_A_CONTROL_CALMD_MASK  0x00080000
233 #define SI32_ACCTR_A_CONTROL_CALMD_SHIFT  19
234 // Continue to calibrate until a passing condition occurs.
235 #define SI32_ACCTR_A_CONTROL_CALMD_UNTIL_PASS_VALUE  0
236 #define SI32_ACCTR_A_CONTROL_CALMD_UNTIL_PASS_U32 \
237    (SI32_ACCTR_A_CONTROL_CALMD_UNTIL_PASS_VALUE << SI32_ACCTR_A_CONTROL_CALMD_SHIFT)
238 // Continue to calibrate until a failing condition occurs.
239 #define SI32_ACCTR_A_CONTROL_CALMD_UNTIL_FAIL_VALUE  1
240 #define SI32_ACCTR_A_CONTROL_CALMD_UNTIL_FAIL_U32 \
241    (SI32_ACCTR_A_CONTROL_CALMD_UNTIL_FAIL_VALUE << SI32_ACCTR_A_CONTROL_CALMD_SHIFT)
242 
243 #define SI32_ACCTR_A_CONTROL_CALPUMD_MASK  0x00300000
244 #define SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT  20
245 // Use full pull-up mode.
246 #define SI32_ACCTR_A_CONTROL_CALPUMD_FULL_VALUE  0
247 #define SI32_ACCTR_A_CONTROL_CALPUMD_FULL_U32 \
248    (SI32_ACCTR_A_CONTROL_CALPUMD_FULL_VALUE << SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT)
249 // Use small pull-up mode.
250 #define SI32_ACCTR_A_CONTROL_CALPUMD_SMALL_VALUE  1
251 #define SI32_ACCTR_A_CONTROL_CALPUMD_SMALL_U32 \
252    (SI32_ACCTR_A_CONTROL_CALPUMD_SMALL_VALUE << SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT)
253 // Use medium pull-up mode.
254 #define SI32_ACCTR_A_CONTROL_CALPUMD_MEDIUM_VALUE  2
255 #define SI32_ACCTR_A_CONTROL_CALPUMD_MEDIUM_U32 \
256    (SI32_ACCTR_A_CONTROL_CALPUMD_MEDIUM_VALUE << SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT)
257 // Use large pull-up mode.
258 #define SI32_ACCTR_A_CONTROL_CALPUMD_LARGE_VALUE  3
259 #define SI32_ACCTR_A_CONTROL_CALPUMD_LARGE_U32 \
260    (SI32_ACCTR_A_CONTROL_CALPUMD_LARGE_VALUE << SI32_ACCTR_A_CONTROL_CALPUMD_SHIFT)
261 
262 #define SI32_ACCTR_A_CONTROL_FPUPEN_MASK  0x00400000
263 #define SI32_ACCTR_A_CONTROL_FPUPEN_SHIFT  22
264 // Pull-ups are enabled automatically by hardware.
265 #define SI32_ACCTR_A_CONTROL_FPUPEN_DISABLED_VALUE  0
266 #define SI32_ACCTR_A_CONTROL_FPUPEN_DISABLED_U32 \
267    (SI32_ACCTR_A_CONTROL_FPUPEN_DISABLED_VALUE << SI32_ACCTR_A_CONTROL_FPUPEN_SHIFT)
268 // Always enable the pull-ups.
269 #define SI32_ACCTR_A_CONTROL_FPUPEN_ENABLED_VALUE  1
270 #define SI32_ACCTR_A_CONTROL_FPUPEN_ENABLED_U32 \
271    (SI32_ACCTR_A_CONTROL_FPUPEN_ENABLED_VALUE << SI32_ACCTR_A_CONTROL_FPUPEN_SHIFT)
272 
273 #define SI32_ACCTR_A_CONTROL_FPDNEN_MASK  0x00800000
274 #define SI32_ACCTR_A_CONTROL_FPDNEN_SHIFT  23
275 // Disable input grounding.
276 #define SI32_ACCTR_A_CONTROL_FPDNEN_DISABLED_VALUE  0
277 #define SI32_ACCTR_A_CONTROL_FPDNEN_DISABLED_U32 \
278    (SI32_ACCTR_A_CONTROL_FPDNEN_DISABLED_VALUE << SI32_ACCTR_A_CONTROL_FPDNEN_SHIFT)
279 // Enable input grounding. The IN0 and IN1 inputs are grounded.
280 #define SI32_ACCTR_A_CONTROL_FPDNEN_ENABLED_VALUE  1
281 #define SI32_ACCTR_A_CONTROL_FPDNEN_ENABLED_U32 \
282    (SI32_ACCTR_A_CONTROL_FPDNEN_ENABLED_VALUE << SI32_ACCTR_A_CONTROL_FPDNEN_SHIFT)
283 
284 #define SI32_ACCTR_A_CONTROL_PUVAL_MASK  0x1F000000
285 #define SI32_ACCTR_A_CONTROL_PUVAL_SHIFT  24
286 
287 #define SI32_ACCTR_A_CONTROL_CALSEL_MASK  0x20000000
288 #define SI32_ACCTR_A_CONTROL_CALSEL_SHIFT  29
289 // Calibrate the IN0 input.
290 #define SI32_ACCTR_A_CONTROL_CALSEL_IN0_VALUE  0
291 #define SI32_ACCTR_A_CONTROL_CALSEL_IN0_U32 \
292    (SI32_ACCTR_A_CONTROL_CALSEL_IN0_VALUE << SI32_ACCTR_A_CONTROL_CALSEL_SHIFT)
293 // Calibrate the IN1 input.
294 #define SI32_ACCTR_A_CONTROL_CALSEL_IN1_VALUE  1
295 #define SI32_ACCTR_A_CONTROL_CALSEL_IN1_U32 \
296    (SI32_ACCTR_A_CONTROL_CALSEL_IN1_VALUE << SI32_ACCTR_A_CONTROL_CALSEL_SHIFT)
297 
298 #define SI32_ACCTR_A_CONTROL_CALRF_MASK  0x40000000
299 #define SI32_ACCTR_A_CONTROL_CALRF_SHIFT  30
300 // The automatic calibration operation did not succeed.
301 #define SI32_ACCTR_A_CONTROL_CALRF_NOT_SET_VALUE  0
302 #define SI32_ACCTR_A_CONTROL_CALRF_NOT_SET_U32 \
303    (SI32_ACCTR_A_CONTROL_CALRF_NOT_SET_VALUE << SI32_ACCTR_A_CONTROL_CALRF_SHIFT)
304 // The automatic calibration operation succeeded.
305 #define SI32_ACCTR_A_CONTROL_CALRF_SET_VALUE  1
306 #define SI32_ACCTR_A_CONTROL_CALRF_SET_U32 \
307    (SI32_ACCTR_A_CONTROL_CALRF_SET_VALUE << SI32_ACCTR_A_CONTROL_CALRF_SHIFT)
308 
309 #define SI32_ACCTR_A_CONTROL_CALBUSYF_MASK  0x80000000
310 #define SI32_ACCTR_A_CONTROL_CALBUSYF_SHIFT  31
311 // A calibration operation is not in progress.
312 #define SI32_ACCTR_A_CONTROL_CALBUSYF_NOT_SET_VALUE  0U
313 #define SI32_ACCTR_A_CONTROL_CALBUSYF_NOT_SET_U32 \
314    (SI32_ACCTR_A_CONTROL_CALBUSYF_NOT_SET_VALUE << SI32_ACCTR_A_CONTROL_CALBUSYF_SHIFT)
315 // A calibration operation is in progress. Hardware will clear this flag when the
316 // operation completes.
317 #define SI32_ACCTR_A_CONTROL_CALBUSYF_SET_VALUE  1U
318 #define SI32_ACCTR_A_CONTROL_CALBUSYF_SET_U32 \
319    (SI32_ACCTR_A_CONTROL_CALBUSYF_SET_VALUE << SI32_ACCTR_A_CONTROL_CALBUSYF_SHIFT)
320 
321 
322 
323 struct SI32_ACCTR_A_LCCONFIG_Struct
324 {
325    union
326    {
327       struct
328       {
329          // LC Pulse Extension Mode
330          volatile uint32_t PEMD: 2;
331          // LC Comparator 0 Fine Threshold
332          volatile uint32_t CMP0FTH: 3;
333          // LC Comparator 0 Coarse Threshold
334          volatile uint32_t CMP0CTH: 6;
335          // LC Comparator 0 Threshold Range
336          volatile uint32_t CMP0THR: 1;
337          // LC Comparator 1 Fine Threshold
338          volatile uint32_t CMP1FTH: 3;
339          // LC Comparator 1 Coarse Threshold
340          volatile uint32_t CMP1CTH: 6;
341          // LC Comparator 1 Threshold Range
342          volatile uint32_t CMP1THR: 1;
343          // LC Comparator Low-side Hysteresis
344          volatile uint32_t CMPLHYS: 2;
345          // LC Comparator High-side Hysteresis
346          volatile uint32_t CMPHHYS: 2;
347          // LC Comparator Mode
348          volatile uint32_t CMPMD: 2;
349          // LC Comparator 0 to Count 1 Enable
350          volatile uint32_t CMP0CNT1EN: 1;
351          // Force LC Comparator 0 On Enable
352          volatile uint32_t FCMP0EN: 1;
353          // Force LC Comparator 1 On Enable
354          volatile uint32_t FCMP1EN: 1;
355                   uint32_t reserved0: 1;
356       };
357       volatile uint32_t U32;
358    };
359 };
360 
361 #define SI32_ACCTR_A_LCCONFIG_PEMD_MASK  0x00000003
362 #define SI32_ACCTR_A_LCCONFIG_PEMD_SHIFT  0
363 // Stretch the LC comparator output low pulses by approximately 20 ns.
364 #define SI32_ACCTR_A_LCCONFIG_PEMD_LOW_VALUE  0
365 #define SI32_ACCTR_A_LCCONFIG_PEMD_LOW_U32 \
366    (SI32_ACCTR_A_LCCONFIG_PEMD_LOW_VALUE << SI32_ACCTR_A_LCCONFIG_PEMD_SHIFT)
367 // Stretch the LC comparator output high pulses by approximately 20 ns.
368 #define SI32_ACCTR_A_LCCONFIG_PEMD_HIGH_VALUE  1
369 #define SI32_ACCTR_A_LCCONFIG_PEMD_HIGH_U32 \
370    (SI32_ACCTR_A_LCCONFIG_PEMD_HIGH_VALUE << SI32_ACCTR_A_LCCONFIG_PEMD_SHIFT)
371 // No pulse extension.
372 #define SI32_ACCTR_A_LCCONFIG_PEMD_NONE_VALUE  2
373 #define SI32_ACCTR_A_LCCONFIG_PEMD_NONE_U32 \
374    (SI32_ACCTR_A_LCCONFIG_PEMD_NONE_VALUE << SI32_ACCTR_A_LCCONFIG_PEMD_SHIFT)
375 
376 #define SI32_ACCTR_A_LCCONFIG_CMP0FTH_MASK  0x0000001C
377 #define SI32_ACCTR_A_LCCONFIG_CMP0FTH_SHIFT  2
378 
379 #define SI32_ACCTR_A_LCCONFIG_CMP0CTH_MASK  0x000007E0
380 #define SI32_ACCTR_A_LCCONFIG_CMP0CTH_SHIFT  5
381 
382 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_MASK  0x00000800
383 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_SHIFT  11
384 // Set the comparator 0 threshold to the low range (0 V to VIO/8 in 48 steps).
385 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_LOW_VALUE  0
386 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_LOW_U32 \
387    (SI32_ACCTR_A_LCCONFIG_CMP0THR_LOW_VALUE << SI32_ACCTR_A_LCCONFIG_CMP0THR_SHIFT)
388 // Set the comparator 0 threshold to a full range (0 V to VIO in 64 steps).
389 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_FULL_VALUE  1
390 #define SI32_ACCTR_A_LCCONFIG_CMP0THR_FULL_U32 \
391    (SI32_ACCTR_A_LCCONFIG_CMP0THR_FULL_VALUE << SI32_ACCTR_A_LCCONFIG_CMP0THR_SHIFT)
392 
393 #define SI32_ACCTR_A_LCCONFIG_CMP1FTH_MASK  0x00007000
394 #define SI32_ACCTR_A_LCCONFIG_CMP1FTH_SHIFT  12
395 
396 #define SI32_ACCTR_A_LCCONFIG_CMP1CTH_MASK  0x001F8000
397 #define SI32_ACCTR_A_LCCONFIG_CMP1CTH_SHIFT  15
398 
399 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_MASK  0x00200000
400 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_SHIFT  21
401 // Set the comparator 1 threshold to the low range (0 V to VIO/8 in 48 steps).
402 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_LOW_VALUE  0
403 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_LOW_U32 \
404    (SI32_ACCTR_A_LCCONFIG_CMP1THR_LOW_VALUE << SI32_ACCTR_A_LCCONFIG_CMP1THR_SHIFT)
405 // Set the comparator 1 threshold to a full range (0 V to VIO in 64 steps).
406 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_FULL_VALUE  1
407 #define SI32_ACCTR_A_LCCONFIG_CMP1THR_FULL_U32 \
408    (SI32_ACCTR_A_LCCONFIG_CMP1THR_FULL_VALUE << SI32_ACCTR_A_LCCONFIG_CMP1THR_SHIFT)
409 
410 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_MASK  0x00C00000
411 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT  22
412 // Set both LC comparators to use 0 mV low-side hysteresis.
413 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_0_MV_VALUE  0
414 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_0_MV_U32 \
415    (SI32_ACCTR_A_LCCONFIG_CMPLHYS_0_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT)
416 // Set both LC comparators to use 5 mV low-side hysteresis.
417 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_5_MV_VALUE  1
418 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_5_MV_U32 \
419    (SI32_ACCTR_A_LCCONFIG_CMPLHYS_5_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT)
420 // Set both LC comparators to use 10 mV low-side hysteresis.
421 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_10_MV_VALUE  2
422 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_10_MV_U32 \
423    (SI32_ACCTR_A_LCCONFIG_CMPLHYS_10_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT)
424 // Set both LC comparators to use 20 mV low-side hysteresis.
425 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_20_MV_VALUE  3
426 #define SI32_ACCTR_A_LCCONFIG_CMPLHYS_20_MV_U32 \
427    (SI32_ACCTR_A_LCCONFIG_CMPLHYS_20_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPLHYS_SHIFT)
428 
429 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_MASK  0x03000000
430 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT  24
431 // Set both LC comparators to use 0 mV high-side hysteresis.
432 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_0_MV_VALUE  0
433 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_0_MV_U32 \
434    (SI32_ACCTR_A_LCCONFIG_CMPHHYS_0_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT)
435 // Set both LC comparators to use 5 mV high-side hysteresis.
436 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_5_MV_VALUE  1
437 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_5_MV_U32 \
438    (SI32_ACCTR_A_LCCONFIG_CMPHHYS_5_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT)
439 // Set both LC comparators to use 10 mV high-side hysteresis.
440 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_10_MV_VALUE  2
441 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_10_MV_U32 \
442    (SI32_ACCTR_A_LCCONFIG_CMPHHYS_10_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT)
443 // Set both LC comparators to use 20 mV high-side hysteresis.
444 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_20_MV_VALUE  3
445 #define SI32_ACCTR_A_LCCONFIG_CMPHHYS_20_MV_U32 \
446    (SI32_ACCTR_A_LCCONFIG_CMPHHYS_20_MV_VALUE << SI32_ACCTR_A_LCCONFIG_CMPHHYS_SHIFT)
447 
448 #define SI32_ACCTR_A_LCCONFIG_CMPMD_MASK  0x0C000000
449 #define SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT  26
450 // Mode 0 (slowest response time, lowest power consumption).
451 #define SI32_ACCTR_A_LCCONFIG_CMPMD_5_US_VALUE  0
452 #define SI32_ACCTR_A_LCCONFIG_CMPMD_5_US_U32 \
453    (SI32_ACCTR_A_LCCONFIG_CMPMD_5_US_VALUE << SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT)
454 // Mode 1.
455 #define SI32_ACCTR_A_LCCONFIG_CMPMD_1_US_VALUE  1
456 #define SI32_ACCTR_A_LCCONFIG_CMPMD_1_US_U32 \
457    (SI32_ACCTR_A_LCCONFIG_CMPMD_1_US_VALUE << SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT)
458 // Mode 2.
459 #define SI32_ACCTR_A_LCCONFIG_CMPMD_400_NS_VALUE  2
460 #define SI32_ACCTR_A_LCCONFIG_CMPMD_400_NS_U32 \
461    (SI32_ACCTR_A_LCCONFIG_CMPMD_400_NS_VALUE << SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT)
462 // Mode 3 (fastest response time, highest power consumption).
463 #define SI32_ACCTR_A_LCCONFIG_CMPMD_200_NS_VALUE  3
464 #define SI32_ACCTR_A_LCCONFIG_CMPMD_200_NS_U32 \
465    (SI32_ACCTR_A_LCCONFIG_CMPMD_200_NS_VALUE << SI32_ACCTR_A_LCCONFIG_CMPMD_SHIFT)
466 
467 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_MASK  0x10000000
468 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_SHIFT  28
469 // Use LC comparator 0 as an input to counter 0 and LC comparator 1 as an input to
470 // counter 1.
471 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_DISABLED_VALUE  0
472 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_DISABLED_U32 \
473    (SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_DISABLED_VALUE << SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_SHIFT)
474 // Use LC comparator 0 as an input to both counter 0 and counter 1.
475 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_ENABLED_VALUE  1
476 #define SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_ENABLED_U32 \
477    (SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_ENABLED_VALUE << SI32_ACCTR_A_LCCONFIG_CMP0CNT1EN_SHIFT)
478 
479 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_MASK  0x20000000
480 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_SHIFT  29
481 // Hardware automatically turns LC comparator 0 on and off.
482 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_DISABLED_VALUE  0
483 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_DISABLED_U32 \
484    (SI32_ACCTR_A_LCCONFIG_FCMP0EN_DISABLED_VALUE << SI32_ACCTR_A_LCCONFIG_FCMP0EN_SHIFT)
485 // Force LC comparator 0 always on.
486 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_ENABLED_VALUE  1
487 #define SI32_ACCTR_A_LCCONFIG_FCMP0EN_ENABLED_U32 \
488    (SI32_ACCTR_A_LCCONFIG_FCMP0EN_ENABLED_VALUE << SI32_ACCTR_A_LCCONFIG_FCMP0EN_SHIFT)
489 
490 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_MASK  0x40000000
491 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_SHIFT  30
492 // Hardware automatically turns LC comparator 1 on and off.
493 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_DISABLED_VALUE  0
494 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_DISABLED_U32 \
495    (SI32_ACCTR_A_LCCONFIG_FCMP1EN_DISABLED_VALUE << SI32_ACCTR_A_LCCONFIG_FCMP1EN_SHIFT)
496 // Force LC comparator 1 always on.
497 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_ENABLED_VALUE  1
498 #define SI32_ACCTR_A_LCCONFIG_FCMP1EN_ENABLED_U32 \
499    (SI32_ACCTR_A_LCCONFIG_FCMP1EN_ENABLED_VALUE << SI32_ACCTR_A_LCCONFIG_FCMP1EN_SHIFT)
500 
501 
502 
503 struct SI32_ACCTR_A_TIMING_Struct
504 {
505    union
506    {
507       struct
508       {
509          // Timing State
510          volatile uint32_t STATE: 3;
511          // Bias 0 Offset Enable
512          volatile uint32_t B0OEN: 1;
513          // Bias 1 Offset Enable
514          volatile uint32_t B1OEN: 1;
515                   uint32_t reserved0: 4;
516          // Zone D Count
517          volatile uint32_t ZONED: 3;
518          // Zone C Count
519          volatile uint32_t ZONEC: 3;
520          // Zone B Count
521          volatile uint32_t ZONEB: 3;
522          // Zone A Count
523          volatile uint32_t ZONEA: 3;
524          // Zone P Count
525          volatile uint32_t ZONEP: 3;
526          // LC Wake Mode
527          volatile uint32_t WAKEMD: 3;
528          // Sequencer Start
529          volatile uint32_t START: 1;
530          // Pulse Counter Period
531          volatile uint32_t PERIOD: 4;
532       };
533       volatile uint32_t U32;
534    };
535 };
536 
537 #define SI32_ACCTR_A_TIMING_STATE_MASK  0x00000007
538 #define SI32_ACCTR_A_TIMING_STATE_SHIFT  0
539 
540 #define SI32_ACCTR_A_TIMING_B0OEN_MASK  0x00000008
541 #define SI32_ACCTR_A_TIMING_B0OEN_SHIFT  3
542 // The bias 0 pulse is a full width (minimum 2 RTC cycles).
543 #define SI32_ACCTR_A_TIMING_B0OEN_DISABLED_VALUE  0
544 #define SI32_ACCTR_A_TIMING_B0OEN_DISABLED_U32 \
545    (SI32_ACCTR_A_TIMING_B0OEN_DISABLED_VALUE << SI32_ACCTR_A_TIMING_B0OEN_SHIFT)
546 // The bias 0 pulse is delayed 1/2 an RTC cycle and de-asserts 1/2 an RTC cycle
547 // early (minimum 3 RTC cycles).
548 #define SI32_ACCTR_A_TIMING_B0OEN_ENABLED_VALUE  1
549 #define SI32_ACCTR_A_TIMING_B0OEN_ENABLED_U32 \
550    (SI32_ACCTR_A_TIMING_B0OEN_ENABLED_VALUE << SI32_ACCTR_A_TIMING_B0OEN_SHIFT)
551 
552 #define SI32_ACCTR_A_TIMING_B1OEN_MASK  0x00000010
553 #define SI32_ACCTR_A_TIMING_B1OEN_SHIFT  4
554 // The bias 1 pulse is a full width (minimum 2 RTC cycles).
555 #define SI32_ACCTR_A_TIMING_B1OEN_DISABLED_VALUE  0
556 #define SI32_ACCTR_A_TIMING_B1OEN_DISABLED_U32 \
557    (SI32_ACCTR_A_TIMING_B1OEN_DISABLED_VALUE << SI32_ACCTR_A_TIMING_B1OEN_SHIFT)
558 // The bias 1 pulse is delayed 1/2 an RTC cycle and de-asserts 1/2 an RTC cycle
559 // early (minimum 3 RTC cycles).
560 #define SI32_ACCTR_A_TIMING_B1OEN_ENABLED_VALUE  1
561 #define SI32_ACCTR_A_TIMING_B1OEN_ENABLED_U32 \
562    (SI32_ACCTR_A_TIMING_B1OEN_ENABLED_VALUE << SI32_ACCTR_A_TIMING_B1OEN_SHIFT)
563 
564 #define SI32_ACCTR_A_TIMING_ZONED_MASK  0x00000E00
565 #define SI32_ACCTR_A_TIMING_ZONED_SHIFT  9
566 
567 #define SI32_ACCTR_A_TIMING_ZONEC_MASK  0x00007000
568 #define SI32_ACCTR_A_TIMING_ZONEC_SHIFT  12
569 
570 #define SI32_ACCTR_A_TIMING_ZONEB_MASK  0x00038000
571 #define SI32_ACCTR_A_TIMING_ZONEB_SHIFT  15
572 
573 #define SI32_ACCTR_A_TIMING_ZONEA_MASK  0x001C0000
574 #define SI32_ACCTR_A_TIMING_ZONEA_SHIFT  18
575 
576 #define SI32_ACCTR_A_TIMING_ZONEP_MASK  0x00E00000
577 #define SI32_ACCTR_A_TIMING_ZONEP_SHIFT  21
578 
579 #define SI32_ACCTR_A_TIMING_WAKEMD_MASK  0x07000000
580 #define SI32_ACCTR_A_TIMING_WAKEMD_SHIFT  24
581 // Disable wake up events.
582 #define SI32_ACCTR_A_TIMING_WAKEMD_DISABLED_VALUE  0
583 #define SI32_ACCTR_A_TIMING_WAKEMD_DISABLED_U32 \
584    (SI32_ACCTR_A_TIMING_WAKEMD_DISABLED_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT)
585 // Wake or interrupt at the start of zone P.
586 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEP_VALUE  1
587 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEP_U32 \
588    (SI32_ACCTR_A_TIMING_WAKEMD_WZONEP_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT)
589 // Wake or interrupt at the start of zone A.
590 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEA_VALUE  2
591 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEA_U32 \
592    (SI32_ACCTR_A_TIMING_WAKEMD_WZONEA_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT)
593 // Wake or interrupt at the start of zone B.
594 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEB_VALUE  3
595 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEB_U32 \
596    (SI32_ACCTR_A_TIMING_WAKEMD_WZONEB_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT)
597 // Wake or interrupt at the start of zone C.
598 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEC_VALUE  4
599 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONEC_U32 \
600    (SI32_ACCTR_A_TIMING_WAKEMD_WZONEC_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT)
601 // Wake or interrupt at the start of zone D.
602 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONED_VALUE  5
603 #define SI32_ACCTR_A_TIMING_WAKEMD_WZONED_U32 \
604    (SI32_ACCTR_A_TIMING_WAKEMD_WZONED_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT)
605 // Wake or interrupt at the end of the LC sequence.
606 #define SI32_ACCTR_A_TIMING_WAKEMD_WEND_VALUE  6
607 #define SI32_ACCTR_A_TIMING_WAKEMD_WEND_U32 \
608    (SI32_ACCTR_A_TIMING_WAKEMD_WEND_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT)
609 // Wake or interrupt at the end of the LC sequence and stop the sequencer when this
610 // event occurs.
611 #define SI32_ACCTR_A_TIMING_WAKEMD_WKSTOP_VALUE  7
612 #define SI32_ACCTR_A_TIMING_WAKEMD_WKSTOP_U32 \
613    (SI32_ACCTR_A_TIMING_WAKEMD_WKSTOP_VALUE << SI32_ACCTR_A_TIMING_WAKEMD_SHIFT)
614 
615 #define SI32_ACCTR_A_TIMING_START_MASK  0x08000000
616 #define SI32_ACCTR_A_TIMING_START_SHIFT  27
617 // Do not start the sequencer.
618 #define SI32_ACCTR_A_TIMING_START_DISABLED_VALUE  0
619 #define SI32_ACCTR_A_TIMING_START_DISABLED_U32 \
620    (SI32_ACCTR_A_TIMING_START_DISABLED_VALUE << SI32_ACCTR_A_TIMING_START_SHIFT)
621 // Start the sequencer.
622 #define SI32_ACCTR_A_TIMING_START_ENABLED_VALUE  1
623 #define SI32_ACCTR_A_TIMING_START_ENABLED_U32 \
624    (SI32_ACCTR_A_TIMING_START_ENABLED_VALUE << SI32_ACCTR_A_TIMING_START_SHIFT)
625 
626 #define SI32_ACCTR_A_TIMING_PERIOD_MASK  0xF0000000
627 #define SI32_ACCTR_A_TIMING_PERIOD_SHIFT  28
628 // Set the period to 4 RTC cycles.
629 #define SI32_ACCTR_A_TIMING_PERIOD_4_CYCLES_VALUE  0U
630 #define SI32_ACCTR_A_TIMING_PERIOD_4_CYCLES_U32 \
631    (SI32_ACCTR_A_TIMING_PERIOD_4_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
632 // Set the period to 8 RTC cycles.
633 #define SI32_ACCTR_A_TIMING_PERIOD_8_CYCLES_VALUE  1U
634 #define SI32_ACCTR_A_TIMING_PERIOD_8_CYCLES_U32 \
635    (SI32_ACCTR_A_TIMING_PERIOD_8_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
636 // Set the period to 16 RTC cycles.
637 #define SI32_ACCTR_A_TIMING_PERIOD_16_CYCLES_VALUE  2U
638 #define SI32_ACCTR_A_TIMING_PERIOD_16_CYCLES_U32 \
639    (SI32_ACCTR_A_TIMING_PERIOD_16_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
640 // Set the period to 32 RTC cycles.
641 #define SI32_ACCTR_A_TIMING_PERIOD_32_CYCLES_VALUE  3U
642 #define SI32_ACCTR_A_TIMING_PERIOD_32_CYCLES_U32 \
643    (SI32_ACCTR_A_TIMING_PERIOD_32_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
644 // Set the period to 64 RTC cycles.
645 #define SI32_ACCTR_A_TIMING_PERIOD_64_CYCLES_VALUE  4U
646 #define SI32_ACCTR_A_TIMING_PERIOD_64_CYCLES_U32 \
647    (SI32_ACCTR_A_TIMING_PERIOD_64_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
648 // Set the period to 128 RTC cycles.
649 #define SI32_ACCTR_A_TIMING_PERIOD_128_CYCLES_VALUE  5U
650 #define SI32_ACCTR_A_TIMING_PERIOD_128_CYCLES_U32 \
651    (SI32_ACCTR_A_TIMING_PERIOD_128_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
652 // Set the period to 256 RTC cycles.
653 #define SI32_ACCTR_A_TIMING_PERIOD_256_CYCLES_VALUE  6U
654 #define SI32_ACCTR_A_TIMING_PERIOD_256_CYCLES_U32 \
655    (SI32_ACCTR_A_TIMING_PERIOD_256_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
656 // Set the period to 512 RTC cycles.
657 #define SI32_ACCTR_A_TIMING_PERIOD_512_CYCLES_VALUE  7U
658 #define SI32_ACCTR_A_TIMING_PERIOD_512_CYCLES_U32 \
659    (SI32_ACCTR_A_TIMING_PERIOD_512_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
660 // Set the period to 1024 RTC cycles.
661 #define SI32_ACCTR_A_TIMING_PERIOD_1024_CYCLES_VALUE  8U
662 #define SI32_ACCTR_A_TIMING_PERIOD_1024_CYCLES_U32 \
663    (SI32_ACCTR_A_TIMING_PERIOD_1024_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
664 // Set the period to 2048 RTC cycles.
665 #define SI32_ACCTR_A_TIMING_PERIOD_2048_CYCLES_VALUE  9U
666 #define SI32_ACCTR_A_TIMING_PERIOD_2048_CYCLES_U32 \
667    (SI32_ACCTR_A_TIMING_PERIOD_2048_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
668 // Set the period to 4096 RTC cycles.
669 #define SI32_ACCTR_A_TIMING_PERIOD_4096_CYCLES_VALUE  10U
670 #define SI32_ACCTR_A_TIMING_PERIOD_4096_CYCLES_U32 \
671    (SI32_ACCTR_A_TIMING_PERIOD_4096_CYCLES_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
672 // Set the module to single sample mode and disable the period counter after the
673 // next completion of the sequencer.  In this mode, firmware must start each sample
674 // by setting FLCSEN to 1.
675 #define SI32_ACCTR_A_TIMING_PERIOD_SINGLE_SAMPLE_VALUE  14U
676 #define SI32_ACCTR_A_TIMING_PERIOD_SINGLE_SAMPLE_U32 \
677    (SI32_ACCTR_A_TIMING_PERIOD_SINGLE_SAMPLE_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
678 // Set the module to consecutive sample mode and disable the period counter. After
679 // completing zone D, the timing engine will jump directly to zone A, skipping both
680 // the W and P zones.
681 #define SI32_ACCTR_A_TIMING_PERIOD_CONSECUTIVE_SAMPLE_VALUE  15U
682 #define SI32_ACCTR_A_TIMING_PERIOD_CONSECUTIVE_SAMPLE_U32 \
683    (SI32_ACCTR_A_TIMING_PERIOD_CONSECUTIVE_SAMPLE_VALUE << SI32_ACCTR_A_TIMING_PERIOD_SHIFT)
684 
685 
686 
687 struct SI32_ACCTR_A_LCMODE_Struct
688 {
689    union
690    {
691       struct
692       {
693          // Automatic Tracking Enable
694          volatile uint32_t ATRKEN: 1;
695          // Automatic Center Discriminator Enable
696          volatile uint32_t ACDEN: 1;
697          // LC Discriminator 0 Digital Hysterisis
698          volatile uint32_t LCD0HYS: 2;
699          // LC Discriminator 1 Digital Hysterisis
700          volatile uint32_t LCD1HYS: 2;
701          // Counter 0 Active Zone Select
702          volatile uint32_t C0ZONE: 2;
703          // Counter 1 Active Zone Select
704          volatile uint32_t C1ZONE: 2;
705          // Pulse 0 Active Zone Select
706          volatile uint32_t P0ZONE: 2;
707          // Pulse 1 Active Zone Select
708          volatile uint32_t P1ZONE: 2;
709          // LC Pulse Mode
710          volatile uint32_t PMD: 2;
711          // Bias 0 Zone C Enable
712          volatile uint32_t B0ZONECEN: 1;
713          // Bias 0 Zone B Enable
714          volatile uint32_t B0ZONEBEN: 1;
715          // Bias 0 Zone A Enable
716          volatile uint32_t B0ZONEAEN: 1;
717          // Bias 0 Zone P Enable
718          volatile uint32_t B0ZONEPEN: 1;
719          // Bias 0 Polarity
720          volatile uint32_t B0POL: 1;
721          // Bias 1 Zone C Enable
722          volatile uint32_t B1ZONECEN: 1;
723          // Bias 1 Zone B Enable
724          volatile uint32_t B1ZONEBEN: 1;
725          // Bias 1 Zone A Enable
726          volatile uint32_t B1ZONEAEN: 1;
727          // Bias 1 Zone P Enable
728          volatile uint32_t B1ZONEPEN: 1;
729          // Bias 1 Polarity
730          volatile uint32_t B1POL: 1;
731          // Bias Mode
732          volatile uint32_t BMD: 2;
733          // LC Mode
734          volatile uint32_t LCMD: 4;
735       };
736       volatile uint32_t U32;
737    };
738 };
739 
740 #define SI32_ACCTR_A_LCMODE_ATRKEN_MASK  0x00000001
741 #define SI32_ACCTR_A_LCMODE_ATRKEN_SHIFT  0
742 // Disable automatic tracking.
743 #define SI32_ACCTR_A_LCMODE_ATRKEN_DISABLED_VALUE  0
744 #define SI32_ACCTR_A_LCMODE_ATRKEN_DISABLED_U32 \
745    (SI32_ACCTR_A_LCMODE_ATRKEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_ATRKEN_SHIFT)
746 // Enable automatic tracking. A new MAX value of any size will increase both the
747 // MAX and MIN by 1, and a new MIN value of any size will decrease both the MAX and
748 // MIN by 1.
749 #define SI32_ACCTR_A_LCMODE_ATRKEN_ENABLED_VALUE  1
750 #define SI32_ACCTR_A_LCMODE_ATRKEN_ENABLED_U32 \
751    (SI32_ACCTR_A_LCMODE_ATRKEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_ATRKEN_SHIFT)
752 
753 #define SI32_ACCTR_A_LCMODE_ACDEN_MASK  0x00000002
754 #define SI32_ACCTR_A_LCMODE_ACDEN_SHIFT  1
755 // Disable automatic center discriminator mode. Firmware must set the CD0 and CD1
756 // fields.
757 #define SI32_ACCTR_A_LCMODE_ACDEN_DISABLED_VALUE  0
758 #define SI32_ACCTR_A_LCMODE_ACDEN_DISABLED_U32 \
759    (SI32_ACCTR_A_LCMODE_ACDEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_ACDEN_SHIFT)
760 // Enable automatic center discriminator mode. Hardware will keep the CD0 and CD1
761 // fields centered between MAX and MIN.
762 #define SI32_ACCTR_A_LCMODE_ACDEN_ENABLED_VALUE  1
763 #define SI32_ACCTR_A_LCMODE_ACDEN_ENABLED_U32 \
764    (SI32_ACCTR_A_LCMODE_ACDEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_ACDEN_SHIFT)
765 
766 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MASK  0x0000000C
767 #define SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT  2
768 // A high-to-low transition occurs if LCCOUNT0 is less than CD0.
769 #define SI32_ACCTR_A_LCMODE_LCD0HYS_ZERO_VALUE  0
770 #define SI32_ACCTR_A_LCMODE_LCD0HYS_ZERO_U32 \
771    (SI32_ACCTR_A_LCMODE_LCD0HYS_ZERO_VALUE << SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT)
772 // A high-to-low transition occurs if LCCOUNT0 is less than CD0 - 1.
773 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS1_VALUE  1
774 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS1_U32 \
775    (SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS1_VALUE << SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT)
776 // A high-to-low transition occurs if LCCOUNT0 is less than CD0 - 2.
777 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS2_VALUE  2
778 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS2_U32 \
779    (SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS2_VALUE << SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT)
780 // A high-to-low transition occurs if LCCOUNT0 is less than CD0 - 3.
781 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS3_VALUE  3
782 #define SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS3_U32 \
783    (SI32_ACCTR_A_LCMODE_LCD0HYS_MINUS3_VALUE << SI32_ACCTR_A_LCMODE_LCD0HYS_SHIFT)
784 
785 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MASK  0x00000030
786 #define SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT  4
787 // A high-to-low transition occurs if LCCOUNT1 is less than CD1.
788 #define SI32_ACCTR_A_LCMODE_LCD1HYS_ZERO_VALUE  0
789 #define SI32_ACCTR_A_LCMODE_LCD1HYS_ZERO_U32 \
790    (SI32_ACCTR_A_LCMODE_LCD1HYS_ZERO_VALUE << SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT)
791 // A high-to-low transition occurs if LCCOUNT1 is less than CD1 - 1.
792 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS1_VALUE  1
793 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS1_U32 \
794    (SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS1_VALUE << SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT)
795 // A high-to-low transition occurs if LCCOUNT1 is less than CD1 - 2.
796 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS2_VALUE  2
797 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS2_U32 \
798    (SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS2_VALUE << SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT)
799 // A high-to-low transition occurs if LCCOUNT1 is less than CD1 - 3.
800 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS3_VALUE  3
801 #define SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS3_U32 \
802    (SI32_ACCTR_A_LCMODE_LCD1HYS_MINUS3_VALUE << SI32_ACCTR_A_LCMODE_LCD1HYS_SHIFT)
803 
804 #define SI32_ACCTR_A_LCMODE_C0ZONE_MASK  0x000000C0
805 #define SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT  6
806 // Select zone A as the active zone for counter 0 (LCIN0 input).
807 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEA_VALUE  0
808 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEA_U32 \
809    (SI32_ACCTR_A_LCMODE_C0ZONE_ZONEA_VALUE << SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT)
810 // Select zone B as the active zone for counter 0 (LCIN0 input).
811 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEB_VALUE  1
812 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEB_U32 \
813    (SI32_ACCTR_A_LCMODE_C0ZONE_ZONEB_VALUE << SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT)
814 // Select zone C as the active zone for counter 0 (LCIN0 input).
815 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEC_VALUE  2
816 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONEC_U32 \
817    (SI32_ACCTR_A_LCMODE_C0ZONE_ZONEC_VALUE << SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT)
818 // Select zone D as the active zone for counter 0 (LCIN0 input).
819 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONED_VALUE  3
820 #define SI32_ACCTR_A_LCMODE_C0ZONE_ZONED_U32 \
821    (SI32_ACCTR_A_LCMODE_C0ZONE_ZONED_VALUE << SI32_ACCTR_A_LCMODE_C0ZONE_SHIFT)
822 
823 #define SI32_ACCTR_A_LCMODE_C1ZONE_MASK  0x00000300
824 #define SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT  8
825 // Select zone A as the active zone for counter 1 (LCIN1 input).
826 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEA_VALUE  0
827 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEA_U32 \
828    (SI32_ACCTR_A_LCMODE_C1ZONE_ZONEA_VALUE << SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT)
829 // Select zone B as the active zone for counter 1 (LCIN1 input).
830 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEB_VALUE  1
831 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEB_U32 \
832    (SI32_ACCTR_A_LCMODE_C1ZONE_ZONEB_VALUE << SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT)
833 // Select zone C as the active zone for counter 1 (LCIN1 input).
834 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEC_VALUE  2
835 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONEC_U32 \
836    (SI32_ACCTR_A_LCMODE_C1ZONE_ZONEC_VALUE << SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT)
837 // Select zone D as the active zone for counter 1 (LCIN1 input).
838 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONED_VALUE  3
839 #define SI32_ACCTR_A_LCMODE_C1ZONE_ZONED_U32 \
840    (SI32_ACCTR_A_LCMODE_C1ZONE_ZONED_VALUE << SI32_ACCTR_A_LCMODE_C1ZONE_SHIFT)
841 
842 #define SI32_ACCTR_A_LCMODE_P0ZONE_MASK  0x00000C00
843 #define SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT  10
844 // Disable the pulse 0 output (LCPUL0).
845 #define SI32_ACCTR_A_LCMODE_P0ZONE_DISABLED_VALUE  0
846 #define SI32_ACCTR_A_LCMODE_P0ZONE_DISABLED_U32 \
847    (SI32_ACCTR_A_LCMODE_P0ZONE_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT)
848 // Select zone C only as the active zone for the pulse 0 output (LCPUL0).
849 #define SI32_ACCTR_A_LCMODE_P0ZONE_C_ONLY_VALUE  1
850 #define SI32_ACCTR_A_LCMODE_P0ZONE_C_ONLY_U32 \
851    (SI32_ACCTR_A_LCMODE_P0ZONE_C_ONLY_VALUE << SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT)
852 // Select zone A only as the active zone for the pulse 0 output (LCPUL0).
853 #define SI32_ACCTR_A_LCMODE_P0ZONE_A_ONLY_VALUE  2
854 #define SI32_ACCTR_A_LCMODE_P0ZONE_A_ONLY_U32 \
855    (SI32_ACCTR_A_LCMODE_P0ZONE_A_ONLY_VALUE << SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT)
856 // Select zones A and C as the active zones for the pulse 0 output (LCPUL0).
857 #define SI32_ACCTR_A_LCMODE_P0ZONE_A_AND_C_VALUE  3
858 #define SI32_ACCTR_A_LCMODE_P0ZONE_A_AND_C_U32 \
859    (SI32_ACCTR_A_LCMODE_P0ZONE_A_AND_C_VALUE << SI32_ACCTR_A_LCMODE_P0ZONE_SHIFT)
860 
861 #define SI32_ACCTR_A_LCMODE_P1ZONE_MASK  0x00003000
862 #define SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT  12
863 // Disable the pulse 1 output (LCPUL1).
864 #define SI32_ACCTR_A_LCMODE_P1ZONE_DISABLED_VALUE  0
865 #define SI32_ACCTR_A_LCMODE_P1ZONE_DISABLED_U32 \
866    (SI32_ACCTR_A_LCMODE_P1ZONE_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT)
867 // Select zone C only as the active zone for the pulse 1 output (LCPUL1).
868 #define SI32_ACCTR_A_LCMODE_P1ZONE_C_ONLY_VALUE  1
869 #define SI32_ACCTR_A_LCMODE_P1ZONE_C_ONLY_U32 \
870    (SI32_ACCTR_A_LCMODE_P1ZONE_C_ONLY_VALUE << SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT)
871 // Select zone A only as the active zone for the pulse 1 output (LCPUL1).
872 #define SI32_ACCTR_A_LCMODE_P1ZONE_A_ONLY_VALUE  2
873 #define SI32_ACCTR_A_LCMODE_P1ZONE_A_ONLY_U32 \
874    (SI32_ACCTR_A_LCMODE_P1ZONE_A_ONLY_VALUE << SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT)
875 // Select zones A and C as the active zones for the pulse 1 output (LCPUL1).
876 #define SI32_ACCTR_A_LCMODE_P1ZONE_A_AND_C_VALUE  3
877 #define SI32_ACCTR_A_LCMODE_P1ZONE_A_AND_C_U32 \
878    (SI32_ACCTR_A_LCMODE_P1ZONE_A_AND_C_VALUE << SI32_ACCTR_A_LCMODE_P1ZONE_SHIFT)
879 
880 #define SI32_ACCTR_A_LCMODE_PMD_MASK  0x0000C000
881 #define SI32_ACCTR_A_LCMODE_PMD_SHIFT  14
882 // Disable pulse mode.
883 #define SI32_ACCTR_A_LCMODE_PMD_DISABLED_VALUE  0
884 #define SI32_ACCTR_A_LCMODE_PMD_DISABLED_U32 \
885    (SI32_ACCTR_A_LCMODE_PMD_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_PMD_SHIFT)
886 // Toggle at the start of zone A or zone C.
887 #define SI32_ACCTR_A_LCMODE_PMD_TOGGLE_VALUE  1
888 #define SI32_ACCTR_A_LCMODE_PMD_TOGGLE_U32 \
889    (SI32_ACCTR_A_LCMODE_PMD_TOGGLE_VALUE << SI32_ACCTR_A_LCMODE_PMD_SHIFT)
890 // Set the pulse mode to idle high, pulse low.
891 #define SI32_ACCTR_A_LCMODE_PMD_PULSE_LOW_VALUE  2
892 #define SI32_ACCTR_A_LCMODE_PMD_PULSE_LOW_U32 \
893    (SI32_ACCTR_A_LCMODE_PMD_PULSE_LOW_VALUE << SI32_ACCTR_A_LCMODE_PMD_SHIFT)
894 // Set the pulse mode to idle low, pulse high.
895 #define SI32_ACCTR_A_LCMODE_PMD_PULSE_HIGH_VALUE  3
896 #define SI32_ACCTR_A_LCMODE_PMD_PULSE_HIGH_U32 \
897    (SI32_ACCTR_A_LCMODE_PMD_PULSE_HIGH_VALUE << SI32_ACCTR_A_LCMODE_PMD_SHIFT)
898 
899 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_MASK  0x00010000
900 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_SHIFT  16
901 // Disable bias 0 during zone C.
902 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_DISABLED_VALUE  0
903 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_DISABLED_U32 \
904    (SI32_ACCTR_A_LCMODE_B0ZONECEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONECEN_SHIFT)
905 // Enable bias 0 during zone C.
906 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_ENABLED_VALUE  1
907 #define SI32_ACCTR_A_LCMODE_B0ZONECEN_ENABLED_U32 \
908    (SI32_ACCTR_A_LCMODE_B0ZONECEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONECEN_SHIFT)
909 
910 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_MASK  0x00020000
911 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_SHIFT  17
912 // Disable bias 0 during zone B.
913 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_DISABLED_VALUE  0
914 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_DISABLED_U32 \
915    (SI32_ACCTR_A_LCMODE_B0ZONEBEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEBEN_SHIFT)
916 // Enable bias 0 during zone B.
917 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_ENABLED_VALUE  1
918 #define SI32_ACCTR_A_LCMODE_B0ZONEBEN_ENABLED_U32 \
919    (SI32_ACCTR_A_LCMODE_B0ZONEBEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEBEN_SHIFT)
920 
921 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_MASK  0x00040000
922 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_SHIFT  18
923 // Disable bias 0 during zone A.
924 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_DISABLED_VALUE  0
925 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_DISABLED_U32 \
926    (SI32_ACCTR_A_LCMODE_B0ZONEAEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEAEN_SHIFT)
927 // Enable bias 0 during zone A.
928 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_ENABLED_VALUE  1
929 #define SI32_ACCTR_A_LCMODE_B0ZONEAEN_ENABLED_U32 \
930    (SI32_ACCTR_A_LCMODE_B0ZONEAEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEAEN_SHIFT)
931 
932 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_MASK  0x00080000
933 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_SHIFT  19
934 // Disable bias 0 during zone P.
935 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_DISABLED_VALUE  0
936 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_DISABLED_U32 \
937    (SI32_ACCTR_A_LCMODE_B0ZONEPEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEPEN_SHIFT)
938 // Enable bias 0 during zone P.
939 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_ENABLED_VALUE  1
940 #define SI32_ACCTR_A_LCMODE_B0ZONEPEN_ENABLED_U32 \
941    (SI32_ACCTR_A_LCMODE_B0ZONEPEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B0ZONEPEN_SHIFT)
942 
943 #define SI32_ACCTR_A_LCMODE_B0POL_MASK  0x00100000
944 #define SI32_ACCTR_A_LCMODE_B0POL_SHIFT  20
945 // Set bias 0 to idle high, pulse low.
946 #define SI32_ACCTR_A_LCMODE_B0POL_PULSE_LOW_VALUE  0
947 #define SI32_ACCTR_A_LCMODE_B0POL_PULSE_LOW_U32 \
948    (SI32_ACCTR_A_LCMODE_B0POL_PULSE_LOW_VALUE << SI32_ACCTR_A_LCMODE_B0POL_SHIFT)
949 // Set bias 0 to idle low, pulse high.
950 #define SI32_ACCTR_A_LCMODE_B0POL_PULSE_HIGH_VALUE  1
951 #define SI32_ACCTR_A_LCMODE_B0POL_PULSE_HIGH_U32 \
952    (SI32_ACCTR_A_LCMODE_B0POL_PULSE_HIGH_VALUE << SI32_ACCTR_A_LCMODE_B0POL_SHIFT)
953 
954 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_MASK  0x00200000
955 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_SHIFT  21
956 // Disable bias 1 during zone C.
957 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_DISABLED_VALUE  0
958 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_DISABLED_U32 \
959    (SI32_ACCTR_A_LCMODE_B1ZONECEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONECEN_SHIFT)
960 // Enable bias 1 during zone C.
961 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_ENABLED_VALUE  1
962 #define SI32_ACCTR_A_LCMODE_B1ZONECEN_ENABLED_U32 \
963    (SI32_ACCTR_A_LCMODE_B1ZONECEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONECEN_SHIFT)
964 
965 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_MASK  0x00400000
966 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_SHIFT  22
967 // Disable bias 1 during zone B.
968 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_DISABLED_VALUE  0
969 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_DISABLED_U32 \
970    (SI32_ACCTR_A_LCMODE_B1ZONEBEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEBEN_SHIFT)
971 // Enable bias 1 during zone B.
972 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_ENABLED_VALUE  1
973 #define SI32_ACCTR_A_LCMODE_B1ZONEBEN_ENABLED_U32 \
974    (SI32_ACCTR_A_LCMODE_B1ZONEBEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEBEN_SHIFT)
975 
976 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_MASK  0x00800000
977 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_SHIFT  23
978 // Disable bias 1 during zone A.
979 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_DISABLED_VALUE  0
980 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_DISABLED_U32 \
981    (SI32_ACCTR_A_LCMODE_B1ZONEAEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEAEN_SHIFT)
982 // Enable bias 1 during zone A.
983 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_ENABLED_VALUE  1
984 #define SI32_ACCTR_A_LCMODE_B1ZONEAEN_ENABLED_U32 \
985    (SI32_ACCTR_A_LCMODE_B1ZONEAEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEAEN_SHIFT)
986 
987 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_MASK  0x01000000
988 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_SHIFT  24
989 // Disable bias 1 during zone P.
990 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_DISABLED_VALUE  0
991 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_DISABLED_U32 \
992    (SI32_ACCTR_A_LCMODE_B1ZONEPEN_DISABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEPEN_SHIFT)
993 // Enable bias 1 during zone P.
994 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_ENABLED_VALUE  1
995 #define SI32_ACCTR_A_LCMODE_B1ZONEPEN_ENABLED_U32 \
996    (SI32_ACCTR_A_LCMODE_B1ZONEPEN_ENABLED_VALUE << SI32_ACCTR_A_LCMODE_B1ZONEPEN_SHIFT)
997 
998 #define SI32_ACCTR_A_LCMODE_B1POL_MASK  0x02000000
999 #define SI32_ACCTR_A_LCMODE_B1POL_SHIFT  25
1000 // Set bias 1 to idle high, pulse low.
1001 #define SI32_ACCTR_A_LCMODE_B1POL_PULSE_LOW_VALUE  0
1002 #define SI32_ACCTR_A_LCMODE_B1POL_PULSE_LOW_U32 \
1003    (SI32_ACCTR_A_LCMODE_B1POL_PULSE_LOW_VALUE << SI32_ACCTR_A_LCMODE_B1POL_SHIFT)
1004 // Set bias 1 to idle low, pulse high.
1005 #define SI32_ACCTR_A_LCMODE_B1POL_PULSE_HIGH_VALUE  1
1006 #define SI32_ACCTR_A_LCMODE_B1POL_PULSE_HIGH_U32 \
1007    (SI32_ACCTR_A_LCMODE_B1POL_PULSE_HIGH_VALUE << SI32_ACCTR_A_LCMODE_B1POL_SHIFT)
1008 
1009 #define SI32_ACCTR_A_LCMODE_BMD_MASK  0x0C000000
1010 #define SI32_ACCTR_A_LCMODE_BMD_SHIFT  26
1011 // Disable the bias signals.
1012 #define SI32_ACCTR_A_LCMODE_BMD_MODE0_VALUE  0
1013 #define SI32_ACCTR_A_LCMODE_BMD_MODE0_U32 \
1014    (SI32_ACCTR_A_LCMODE_BMD_MODE0_VALUE << SI32_ACCTR_A_LCMODE_BMD_SHIFT)
1015 // Use the bias signals externally only (LCBIAS0 and LCBIAS1 outputs).
1016 #define SI32_ACCTR_A_LCMODE_BMD_MODE1_VALUE  1
1017 #define SI32_ACCTR_A_LCMODE_BMD_MODE1_U32 \
1018    (SI32_ACCTR_A_LCMODE_BMD_MODE1_VALUE << SI32_ACCTR_A_LCMODE_BMD_SHIFT)
1019 // Use the bias signals internally only.
1020 #define SI32_ACCTR_A_LCMODE_BMD_MODE2_VALUE  2
1021 #define SI32_ACCTR_A_LCMODE_BMD_MODE2_U32 \
1022    (SI32_ACCTR_A_LCMODE_BMD_MODE2_VALUE << SI32_ACCTR_A_LCMODE_BMD_SHIFT)
1023 // Use the bias signals externally (LCBIAS0 and LCBIAS1 outputs) and internally.
1024 #define SI32_ACCTR_A_LCMODE_BMD_MODE3_VALUE  3
1025 #define SI32_ACCTR_A_LCMODE_BMD_MODE3_U32 \
1026    (SI32_ACCTR_A_LCMODE_BMD_MODE3_VALUE << SI32_ACCTR_A_LCMODE_BMD_SHIFT)
1027 
1028 #define SI32_ACCTR_A_LCMODE_LCMD_MASK  0xF0000000
1029 #define SI32_ACCTR_A_LCMODE_LCMD_SHIFT  28
1030 // The LC pulse asserts throughout zone A or zone C with a single-ended comparator
1031 // using the counter and discriminator.
1032 #define SI32_ACCTR_A_LCMODE_LCMD_MODE0_VALUE  0U
1033 #define SI32_ACCTR_A_LCMODE_LCMD_MODE0_U32 \
1034    (SI32_ACCTR_A_LCMODE_LCMD_MODE0_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1035 // The LC pulse asserts throughout zone A or zone C with differential comparators
1036 // using the counter and discriminator.
1037 #define SI32_ACCTR_A_LCMODE_LCMD_MODE1_VALUE  1U
1038 #define SI32_ACCTR_A_LCMODE_LCMD_MODE1_U32 \
1039    (SI32_ACCTR_A_LCMODE_LCMD_MODE1_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1040 // The LC pulse asserts throughout zone A or zone C with a single-ended comparator
1041 // sampling and holding at the end of the LC pulse.
1042 #define SI32_ACCTR_A_LCMODE_LCMD_MODE2_VALUE  2U
1043 #define SI32_ACCTR_A_LCMODE_LCMD_MODE2_U32 \
1044    (SI32_ACCTR_A_LCMODE_LCMD_MODE2_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1045 // The LC pulse asserts throughout zone A or zone C with differential comparators
1046 // sampling and holding at the end of the LC pulse.
1047 #define SI32_ACCTR_A_LCMODE_LCMD_MODE3_VALUE  3U
1048 #define SI32_ACCTR_A_LCMODE_LCMD_MODE3_U32 \
1049    (SI32_ACCTR_A_LCMODE_LCMD_MODE3_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1050 // The LC pulse starts at the beginning of zone A or C and stops with the timer
1051 // with a single-ended comparator using the counter and discriminator.
1052 #define SI32_ACCTR_A_LCMODE_LCMD_MODE4_VALUE  4U
1053 #define SI32_ACCTR_A_LCMODE_LCMD_MODE4_U32 \
1054    (SI32_ACCTR_A_LCMODE_LCMD_MODE4_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1055 // The LC pulse starts at the beginning of zone A or C and stops with the timer
1056 // with differential comparators using the counter and discriminator.
1057 #define SI32_ACCTR_A_LCMODE_LCMD_MODE5_VALUE  5U
1058 #define SI32_ACCTR_A_LCMODE_LCMD_MODE5_U32 \
1059    (SI32_ACCTR_A_LCMODE_LCMD_MODE5_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1060 // The LC pulse starts at the beginning of zone A or C and stops with the timer
1061 // with a single-ended comparator sampling and holding at the end of the LC pulse.
1062 #define SI32_ACCTR_A_LCMODE_LCMD_MODE6_VALUE  6U
1063 #define SI32_ACCTR_A_LCMODE_LCMD_MODE6_U32 \
1064    (SI32_ACCTR_A_LCMODE_LCMD_MODE6_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1065 // The LC pulse starts at the beginning of zone A or C and stops with the timer
1066 // with differential comparators sampling and holding at the end of the LC pulse.
1067 #define SI32_ACCTR_A_LCMODE_LCMD_MODE7_VALUE  7U
1068 #define SI32_ACCTR_A_LCMODE_LCMD_MODE7_U32 \
1069    (SI32_ACCTR_A_LCMODE_LCMD_MODE7_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1070 // The LC pulse starts at beginning of zone A or C and stops with the rising edge
1071 // of the external stop input (STOPx) with a single-ended comparator using the
1072 // counter and discriminator.
1073 #define SI32_ACCTR_A_LCMODE_LCMD_MODE8_VALUE  8U
1074 #define SI32_ACCTR_A_LCMODE_LCMD_MODE8_U32 \
1075    (SI32_ACCTR_A_LCMODE_LCMD_MODE8_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1076 // The LC pulse starts at beginning of zone A or C and stops with the falling edge
1077 // of the external stop input (STOPx) with single-ended comparators using the
1078 // counter and discriminator.
1079 #define SI32_ACCTR_A_LCMODE_LCMD_MODE9_VALUE  9U
1080 #define SI32_ACCTR_A_LCMODE_LCMD_MODE9_U32 \
1081    (SI32_ACCTR_A_LCMODE_LCMD_MODE9_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1082 // The LC pulse starts at beginning of zone A or C and stops with the rising edge
1083 // of the external stop input (STOPx) with a single-ended comparator sampling and
1084 // holding at the end of the LC pulse.
1085 #define SI32_ACCTR_A_LCMODE_LCMD_MODE10_VALUE  10U
1086 #define SI32_ACCTR_A_LCMODE_LCMD_MODE10_U32 \
1087    (SI32_ACCTR_A_LCMODE_LCMD_MODE10_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1088 // The LC pulse starts at beginning of zone A or C and stops with the falling edge
1089 // of the external stop input (STOPx) with single-ended comparators sampling and
1090 // holding at the end of the LC pulse.
1091 #define SI32_ACCTR_A_LCMODE_LCMD_MODE11_VALUE  11U
1092 #define SI32_ACCTR_A_LCMODE_LCMD_MODE11_U32 \
1093    (SI32_ACCTR_A_LCMODE_LCMD_MODE11_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1094 // Do not generate a pulse with a single-ended comparator using the timer and
1095 // discrimintor.
1096 #define SI32_ACCTR_A_LCMODE_LCMD_MODE12_VALUE  12U
1097 #define SI32_ACCTR_A_LCMODE_LCMD_MODE12_U32 \
1098    (SI32_ACCTR_A_LCMODE_LCMD_MODE12_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1099 // Do not generate a pulse with differential comparators using the timer and
1100 // discrimintor.
1101 #define SI32_ACCTR_A_LCMODE_LCMD_MODE13_VALUE  13U
1102 #define SI32_ACCTR_A_LCMODE_LCMD_MODE13_U32 \
1103    (SI32_ACCTR_A_LCMODE_LCMD_MODE13_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1104 // Do not generate a pulse with a single-ended comparator sampling and holding at
1105 // the end of the zone.
1106 #define SI32_ACCTR_A_LCMODE_LCMD_MODE14_VALUE  14U
1107 #define SI32_ACCTR_A_LCMODE_LCMD_MODE14_U32 \
1108    (SI32_ACCTR_A_LCMODE_LCMD_MODE14_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1109 // Do not genreate a pulse with differential comparators sampling and holding at
1110 // the end of the zone.
1111 #define SI32_ACCTR_A_LCMODE_LCMD_MODE15_VALUE  15U
1112 #define SI32_ACCTR_A_LCMODE_LCMD_MODE15_U32 \
1113    (SI32_ACCTR_A_LCMODE_LCMD_MODE15_VALUE << SI32_ACCTR_A_LCMODE_LCMD_SHIFT)
1114 
1115 
1116 
1117 struct SI32_ACCTR_A_LCCLKCONTROL_Struct
1118 {
1119    union
1120    {
1121       struct
1122       {
1123          // LC Oscillator Clock Cycles
1124          volatile uint32_t CLKCYCLES: 12;
1125          // LC Oscillator Calibration Start
1126          volatile uint32_t CLKCAL: 1;
1127                   uint32_t reserved0: 3;
1128          // LC Oscillator Reload Value
1129          volatile uint32_t RELOAD: 12;
1130                   uint32_t reserved1: 4;
1131       };
1132       volatile uint32_t U32;
1133    };
1134 };
1135 
1136 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCYCLES_MASK  0x00000FFF
1137 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCYCLES_SHIFT  0
1138 
1139 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_MASK  0x00001000
1140 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_SHIFT  12
1141 // A calibration operation is not in progress.
1142 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_NOT_IN_PROGRESS_VALUE  0
1143 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_NOT_IN_PROGRESS_U32 \
1144    (SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_NOT_IN_PROGRESS_VALUE << SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_SHIFT)
1145 // Start an oscillator calibration or a calibration operation is in progress.
1146 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_START_VALUE  1
1147 #define SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_START_U32 \
1148    (SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_START_VALUE << SI32_ACCTR_A_LCCLKCONTROL_CLKCAL_SHIFT)
1149 
1150 #define SI32_ACCTR_A_LCCLKCONTROL_RELOAD_MASK  0x0FFF0000
1151 #define SI32_ACCTR_A_LCCLKCONTROL_RELOAD_SHIFT  16
1152 
1153 
1154 
1155 struct SI32_ACCTR_A_LCLIMITS_Struct
1156 {
1157    union
1158    {
1159       struct
1160       {
1161          // LC Counter 0 Minimum Value
1162          volatile uint8_t MIN0;
1163          // LC Counter 0 Maximum Value
1164          volatile uint8_t MAX0;
1165          // LC Counter 1 Minimum Value
1166          volatile uint8_t MIN1;
1167          // LC Counter 1 Maximum Value
1168          volatile uint8_t MAX1;
1169       };
1170       volatile uint32_t U32;
1171    };
1172 };
1173 
1174 #define SI32_ACCTR_A_LCLIMITS_MIN0_MASK  0x000000FF
1175 #define SI32_ACCTR_A_LCLIMITS_MIN0_SHIFT  0
1176 
1177 #define SI32_ACCTR_A_LCLIMITS_MAX0_MASK  0x0000FF00
1178 #define SI32_ACCTR_A_LCLIMITS_MAX0_SHIFT  8
1179 
1180 #define SI32_ACCTR_A_LCLIMITS_MIN1_MASK  0x00FF0000
1181 #define SI32_ACCTR_A_LCLIMITS_MIN1_SHIFT  16
1182 
1183 #define SI32_ACCTR_A_LCLIMITS_MAX1_MASK  0xFF000000
1184 #define SI32_ACCTR_A_LCLIMITS_MAX1_SHIFT  24
1185 
1186 
1187 
1188 struct SI32_ACCTR_A_LCCOUNT_Struct
1189 {
1190    union
1191    {
1192       struct
1193       {
1194          // LC Counter 0
1195          volatile uint8_t LCCOUNT0;
1196          // LC Counter 0 Discriminator
1197          volatile uint8_t CD0;
1198          // LC Counter 1
1199          volatile uint8_t LCCOUNT1;
1200          // LC Counter 1 Discriminator
1201          volatile uint8_t CD1;
1202       };
1203       volatile uint32_t U32;
1204    };
1205 };
1206 
1207 #define SI32_ACCTR_A_LCCOUNT_LCCOUNT0_MASK  0x000000FF
1208 #define SI32_ACCTR_A_LCCOUNT_LCCOUNT0_SHIFT  0
1209 
1210 #define SI32_ACCTR_A_LCCOUNT_CD0_MASK  0x0000FF00
1211 #define SI32_ACCTR_A_LCCOUNT_CD0_SHIFT  8
1212 
1213 #define SI32_ACCTR_A_LCCOUNT_LCCOUNT1_MASK  0x00FF0000
1214 #define SI32_ACCTR_A_LCCOUNT_LCCOUNT1_SHIFT  16
1215 
1216 #define SI32_ACCTR_A_LCCOUNT_CD1_MASK  0xFF000000
1217 #define SI32_ACCTR_A_LCCOUNT_CD1_SHIFT  24
1218 
1219 
1220 
1221 struct SI32_ACCTR_A_DBCONFIG_Struct
1222 {
1223    union
1224    {
1225       struct
1226       {
1227          // Integrator Low Debounce
1228          volatile uint8_t LDBTH;
1229          // Integrator High Debounce
1230          volatile uint8_t HDBTH;
1231          // PC Integrator Disconnect Enable
1232          volatile uint32_t INTEGDCEN: 1;
1233          // PC Integrator 0 Output
1234          volatile uint32_t INTEG0: 1;
1235          // PC Integrator 1 Output
1236          volatile uint32_t INTEG1: 1;
1237                   uint32_t reserved0: 13;
1238       };
1239       volatile uint32_t U32;
1240    };
1241 };
1242 
1243 #define SI32_ACCTR_A_DBCONFIG_LDBTH_MASK  0x000000FF
1244 #define SI32_ACCTR_A_DBCONFIG_LDBTH_SHIFT  0
1245 
1246 #define SI32_ACCTR_A_DBCONFIG_HDBTH_MASK  0x0000FF00
1247 #define SI32_ACCTR_A_DBCONFIG_HDBTH_SHIFT  8
1248 
1249 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_MASK  0x00010000
1250 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_SHIFT  16
1251 // Connect integrator to 24 bit counter state machine logic.
1252 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_DISABLED_VALUE  0
1253 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_DISABLED_U32 \
1254    (SI32_ACCTR_A_DBCONFIG_INTEGDCEN_DISABLED_VALUE << SI32_ACCTR_A_DBCONFIG_INTEGDCEN_SHIFT)
1255 // Disconnect the integrators from the IN0 and IN1 inputs.
1256 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_ENABLED_VALUE  1
1257 #define SI32_ACCTR_A_DBCONFIG_INTEGDCEN_ENABLED_U32 \
1258    (SI32_ACCTR_A_DBCONFIG_INTEGDCEN_ENABLED_VALUE << SI32_ACCTR_A_DBCONFIG_INTEGDCEN_SHIFT)
1259 
1260 #define SI32_ACCTR_A_DBCONFIG_INTEG0_MASK  0x00020000
1261 #define SI32_ACCTR_A_DBCONFIG_INTEG0_SHIFT  17
1262 // The integrator 0 output is low.
1263 #define SI32_ACCTR_A_DBCONFIG_INTEG0_LOW_VALUE  0
1264 #define SI32_ACCTR_A_DBCONFIG_INTEG0_LOW_U32 \
1265    (SI32_ACCTR_A_DBCONFIG_INTEG0_LOW_VALUE << SI32_ACCTR_A_DBCONFIG_INTEG0_SHIFT)
1266 // The integrator 0 output is high.
1267 #define SI32_ACCTR_A_DBCONFIG_INTEG0_HIGH_VALUE  1
1268 #define SI32_ACCTR_A_DBCONFIG_INTEG0_HIGH_U32 \
1269    (SI32_ACCTR_A_DBCONFIG_INTEG0_HIGH_VALUE << SI32_ACCTR_A_DBCONFIG_INTEG0_SHIFT)
1270 
1271 #define SI32_ACCTR_A_DBCONFIG_INTEG1_MASK  0x00040000
1272 #define SI32_ACCTR_A_DBCONFIG_INTEG1_SHIFT  18
1273 // The integrator 1 output is low.
1274 #define SI32_ACCTR_A_DBCONFIG_INTEG1_LOW_VALUE  0
1275 #define SI32_ACCTR_A_DBCONFIG_INTEG1_LOW_U32 \
1276    (SI32_ACCTR_A_DBCONFIG_INTEG1_LOW_VALUE << SI32_ACCTR_A_DBCONFIG_INTEG1_SHIFT)
1277 // The integrator 1 output is high.
1278 #define SI32_ACCTR_A_DBCONFIG_INTEG1_HIGH_VALUE  1
1279 #define SI32_ACCTR_A_DBCONFIG_INTEG1_HIGH_U32 \
1280    (SI32_ACCTR_A_DBCONFIG_INTEG1_HIGH_VALUE << SI32_ACCTR_A_DBCONFIG_INTEG1_SHIFT)
1281 
1282 
1283 
1284 struct SI32_ACCTR_A_COUNT0_Struct
1285 {
1286    union
1287    {
1288       struct
1289       {
1290          // Pulse Counter 0
1291          volatile uint32_t COUNT0_BITS: 24;
1292                   uint32_t reserved0: 8;
1293       };
1294       volatile uint32_t U32;
1295    };
1296 };
1297 
1298 #define SI32_ACCTR_A_COUNT0_COUNT0_MASK  0x00FFFFFF
1299 #define SI32_ACCTR_A_COUNT0_COUNT0_SHIFT  0
1300 
1301 
1302 
1303 struct SI32_ACCTR_A_COUNT1_Struct
1304 {
1305    union
1306    {
1307       struct
1308       {
1309          // Pulse Counter 1
1310          volatile uint32_t COUNT1_BITS: 24;
1311                   uint32_t reserved0: 8;
1312       };
1313       volatile uint32_t U32;
1314    };
1315 };
1316 
1317 #define SI32_ACCTR_A_COUNT1_COUNT1_MASK  0x00FFFFFF
1318 #define SI32_ACCTR_A_COUNT1_COUNT1_SHIFT  0
1319 
1320 
1321 
1322 struct SI32_ACCTR_A_COMP0_Struct
1323 {
1324    union
1325    {
1326       struct
1327       {
1328          // Pulse Counter Comparator 0 Threshold
1329          volatile uint32_t COMP0_BITS: 24;
1330                   uint32_t reserved0: 8;
1331       };
1332       volatile uint32_t U32;
1333    };
1334 };
1335 
1336 #define SI32_ACCTR_A_COMP0_COMP0_MASK  0x00FFFFFF
1337 #define SI32_ACCTR_A_COMP0_COMP0_SHIFT  0
1338 
1339 
1340 
1341 struct SI32_ACCTR_A_COMP1_Struct
1342 {
1343    union
1344    {
1345       struct
1346       {
1347          // Pulse Counter Comparator 1 Threshold
1348          volatile uint32_t COMP1_BITS: 24;
1349                   uint32_t reserved0: 8;
1350       };
1351       volatile uint32_t U32;
1352    };
1353 };
1354 
1355 #define SI32_ACCTR_A_COMP1_COMP1_MASK  0x00FFFFFF
1356 #define SI32_ACCTR_A_COMP1_COMP1_SHIFT  0
1357 
1358 
1359 
1360 struct SI32_ACCTR_A_STATUS_Struct
1361 {
1362    union
1363    {
1364       struct
1365       {
1366          // Direction Change Interrupt Flag
1367          volatile uint32_t DIRCHGI: 1;
1368          // Counter Overflow Interrupt Flag
1369          volatile uint32_t OVFI: 1;
1370          // Digital Comparator 0 Interrupt Flag
1371          volatile uint32_t CMP0I: 1;
1372          // Digital Comparator 1 Interrupt Flag
1373          volatile uint32_t CMP1I: 1;
1374          // Integrator Transition Interrupt Flag
1375          volatile uint32_t TRANSI: 1;
1376          // Quadrature Error Interrupt Flag
1377          volatile uint32_t QERRI: 1;
1378          // Flutter Stop Interrupt Flag
1379          volatile uint32_t FLSTOPI: 1;
1380          // Flutter Start Interrupt Flag
1381          volatile uint32_t FLSTARTI: 1;
1382          // Direction Change Interrupt Enable
1383          volatile uint32_t DIRCHGIEN: 1;
1384          // Counter Overflow Interrupt Enable
1385          volatile uint32_t OVFIEN: 1;
1386          // Digital Comparator 0 Interrupt Enable
1387          volatile uint32_t CMP0IEN: 1;
1388          // Digital Comparator 1 Interrupt Enable
1389          volatile uint32_t CMP1IEN: 1;
1390          // Integrator Transition Interrupt Enable
1391          volatile uint32_t TRANSIEN: 1;
1392          // Quadrature Error Interrupt Enable
1393          volatile uint32_t QERRIEN: 1;
1394          // Flutter Stop Interrupt Enable
1395          volatile uint32_t FLSTOPIEN: 1;
1396          // Flutter Start Interrupt Enable
1397          volatile uint32_t FLSTARTIEN: 1;
1398          // Integrator 0 Output
1399          volatile uint32_t IN0: 1;
1400          // Integrator 1 Output
1401          volatile uint32_t IN1: 1;
1402          // Previous Integrator 0 Output
1403          volatile uint32_t IN0PREV: 1;
1404          // Previous Integrator 1 Output
1405          volatile uint32_t IN1PREV: 1;
1406          // Pulse Counter State
1407          volatile uint32_t STATE: 2;
1408          // Direction Flag
1409          volatile uint32_t DIRF: 1;
1410          // Flutter Detected Flag
1411          volatile uint32_t FLF: 1;
1412          // Direction History
1413          volatile uint32_t DIRHIST: 4;
1414          // Comparator 0 Output
1415          volatile uint32_t CMP0OUT: 1;
1416          // Comparator 1 Output
1417          volatile uint32_t CMP1OUT: 1;
1418                   uint32_t reserved0: 2;
1419       };
1420       volatile uint32_t U32;
1421    };
1422 };
1423 
1424 #define SI32_ACCTR_A_STATUS_DIRCHGI_MASK  0x00000001
1425 #define SI32_ACCTR_A_STATUS_DIRCHGI_SHIFT  0
1426 // A direction change did not occur.
1427 #define SI32_ACCTR_A_STATUS_DIRCHGI_NOT_SET_VALUE  0
1428 #define SI32_ACCTR_A_STATUS_DIRCHGI_NOT_SET_U32 \
1429    (SI32_ACCTR_A_STATUS_DIRCHGI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_DIRCHGI_SHIFT)
1430 // A direction change occurred.
1431 #define SI32_ACCTR_A_STATUS_DIRCHGI_SET_VALUE  1
1432 #define SI32_ACCTR_A_STATUS_DIRCHGI_SET_U32 \
1433    (SI32_ACCTR_A_STATUS_DIRCHGI_SET_VALUE << SI32_ACCTR_A_STATUS_DIRCHGI_SHIFT)
1434 
1435 #define SI32_ACCTR_A_STATUS_OVFI_MASK  0x00000002
1436 #define SI32_ACCTR_A_STATUS_OVFI_SHIFT  1
1437 // Neither of the counters overflowed.
1438 #define SI32_ACCTR_A_STATUS_OVFI_NOT_SET_VALUE  0
1439 #define SI32_ACCTR_A_STATUS_OVFI_NOT_SET_U32 \
1440    (SI32_ACCTR_A_STATUS_OVFI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_OVFI_SHIFT)
1441 // One of the counters overflowed.
1442 #define SI32_ACCTR_A_STATUS_OVFI_SET_VALUE  1
1443 #define SI32_ACCTR_A_STATUS_OVFI_SET_U32 \
1444    (SI32_ACCTR_A_STATUS_OVFI_SET_VALUE << SI32_ACCTR_A_STATUS_OVFI_SHIFT)
1445 
1446 #define SI32_ACCTR_A_STATUS_CMP0I_MASK  0x00000004
1447 #define SI32_ACCTR_A_STATUS_CMP0I_SHIFT  2
1448 // A digital comparator 0 and counter 0 match did not occur.
1449 #define SI32_ACCTR_A_STATUS_CMP0I_NOT_SET_VALUE  0
1450 #define SI32_ACCTR_A_STATUS_CMP0I_NOT_SET_U32 \
1451    (SI32_ACCTR_A_STATUS_CMP0I_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_CMP0I_SHIFT)
1452 // A digital comparator 0 and counter 0 match occurred.
1453 #define SI32_ACCTR_A_STATUS_CMP0I_SET_VALUE  1
1454 #define SI32_ACCTR_A_STATUS_CMP0I_SET_U32 \
1455    (SI32_ACCTR_A_STATUS_CMP0I_SET_VALUE << SI32_ACCTR_A_STATUS_CMP0I_SHIFT)
1456 
1457 #define SI32_ACCTR_A_STATUS_CMP1I_MASK  0x00000008
1458 #define SI32_ACCTR_A_STATUS_CMP1I_SHIFT  3
1459 // A digital comparator 1 and counter 1 match did not occur.
1460 #define SI32_ACCTR_A_STATUS_CMP1I_NOT_SET_VALUE  0
1461 #define SI32_ACCTR_A_STATUS_CMP1I_NOT_SET_U32 \
1462    (SI32_ACCTR_A_STATUS_CMP1I_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_CMP1I_SHIFT)
1463 // A digital comparator 1 and counter 1 match occurred.
1464 #define SI32_ACCTR_A_STATUS_CMP1I_SET_VALUE  1
1465 #define SI32_ACCTR_A_STATUS_CMP1I_SET_U32 \
1466    (SI32_ACCTR_A_STATUS_CMP1I_SET_VALUE << SI32_ACCTR_A_STATUS_CMP1I_SHIFT)
1467 
1468 #define SI32_ACCTR_A_STATUS_TRANSI_MASK  0x00000010
1469 #define SI32_ACCTR_A_STATUS_TRANSI_SHIFT  4
1470 // An integrator output transition did not occur.
1471 #define SI32_ACCTR_A_STATUS_TRANSI_NOT_SET_VALUE  0
1472 #define SI32_ACCTR_A_STATUS_TRANSI_NOT_SET_U32 \
1473    (SI32_ACCTR_A_STATUS_TRANSI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_TRANSI_SHIFT)
1474 // An integrator output transition occurred.
1475 #define SI32_ACCTR_A_STATUS_TRANSI_SET_VALUE  1
1476 #define SI32_ACCTR_A_STATUS_TRANSI_SET_U32 \
1477    (SI32_ACCTR_A_STATUS_TRANSI_SET_VALUE << SI32_ACCTR_A_STATUS_TRANSI_SHIFT)
1478 
1479 #define SI32_ACCTR_A_STATUS_QERRI_MASK  0x00000020
1480 #define SI32_ACCTR_A_STATUS_QERRI_SHIFT  5
1481 // A quadrature error did not occur.
1482 #define SI32_ACCTR_A_STATUS_QERRI_NOT_SET_VALUE  0
1483 #define SI32_ACCTR_A_STATUS_QERRI_NOT_SET_U32 \
1484    (SI32_ACCTR_A_STATUS_QERRI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_QERRI_SHIFT)
1485 // A quadrature error occurred.
1486 #define SI32_ACCTR_A_STATUS_QERRI_SET_VALUE  1
1487 #define SI32_ACCTR_A_STATUS_QERRI_SET_U32 \
1488    (SI32_ACCTR_A_STATUS_QERRI_SET_VALUE << SI32_ACCTR_A_STATUS_QERRI_SHIFT)
1489 
1490 #define SI32_ACCTR_A_STATUS_FLSTOPI_MASK  0x00000040
1491 #define SI32_ACCTR_A_STATUS_FLSTOPI_SHIFT  6
1492 // A flutter detection end event did not occur.
1493 #define SI32_ACCTR_A_STATUS_FLSTOPI_NOT_SET_VALUE  0
1494 #define SI32_ACCTR_A_STATUS_FLSTOPI_NOT_SET_U32 \
1495    (SI32_ACCTR_A_STATUS_FLSTOPI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_FLSTOPI_SHIFT)
1496 // A flutter detection end event occurred.
1497 #define SI32_ACCTR_A_STATUS_FLSTOPI_SET_VALUE  1
1498 #define SI32_ACCTR_A_STATUS_FLSTOPI_SET_U32 \
1499    (SI32_ACCTR_A_STATUS_FLSTOPI_SET_VALUE << SI32_ACCTR_A_STATUS_FLSTOPI_SHIFT)
1500 
1501 #define SI32_ACCTR_A_STATUS_FLSTARTI_MASK  0x00000080
1502 #define SI32_ACCTR_A_STATUS_FLSTARTI_SHIFT  7
1503 // A flutter detection start event did not occur.
1504 #define SI32_ACCTR_A_STATUS_FLSTARTI_NOT_SET_VALUE  0
1505 #define SI32_ACCTR_A_STATUS_FLSTARTI_NOT_SET_U32 \
1506    (SI32_ACCTR_A_STATUS_FLSTARTI_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_FLSTARTI_SHIFT)
1507 // A flutter detection start event occurred.
1508 #define SI32_ACCTR_A_STATUS_FLSTARTI_SET_VALUE  1
1509 #define SI32_ACCTR_A_STATUS_FLSTARTI_SET_U32 \
1510    (SI32_ACCTR_A_STATUS_FLSTARTI_SET_VALUE << SI32_ACCTR_A_STATUS_FLSTARTI_SHIFT)
1511 
1512 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_MASK  0x00000100
1513 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_SHIFT  8
1514 // Disable direction change as an interrupt or wake up source.
1515 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_DISABLED_VALUE  0
1516 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_DISABLED_U32 \
1517    (SI32_ACCTR_A_STATUS_DIRCHGIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_DIRCHGIEN_SHIFT)
1518 // Enable direction change as an interrupt or wake up source.
1519 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_ENABLED_VALUE  1
1520 #define SI32_ACCTR_A_STATUS_DIRCHGIEN_ENABLED_U32 \
1521    (SI32_ACCTR_A_STATUS_DIRCHGIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_DIRCHGIEN_SHIFT)
1522 
1523 #define SI32_ACCTR_A_STATUS_OVFIEN_MASK  0x00000200
1524 #define SI32_ACCTR_A_STATUS_OVFIEN_SHIFT  9
1525 // Disable counter overflows as an interrupt or wake up source.
1526 #define SI32_ACCTR_A_STATUS_OVFIEN_DISABLED_VALUE  0
1527 #define SI32_ACCTR_A_STATUS_OVFIEN_DISABLED_U32 \
1528    (SI32_ACCTR_A_STATUS_OVFIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_OVFIEN_SHIFT)
1529 // Enable counter overflows as an interrupt or wake up source.
1530 #define SI32_ACCTR_A_STATUS_OVFIEN_ENABLED_VALUE  1
1531 #define SI32_ACCTR_A_STATUS_OVFIEN_ENABLED_U32 \
1532    (SI32_ACCTR_A_STATUS_OVFIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_OVFIEN_SHIFT)
1533 
1534 #define SI32_ACCTR_A_STATUS_CMP0IEN_MASK  0x00000400
1535 #define SI32_ACCTR_A_STATUS_CMP0IEN_SHIFT  10
1536 // Disable comparator 0 as an interrupt or wake up source.
1537 #define SI32_ACCTR_A_STATUS_CMP0IEN_DISABLED_VALUE  0
1538 #define SI32_ACCTR_A_STATUS_CMP0IEN_DISABLED_U32 \
1539    (SI32_ACCTR_A_STATUS_CMP0IEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_CMP0IEN_SHIFT)
1540 // Enable comparator 0 as an interrupt or wake up source.
1541 #define SI32_ACCTR_A_STATUS_CMP0IEN_ENABLED_VALUE  1
1542 #define SI32_ACCTR_A_STATUS_CMP0IEN_ENABLED_U32 \
1543    (SI32_ACCTR_A_STATUS_CMP0IEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_CMP0IEN_SHIFT)
1544 
1545 #define SI32_ACCTR_A_STATUS_CMP1IEN_MASK  0x00000800
1546 #define SI32_ACCTR_A_STATUS_CMP1IEN_SHIFT  11
1547 // Disable comparator 1 as an interrupt or wake up source.
1548 #define SI32_ACCTR_A_STATUS_CMP1IEN_DISABLED_VALUE  0
1549 #define SI32_ACCTR_A_STATUS_CMP1IEN_DISABLED_U32 \
1550    (SI32_ACCTR_A_STATUS_CMP1IEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_CMP1IEN_SHIFT)
1551 // Enable comparator 1 as an interrupt or wake up source.
1552 #define SI32_ACCTR_A_STATUS_CMP1IEN_ENABLED_VALUE  1
1553 #define SI32_ACCTR_A_STATUS_CMP1IEN_ENABLED_U32 \
1554    (SI32_ACCTR_A_STATUS_CMP1IEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_CMP1IEN_SHIFT)
1555 
1556 #define SI32_ACCTR_A_STATUS_TRANSIEN_MASK  0x00001000
1557 #define SI32_ACCTR_A_STATUS_TRANSIEN_SHIFT  12
1558 // Disable integrator transitions as an interrupt or wake up source.
1559 #define SI32_ACCTR_A_STATUS_TRANSIEN_DISABLED_VALUE  0
1560 #define SI32_ACCTR_A_STATUS_TRANSIEN_DISABLED_U32 \
1561    (SI32_ACCTR_A_STATUS_TRANSIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_TRANSIEN_SHIFT)
1562 // Enable integrator transitions as an interrupt or wake up source.
1563 #define SI32_ACCTR_A_STATUS_TRANSIEN_ENABLED_VALUE  1
1564 #define SI32_ACCTR_A_STATUS_TRANSIEN_ENABLED_U32 \
1565    (SI32_ACCTR_A_STATUS_TRANSIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_TRANSIEN_SHIFT)
1566 
1567 #define SI32_ACCTR_A_STATUS_QERRIEN_MASK  0x00002000
1568 #define SI32_ACCTR_A_STATUS_QERRIEN_SHIFT  13
1569 // Disable quadrature error as an interrupt or wake up source.
1570 #define SI32_ACCTR_A_STATUS_QERRIEN_DISABLED_VALUE  0
1571 #define SI32_ACCTR_A_STATUS_QERRIEN_DISABLED_U32 \
1572    (SI32_ACCTR_A_STATUS_QERRIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_QERRIEN_SHIFT)
1573 // Enable quadrature error as an interrupt or wake up source.
1574 #define SI32_ACCTR_A_STATUS_QERRIEN_ENABLED_VALUE  1
1575 #define SI32_ACCTR_A_STATUS_QERRIEN_ENABLED_U32 \
1576    (SI32_ACCTR_A_STATUS_QERRIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_QERRIEN_SHIFT)
1577 
1578 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_MASK  0x00004000
1579 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_SHIFT  14
1580 // Disable flutter detection end events as an interrupt or wake up source.
1581 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_DISABLED_VALUE  0
1582 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_DISABLED_U32 \
1583    (SI32_ACCTR_A_STATUS_FLSTOPIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_FLSTOPIEN_SHIFT)
1584 // Enable flutter detection end events as an interrupt or wake up source.
1585 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_ENABLED_VALUE  1
1586 #define SI32_ACCTR_A_STATUS_FLSTOPIEN_ENABLED_U32 \
1587    (SI32_ACCTR_A_STATUS_FLSTOPIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_FLSTOPIEN_SHIFT)
1588 
1589 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_MASK  0x00008000
1590 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_SHIFT  15
1591 // Disable flutter detection start events as an interrupt or wake up source.
1592 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_DISABLED_VALUE  0
1593 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_DISABLED_U32 \
1594    (SI32_ACCTR_A_STATUS_FLSTARTIEN_DISABLED_VALUE << SI32_ACCTR_A_STATUS_FLSTARTIEN_SHIFT)
1595 // Enable flutter detection start events as an interrupt or wake up source.
1596 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_ENABLED_VALUE  1
1597 #define SI32_ACCTR_A_STATUS_FLSTARTIEN_ENABLED_U32 \
1598    (SI32_ACCTR_A_STATUS_FLSTARTIEN_ENABLED_VALUE << SI32_ACCTR_A_STATUS_FLSTARTIEN_SHIFT)
1599 
1600 #define SI32_ACCTR_A_STATUS_IN0_MASK  0x00010000
1601 #define SI32_ACCTR_A_STATUS_IN0_SHIFT  16
1602 // The integrator 0 output is low.
1603 #define SI32_ACCTR_A_STATUS_IN0_LOW_VALUE  0
1604 #define SI32_ACCTR_A_STATUS_IN0_LOW_U32 \
1605    (SI32_ACCTR_A_STATUS_IN0_LOW_VALUE << SI32_ACCTR_A_STATUS_IN0_SHIFT)
1606 // The integrator 0 output is high.
1607 #define SI32_ACCTR_A_STATUS_IN0_HIGH_VALUE  1
1608 #define SI32_ACCTR_A_STATUS_IN0_HIGH_U32 \
1609    (SI32_ACCTR_A_STATUS_IN0_HIGH_VALUE << SI32_ACCTR_A_STATUS_IN0_SHIFT)
1610 
1611 #define SI32_ACCTR_A_STATUS_IN1_MASK  0x00020000
1612 #define SI32_ACCTR_A_STATUS_IN1_SHIFT  17
1613 // The integrator 1 output is low.
1614 #define SI32_ACCTR_A_STATUS_IN1_LOW_VALUE  0
1615 #define SI32_ACCTR_A_STATUS_IN1_LOW_U32 \
1616    (SI32_ACCTR_A_STATUS_IN1_LOW_VALUE << SI32_ACCTR_A_STATUS_IN1_SHIFT)
1617 // The integrator 1 output is high.
1618 #define SI32_ACCTR_A_STATUS_IN1_HIGH_VALUE  1
1619 #define SI32_ACCTR_A_STATUS_IN1_HIGH_U32 \
1620    (SI32_ACCTR_A_STATUS_IN1_HIGH_VALUE << SI32_ACCTR_A_STATUS_IN1_SHIFT)
1621 
1622 #define SI32_ACCTR_A_STATUS_IN0PREV_MASK  0x00040000
1623 #define SI32_ACCTR_A_STATUS_IN0PREV_SHIFT  18
1624 // The previous integrator 0 output was low.
1625 #define SI32_ACCTR_A_STATUS_IN0PREV_LOW_VALUE  0
1626 #define SI32_ACCTR_A_STATUS_IN0PREV_LOW_U32 \
1627    (SI32_ACCTR_A_STATUS_IN0PREV_LOW_VALUE << SI32_ACCTR_A_STATUS_IN0PREV_SHIFT)
1628 // The previous integrator 0 output was high.
1629 #define SI32_ACCTR_A_STATUS_IN0PREV_HIGH_VALUE  1
1630 #define SI32_ACCTR_A_STATUS_IN0PREV_HIGH_U32 \
1631    (SI32_ACCTR_A_STATUS_IN0PREV_HIGH_VALUE << SI32_ACCTR_A_STATUS_IN0PREV_SHIFT)
1632 
1633 #define SI32_ACCTR_A_STATUS_IN1PREV_MASK  0x00080000
1634 #define SI32_ACCTR_A_STATUS_IN1PREV_SHIFT  19
1635 // The previous integrator 1 output was low.
1636 #define SI32_ACCTR_A_STATUS_IN1PREV_LOW_VALUE  0
1637 #define SI32_ACCTR_A_STATUS_IN1PREV_LOW_U32 \
1638    (SI32_ACCTR_A_STATUS_IN1PREV_LOW_VALUE << SI32_ACCTR_A_STATUS_IN1PREV_SHIFT)
1639 // The previous integrator 1 output was high.
1640 #define SI32_ACCTR_A_STATUS_IN1PREV_HIGH_VALUE  1
1641 #define SI32_ACCTR_A_STATUS_IN1PREV_HIGH_U32 \
1642    (SI32_ACCTR_A_STATUS_IN1PREV_HIGH_VALUE << SI32_ACCTR_A_STATUS_IN1PREV_SHIFT)
1643 
1644 #define SI32_ACCTR_A_STATUS_STATE_MASK  0x00300000
1645 #define SI32_ACCTR_A_STATUS_STATE_SHIFT  20
1646 // The pulse counter is in state 0.
1647 #define SI32_ACCTR_A_STATUS_STATE_ST0_VALUE  0
1648 #define SI32_ACCTR_A_STATUS_STATE_ST0_U32 \
1649    (SI32_ACCTR_A_STATUS_STATE_ST0_VALUE << SI32_ACCTR_A_STATUS_STATE_SHIFT)
1650 // The pulse counter is in state 1.
1651 #define SI32_ACCTR_A_STATUS_STATE_ST1_VALUE  1
1652 #define SI32_ACCTR_A_STATUS_STATE_ST1_U32 \
1653    (SI32_ACCTR_A_STATUS_STATE_ST1_VALUE << SI32_ACCTR_A_STATUS_STATE_SHIFT)
1654 // The pulse counter is in state 2.
1655 #define SI32_ACCTR_A_STATUS_STATE_ST2_VALUE  2
1656 #define SI32_ACCTR_A_STATUS_STATE_ST2_U32 \
1657    (SI32_ACCTR_A_STATUS_STATE_ST2_VALUE << SI32_ACCTR_A_STATUS_STATE_SHIFT)
1658 // The pulse counter is in state 3.
1659 #define SI32_ACCTR_A_STATUS_STATE_ST3_VALUE  3
1660 #define SI32_ACCTR_A_STATUS_STATE_ST3_U32 \
1661    (SI32_ACCTR_A_STATUS_STATE_ST3_VALUE << SI32_ACCTR_A_STATUS_STATE_SHIFT)
1662 
1663 #define SI32_ACCTR_A_STATUS_DIRF_MASK  0x00400000
1664 #define SI32_ACCTR_A_STATUS_DIRF_SHIFT  22
1665 // The current direction is counter-clockwise.
1666 #define SI32_ACCTR_A_STATUS_DIRF_COUNTER_CLOCKWISE_VALUE  0
1667 #define SI32_ACCTR_A_STATUS_DIRF_COUNTER_CLOCKWISE_U32 \
1668    (SI32_ACCTR_A_STATUS_DIRF_COUNTER_CLOCKWISE_VALUE << SI32_ACCTR_A_STATUS_DIRF_SHIFT)
1669 // The current direction is clockwise.
1670 #define SI32_ACCTR_A_STATUS_DIRF_CLOCKWISE_VALUE  1
1671 #define SI32_ACCTR_A_STATUS_DIRF_CLOCKWISE_U32 \
1672    (SI32_ACCTR_A_STATUS_DIRF_CLOCKWISE_VALUE << SI32_ACCTR_A_STATUS_DIRF_SHIFT)
1673 
1674 #define SI32_ACCTR_A_STATUS_FLF_MASK  0x00800000
1675 #define SI32_ACCTR_A_STATUS_FLF_SHIFT  23
1676 // The switch operates normally.
1677 #define SI32_ACCTR_A_STATUS_FLF_NOT_SET_VALUE  0
1678 #define SI32_ACCTR_A_STATUS_FLF_NOT_SET_U32 \
1679    (SI32_ACCTR_A_STATUS_FLF_NOT_SET_VALUE << SI32_ACCTR_A_STATUS_FLF_SHIFT)
1680 // A flutter event was detected.
1681 #define SI32_ACCTR_A_STATUS_FLF_SET_VALUE  1
1682 #define SI32_ACCTR_A_STATUS_FLF_SET_U32 \
1683    (SI32_ACCTR_A_STATUS_FLF_SET_VALUE << SI32_ACCTR_A_STATUS_FLF_SHIFT)
1684 
1685 #define SI32_ACCTR_A_STATUS_DIRHIST_MASK  0x0F000000
1686 #define SI32_ACCTR_A_STATUS_DIRHIST_SHIFT  24
1687 
1688 #define SI32_ACCTR_A_STATUS_CMP0OUT_MASK  0x10000000
1689 #define SI32_ACCTR_A_STATUS_CMP0OUT_SHIFT  28
1690 // The output of comparator 0 is low.
1691 #define SI32_ACCTR_A_STATUS_CMP0OUT_LOW_VALUE  0
1692 #define SI32_ACCTR_A_STATUS_CMP0OUT_LOW_U32 \
1693    (SI32_ACCTR_A_STATUS_CMP0OUT_LOW_VALUE << SI32_ACCTR_A_STATUS_CMP0OUT_SHIFT)
1694 // The output of comparator 0 is high.
1695 #define SI32_ACCTR_A_STATUS_CMP0OUT_HIGH_VALUE  1
1696 #define SI32_ACCTR_A_STATUS_CMP0OUT_HIGH_U32 \
1697    (SI32_ACCTR_A_STATUS_CMP0OUT_HIGH_VALUE << SI32_ACCTR_A_STATUS_CMP0OUT_SHIFT)
1698 
1699 #define SI32_ACCTR_A_STATUS_CMP1OUT_MASK  0x20000000
1700 #define SI32_ACCTR_A_STATUS_CMP1OUT_SHIFT  29
1701 // The output of comparator 1 is low.
1702 #define SI32_ACCTR_A_STATUS_CMP1OUT_LOW_VALUE  0
1703 #define SI32_ACCTR_A_STATUS_CMP1OUT_LOW_U32 \
1704    (SI32_ACCTR_A_STATUS_CMP1OUT_LOW_VALUE << SI32_ACCTR_A_STATUS_CMP1OUT_SHIFT)
1705 // The output of comparator1 is high.
1706 #define SI32_ACCTR_A_STATUS_CMP1OUT_HIGH_VALUE  1
1707 #define SI32_ACCTR_A_STATUS_CMP1OUT_HIGH_U32 \
1708    (SI32_ACCTR_A_STATUS_CMP1OUT_HIGH_VALUE << SI32_ACCTR_A_STATUS_CMP1OUT_SHIFT)
1709 
1710 
1711 
1712 struct SI32_ACCTR_A_DEBUGEN_Struct
1713 {
1714    union
1715    {
1716       struct
1717       {
1718                   uint32_t reserved0: 14;
1719          // Debug Output Enable
1720          volatile uint32_t DBGOEN: 1;
1721                   uint32_t reserved1: 17;
1722       };
1723       volatile uint32_t U32;
1724    };
1725 };
1726 
1727 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_MASK  0x00004000
1728 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_SHIFT  14
1729 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_DISABLED_VALUE  0
1730 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_DISABLED_U32 \
1731    (SI32_ACCTR_A_DEBUGEN_DBGOEN_DISABLED_VALUE << SI32_ACCTR_A_DEBUGEN_DBGOEN_SHIFT)
1732 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_ENABLED_VALUE  1
1733 #define SI32_ACCTR_A_DEBUGEN_DBGOEN_ENABLED_U32 \
1734    (SI32_ACCTR_A_DEBUGEN_DBGOEN_ENABLED_VALUE << SI32_ACCTR_A_DEBUGEN_DBGOEN_SHIFT)
1735 
1736 
1737 
1738 typedef struct SI32_ACCTR_A_Struct
1739 {
1740    struct SI32_ACCTR_A_CONFIG_Struct               CONFIG         ; // Base Address + 0x0
1741    uint32_t                                        reserved0;
1742    uint32_t                                        reserved1;
1743    uint32_t                                        reserved2;
1744    struct SI32_ACCTR_A_CONTROL_Struct              CONTROL        ; // Base Address + 0x10
1745    uint32_t                                        reserved3;
1746    uint32_t                                        reserved4;
1747    uint32_t                                        reserved5;
1748    struct SI32_ACCTR_A_LCCONFIG_Struct             LCCONFIG       ; // Base Address + 0x20
1749    uint32_t                                        reserved6;
1750    uint32_t                                        reserved7;
1751    uint32_t                                        reserved8;
1752    struct SI32_ACCTR_A_TIMING_Struct               TIMING         ; // Base Address + 0x30
1753    uint32_t                                        reserved9;
1754    uint32_t                                        reserved10;
1755    uint32_t                                        reserved11;
1756    struct SI32_ACCTR_A_LCMODE_Struct               LCMODE         ; // Base Address + 0x40
1757    uint32_t                                        reserved12;
1758    uint32_t                                        reserved13;
1759    uint32_t                                        reserved14;
1760    struct SI32_ACCTR_A_LCCLKCONTROL_Struct         LCCLKCONTROL   ; // Base Address + 0x50
1761    uint32_t                                        reserved15;
1762    uint32_t                                        reserved16;
1763    uint32_t                                        reserved17;
1764    struct SI32_ACCTR_A_LCLIMITS_Struct             LCLIMITS       ; // Base Address + 0x60
1765    uint32_t                                        reserved18;
1766    uint32_t                                        reserved19;
1767    uint32_t                                        reserved20;
1768    struct SI32_ACCTR_A_LCCOUNT_Struct              LCCOUNT        ; // Base Address + 0x70
1769    uint32_t                                        reserved21;
1770    uint32_t                                        reserved22;
1771    uint32_t                                        reserved23;
1772    struct SI32_ACCTR_A_DBCONFIG_Struct             DBCONFIG       ; // Base Address + 0x80
1773    uint32_t                                        reserved24;
1774    uint32_t                                        reserved25;
1775    uint32_t                                        reserved26;
1776    struct SI32_ACCTR_A_COUNT0_Struct               COUNT0         ; // Base Address + 0x90
1777    uint32_t                                        reserved27;
1778    uint32_t                                        reserved28;
1779    uint32_t                                        reserved29;
1780    struct SI32_ACCTR_A_COUNT1_Struct               COUNT1         ; // Base Address + 0xa0
1781    uint32_t                                        reserved30;
1782    uint32_t                                        reserved31;
1783    uint32_t                                        reserved32;
1784    struct SI32_ACCTR_A_COMP0_Struct                COMP0          ; // Base Address + 0xb0
1785    uint32_t                                        reserved33;
1786    uint32_t                                        reserved34;
1787    uint32_t                                        reserved35;
1788    struct SI32_ACCTR_A_COMP1_Struct                COMP1          ; // Base Address + 0xc0
1789    uint32_t                                        reserved36;
1790    uint32_t                                        reserved37;
1791    uint32_t                                        reserved38;
1792    struct SI32_ACCTR_A_STATUS_Struct               STATUS         ; // Base Address + 0xd0
1793    uint32_t                                        reserved39;
1794    uint32_t                                        reserved40;
1795    uint32_t                                        reserved41;
1796    struct SI32_ACCTR_A_DEBUGEN_Struct              DEBUGEN        ; // Base Address + 0xe0
1797    uint32_t                                        reserved42;
1798    uint32_t                                        reserved43;
1799    uint32_t                                        reserved44;
1800 } SI32_ACCTR_A_Type;
1801 
1802 #ifdef __cplusplus
1803 }
1804 #endif
1805 
1806 #endif // __SI32_ACCTR_A_REGISTERS_H__
1807 
1808 //-eof--------------------------------------------------------------------------
1809 
1810