HPM SDK
HPMicro Software Development Kit
hpm_pdgo_regs.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2025 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_PDGO_H
10 #define HPM_PDGO_H
11 
12 typedef struct {
13  __W uint32_t DGO_TURNOFF; /* 0x0: Trunoff Control Register */
14  __RW uint32_t DGO_RC32K_CFG; /* 0x4: RC32K CLOCK TRIM Register */
15  __RW uint32_t DGO_CTRL; /* 0x8: Control Register */
16  __R uint8_t RESERVED0[4]; /* 0xC - 0xF: Reserved */
17  __RW uint32_t PIN_CTRL; /* 0x10: IO Control Register */
18  __RW uint32_t PIN_STS; /* 0x14: IO Status Register */
19  __RW uint32_t WAKEUP; /* 0x18: Wakeup Register */
20  __RW uint32_t WKUP_CYC; /* 0x1C: Wakeup Cycle Register */
21  __RW uint32_t WKUP_EN; /* 0x20: Wakeup Enable Register */
22  __RW uint32_t WKUP_STS; /* 0x24: Wakeup Status Register */
23  __R uint8_t RESERVED1[56]; /* 0x28 - 0x5F: Reserved */
24  __RW uint32_t IRQ0_EN; /* 0x60: Interrupt 0 Enable Register */
25  __RW uint32_t IRQ0_STS; /* 0x64: Interrupt 0 Status Register */
26  __RW uint32_t IRQ1_EN; /* 0x68: Interrupt 1 Enable Register */
27  __RW uint32_t IRQ1_STS; /* 0x6C: Interrupt 1 Status Register */
28  __R uint8_t RESERVED2[16]; /* 0x70 - 0x7F: Reserved */
29  __RW uint32_t GPR[8]; /* 0x80 - 0x9C: General Purpose Register */
30  __R uint8_t RESERVED3[96]; /* 0xA0 - 0xFF: Reserved */
31  __RW uint32_t IOFILTER[4]; /* 0x100 - 0x10C: WUIO Filter Register */
32  __R uint8_t RESERVED4[240]; /* 0x110 - 0x1FF: Reserved */
33  struct {
34  __RW uint32_t CTRL; /* 0x200: Pulse Capture Control Register */
35  __RW uint32_t CP_CFG; /* 0x204: Compare and Period Configuration Register */
36  __R uint8_t RESERVED0[8]; /* 0x208 - 0x20F: Reserved */
37  __RW uint32_t COUNTER; /* 0x210: Counter Register */
38  __RW uint32_t DUMP; /* 0x214: DUMP Register */
39  } PCAP[1];
40  __R uint8_t RESERVED5[104]; /* 0x218 - 0x27F: Reserved */
41  struct {
42  __RW uint32_t CNT_CFG; /* 0x280: Pulse Count Configuration Register */
43  __RW uint32_t CALIB_CFG; /* 0x284: Calibration Configuration Register */
44  __RW uint32_t RESOLUTION; /* 0x288: Resolution Configuration Register */
45  __RW uint32_t HOMING_CFG; /* 0x28C: Homing Configuration Register */
46  __RW uint32_t ANALYSE_CFG; /* 0x290: Analyse Configuration Register */
47  __RW uint32_t DIRECTION; /* 0x294: Direction Configuration Register */
48  __RW uint32_t CMP0; /* 0x298: Compare0 Configuration Register */
49  __RW uint32_t CMP1; /* 0x29C: Compare1 Configuration Register */
50  __RW uint32_t CNT; /* 0x2A0: Counter Register */
51  __RW uint32_t TACHO; /* 0x2A4: Tacho Register */
52  __R uint32_t DUMP; /* 0x2A8: DUMP Register */
53  __RW uint32_t STS; /* 0x2AC: Status Register */
54  } PCNT[1];
55 } PDGO_Type;
56 
57 
58 /* Bitfield definition for register: DGO_TURNOFF */
59 /*
60  * COUNTER (WO)
61  *
62  * trunoff counter, counter stops when it counts down to 0, the trunoff occurs when the counter value is 1.
63  */
64 #define PDGO_DGO_TURNOFF_COUNTER_MASK (0xFFFFFFFFUL)
65 #define PDGO_DGO_TURNOFF_COUNTER_SHIFT (0U)
66 #define PDGO_DGO_TURNOFF_COUNTER_SET(x) (((uint32_t)(x) << PDGO_DGO_TURNOFF_COUNTER_SHIFT) & PDGO_DGO_TURNOFF_COUNTER_MASK)
67 #define PDGO_DGO_TURNOFF_COUNTER_GET(x) (((uint32_t)(x) & PDGO_DGO_TURNOFF_COUNTER_MASK) >> PDGO_DGO_TURNOFF_COUNTER_SHIFT)
68 
69 /* Bitfield definition for register: DGO_RC32K_CFG */
70 /*
71  * COUNTER (RW)
72  *
73  * IRC32K trim happened, this bit set by hardware after trim value loaded, and stop load, write 0 will clear this bit and reload trim value
74  * 0: irc is not trimmed
75  * 1: irc is trimmed
76  */
77 #define PDGO_DGO_RC32K_CFG_COUNTER_MASK (0x80000000UL)
78 #define PDGO_DGO_RC32K_CFG_COUNTER_SHIFT (31U)
79 #define PDGO_DGO_RC32K_CFG_COUNTER_SET(x) (((uint32_t)(x) << PDGO_DGO_RC32K_CFG_COUNTER_SHIFT) & PDGO_DGO_RC32K_CFG_COUNTER_MASK)
80 #define PDGO_DGO_RC32K_CFG_COUNTER_GET(x) (((uint32_t)(x) & PDGO_DGO_RC32K_CFG_COUNTER_MASK) >> PDGO_DGO_RC32K_CFG_COUNTER_SHIFT)
81 
82 /*
83  * CAPEX7_TRIM (RW)
84  *
85  * IRC32K bit 7
86  */
87 #define PDGO_DGO_RC32K_CFG_CAPEX7_TRIM_MASK (0x800000UL)
88 #define PDGO_DGO_RC32K_CFG_CAPEX7_TRIM_SHIFT (23U)
89 #define PDGO_DGO_RC32K_CFG_CAPEX7_TRIM_SET(x) (((uint32_t)(x) << PDGO_DGO_RC32K_CFG_CAPEX7_TRIM_SHIFT) & PDGO_DGO_RC32K_CFG_CAPEX7_TRIM_MASK)
90 #define PDGO_DGO_RC32K_CFG_CAPEX7_TRIM_GET(x) (((uint32_t)(x) & PDGO_DGO_RC32K_CFG_CAPEX7_TRIM_MASK) >> PDGO_DGO_RC32K_CFG_CAPEX7_TRIM_SHIFT)
91 
92 /*
93  * CAPEX6_TRIM (RW)
94  *
95  * IRC32K bit 6
96  */
97 #define PDGO_DGO_RC32K_CFG_CAPEX6_TRIM_MASK (0x400000UL)
98 #define PDGO_DGO_RC32K_CFG_CAPEX6_TRIM_SHIFT (22U)
99 #define PDGO_DGO_RC32K_CFG_CAPEX6_TRIM_SET(x) (((uint32_t)(x) << PDGO_DGO_RC32K_CFG_CAPEX6_TRIM_SHIFT) & PDGO_DGO_RC32K_CFG_CAPEX6_TRIM_MASK)
100 #define PDGO_DGO_RC32K_CFG_CAPEX6_TRIM_GET(x) (((uint32_t)(x) & PDGO_DGO_RC32K_CFG_CAPEX6_TRIM_MASK) >> PDGO_DGO_RC32K_CFG_CAPEX6_TRIM_SHIFT)
101 
102 /*
103  * CAP_TRIM (RW)
104  *
105  * capacitor trim bits
106  */
107 #define PDGO_DGO_RC32K_CFG_CAP_TRIM_MASK (0x1FFU)
108 #define PDGO_DGO_RC32K_CFG_CAP_TRIM_SHIFT (0U)
109 #define PDGO_DGO_RC32K_CFG_CAP_TRIM_SET(x) (((uint32_t)(x) << PDGO_DGO_RC32K_CFG_CAP_TRIM_SHIFT) & PDGO_DGO_RC32K_CFG_CAP_TRIM_MASK)
110 #define PDGO_DGO_RC32K_CFG_CAP_TRIM_GET(x) (((uint32_t)(x) & PDGO_DGO_RC32K_CFG_CAP_TRIM_MASK) >> PDGO_DGO_RC32K_CFG_CAP_TRIM_SHIFT)
111 
112 /* Bitfield definition for register: DGO_CTRL */
113 /*
114  * RET (RW)
115  *
116  * Retention, retain contents in DGO.GPR[n] register after RSTN (When PMIC has power)
117  * 0: Disable
118  * 1: Enable
119  */
120 #define PDGO_DGO_CTRL_RET_MASK (0x10000UL)
121 #define PDGO_DGO_CTRL_RET_SHIFT (16U)
122 #define PDGO_DGO_CTRL_RET_SET(x) (((uint32_t)(x) << PDGO_DGO_CTRL_RET_SHIFT) & PDGO_DGO_CTRL_RET_MASK)
123 #define PDGO_DGO_CTRL_RET_GET(x) (((uint32_t)(x) & PDGO_DGO_CTRL_RET_MASK) >> PDGO_DGO_CTRL_RET_SHIFT)
124 
125 /*
126  * LESP (RW)
127  *
128  * Bandgap works in power save mode, bandgap function normally
129  * 0: bandgap works in high performance mode
130  * 1: bandgap works in power saving mode
131  */
132 #define PDGO_DGO_CTRL_LESP_MASK (0x2U)
133 #define PDGO_DGO_CTRL_LESP_SHIFT (1U)
134 #define PDGO_DGO_CTRL_LESP_SET(x) (((uint32_t)(x) << PDGO_DGO_CTRL_LESP_SHIFT) & PDGO_DGO_CTRL_LESP_MASK)
135 #define PDGO_DGO_CTRL_LESP_GET(x) (((uint32_t)(x) & PDGO_DGO_CTRL_LESP_MASK) >> PDGO_DGO_CTRL_LESP_SHIFT)
136 
137 /*
138  * LOWP (RW)
139  *
140  * Bandgap works in low power mode, bandgap function limited
141  * 0: bandgap works in normal mode
142  * 1: bandgap works in low power mode
143  */
144 #define PDGO_DGO_CTRL_LOWP_MASK (0x1U)
145 #define PDGO_DGO_CTRL_LOWP_SHIFT (0U)
146 #define PDGO_DGO_CTRL_LOWP_SET(x) (((uint32_t)(x) << PDGO_DGO_CTRL_LOWP_SHIFT) & PDGO_DGO_CTRL_LOWP_MASK)
147 #define PDGO_DGO_CTRL_LOWP_GET(x) (((uint32_t)(x) & PDGO_DGO_CTRL_LOWP_MASK) >> PDGO_DGO_CTRL_LOWP_SHIFT)
148 
149 /* Bitfield definition for register: PIN_CTRL */
150 /*
151  * RSTN (RW)
152  *
153  * resetn pin pull up disable
154  * 0: Enable Pull Up
155  * 1: Disable Pull Up
156  */
157 #define PDGO_PIN_CTRL_RSTN_MASK (0x1000000UL)
158 #define PDGO_PIN_CTRL_RSTN_SHIFT (24U)
159 #define PDGO_PIN_CTRL_RSTN_SET(x) (((uint32_t)(x) << PDGO_PIN_CTRL_RSTN_SHIFT) & PDGO_PIN_CTRL_RSTN_MASK)
160 #define PDGO_PIN_CTRL_RSTN_GET(x) (((uint32_t)(x) & PDGO_PIN_CTRL_RSTN_MASK) >> PDGO_PIN_CTRL_RSTN_SHIFT)
161 
162 /*
163  * WKUP (RW)
164  *
165  * wakeup pin pull down disable
166  * 0: Enable Pull Down
167  * 1: Disable Pull Down
168  */
169 #define PDGO_PIN_CTRL_WKUP_MASK (0x10000UL)
170 #define PDGO_PIN_CTRL_WKUP_SHIFT (16U)
171 #define PDGO_PIN_CTRL_WKUP_SET(x) (((uint32_t)(x) << PDGO_PIN_CTRL_WKUP_SHIFT) & PDGO_PIN_CTRL_WKUP_MASK)
172 #define PDGO_PIN_CTRL_WKUP_GET(x) (((uint32_t)(x) & PDGO_PIN_CTRL_WKUP_MASK) >> PDGO_PIN_CTRL_WKUP_SHIFT)
173 
174 /*
175  * WUIO3 (RW)
176  *
177  * WUIO pin pull down disable
178  * 0: Enable Pull Down
179  * 1: Disable Pull Down
180  */
181 #define PDGO_PIN_CTRL_WUIO3_MASK (0x8U)
182 #define PDGO_PIN_CTRL_WUIO3_SHIFT (3U)
183 #define PDGO_PIN_CTRL_WUIO3_SET(x) (((uint32_t)(x) << PDGO_PIN_CTRL_WUIO3_SHIFT) & PDGO_PIN_CTRL_WUIO3_MASK)
184 #define PDGO_PIN_CTRL_WUIO3_GET(x) (((uint32_t)(x) & PDGO_PIN_CTRL_WUIO3_MASK) >> PDGO_PIN_CTRL_WUIO3_SHIFT)
185 
186 /*
187  * WUIO2 (RW)
188  *
189  * WUIO pin pull down disable
190  * 0: Enable Pull Down
191  * 1: Disable Pull Down
192  */
193 #define PDGO_PIN_CTRL_WUIO2_MASK (0x4U)
194 #define PDGO_PIN_CTRL_WUIO2_SHIFT (2U)
195 #define PDGO_PIN_CTRL_WUIO2_SET(x) (((uint32_t)(x) << PDGO_PIN_CTRL_WUIO2_SHIFT) & PDGO_PIN_CTRL_WUIO2_MASK)
196 #define PDGO_PIN_CTRL_WUIO2_GET(x) (((uint32_t)(x) & PDGO_PIN_CTRL_WUIO2_MASK) >> PDGO_PIN_CTRL_WUIO2_SHIFT)
197 
198 /*
199  * WUIO1 (RW)
200  *
201  * WUIO pin pull down disable
202  * 0: Enable Pull Down
203  * 1: Disable Pull Down
204  */
205 #define PDGO_PIN_CTRL_WUIO1_MASK (0x2U)
206 #define PDGO_PIN_CTRL_WUIO1_SHIFT (1U)
207 #define PDGO_PIN_CTRL_WUIO1_SET(x) (((uint32_t)(x) << PDGO_PIN_CTRL_WUIO1_SHIFT) & PDGO_PIN_CTRL_WUIO1_MASK)
208 #define PDGO_PIN_CTRL_WUIO1_GET(x) (((uint32_t)(x) & PDGO_PIN_CTRL_WUIO1_MASK) >> PDGO_PIN_CTRL_WUIO1_SHIFT)
209 
210 /*
211  * WUIO0 (RW)
212  *
213  * WUIO pin pull down disable
214  * 0: Enable Pull Down
215  * 1: Disable Pull Down
216  */
217 #define PDGO_PIN_CTRL_WUIO0_MASK (0x1U)
218 #define PDGO_PIN_CTRL_WUIO0_SHIFT (0U)
219 #define PDGO_PIN_CTRL_WUIO0_SET(x) (((uint32_t)(x) << PDGO_PIN_CTRL_WUIO0_SHIFT) & PDGO_PIN_CTRL_WUIO0_MASK)
220 #define PDGO_PIN_CTRL_WUIO0_GET(x) (((uint32_t)(x) & PDGO_PIN_CTRL_WUIO0_MASK) >> PDGO_PIN_CTRL_WUIO0_SHIFT)
221 
222 /* Bitfield definition for register: PIN_STS */
223 /*
224  * TMOD (RO)
225  *
226  * TMOD Pin Status
227  */
228 #define PDGO_PIN_STS_TMOD_MASK (0x80000000UL)
229 #define PDGO_PIN_STS_TMOD_SHIFT (31U)
230 #define PDGO_PIN_STS_TMOD_GET(x) (((uint32_t)(x) & PDGO_PIN_STS_TMOD_MASK) >> PDGO_PIN_STS_TMOD_SHIFT)
231 
232 /*
233  * RSTN (RO)
234  *
235  * RSTN Pin Status
236  */
237 #define PDGO_PIN_STS_RSTN_MASK (0x1000000UL)
238 #define PDGO_PIN_STS_RSTN_SHIFT (24U)
239 #define PDGO_PIN_STS_RSTN_GET(x) (((uint32_t)(x) & PDGO_PIN_STS_RSTN_MASK) >> PDGO_PIN_STS_RSTN_SHIFT)
240 
241 /*
242  * WKUP (RO)
243  *
244  * WKUP pin status
245  */
246 #define PDGO_PIN_STS_WKUP_MASK (0x10000UL)
247 #define PDGO_PIN_STS_WKUP_SHIFT (16U)
248 #define PDGO_PIN_STS_WKUP_GET(x) (((uint32_t)(x) & PDGO_PIN_STS_WKUP_MASK) >> PDGO_PIN_STS_WKUP_SHIFT)
249 
250 /*
251  * WUIO3 (RO)
252  *
253  * WUIO3 pin status
254  */
255 #define PDGO_PIN_STS_WUIO3_MASK (0x8U)
256 #define PDGO_PIN_STS_WUIO3_SHIFT (3U)
257 #define PDGO_PIN_STS_WUIO3_GET(x) (((uint32_t)(x) & PDGO_PIN_STS_WUIO3_MASK) >> PDGO_PIN_STS_WUIO3_SHIFT)
258 
259 /*
260  * WUIO2 (RO)
261  *
262  * WUIO2 pin status
263  */
264 #define PDGO_PIN_STS_WUIO2_MASK (0x4U)
265 #define PDGO_PIN_STS_WUIO2_SHIFT (2U)
266 #define PDGO_PIN_STS_WUIO2_GET(x) (((uint32_t)(x) & PDGO_PIN_STS_WUIO2_MASK) >> PDGO_PIN_STS_WUIO2_SHIFT)
267 
268 /*
269  * WUIO1 (RO)
270  *
271  * WUIO1 pin status
272  */
273 #define PDGO_PIN_STS_WUIO1_MASK (0x2U)
274 #define PDGO_PIN_STS_WUIO1_SHIFT (1U)
275 #define PDGO_PIN_STS_WUIO1_GET(x) (((uint32_t)(x) & PDGO_PIN_STS_WUIO1_MASK) >> PDGO_PIN_STS_WUIO1_SHIFT)
276 
277 /*
278  * WUIO0 (RO)
279  *
280  * WUIO0 pin status
281  */
282 #define PDGO_PIN_STS_WUIO0_MASK (0x1U)
283 #define PDGO_PIN_STS_WUIO0_SHIFT (0U)
284 #define PDGO_PIN_STS_WUIO0_GET(x) (((uint32_t)(x) & PDGO_PIN_STS_WUIO0_MASK) >> PDGO_PIN_STS_WUIO0_SHIFT)
285 
286 /* Bitfield definition for register: WAKEUP */
287 /*
288  * COUNTER (RW)
289  *
290  * software wake-up counter,counter stops when it counts down(base on 32KHz clock) to 0, the wakeup occurs when the counter value is 1.
291  * wakeup once: write counter value here and set CYCLE register to be 0.
292  * wakeup in cycle: write wakeup cycle in CYCLE register
293  */
294 #define PDGO_WAKEUP_COUNTER_MASK (0xFFFFFFFFUL)
295 #define PDGO_WAKEUP_COUNTER_SHIFT (0U)
296 #define PDGO_WAKEUP_COUNTER_SET(x) (((uint32_t)(x) << PDGO_WAKEUP_COUNTER_SHIFT) & PDGO_WAKEUP_COUNTER_MASK)
297 #define PDGO_WAKEUP_COUNTER_GET(x) (((uint32_t)(x) & PDGO_WAKEUP_COUNTER_MASK) >> PDGO_WAKEUP_COUNTER_SHIFT)
298 
299 /* Bitfield definition for register: WKUP_CYC */
300 /*
301  * INTERVAL (RW)
302  *
303  * interval between wakeups, count by 32KHz clock cycles.
304  */
305 #define PDGO_WKUP_CYC_INTERVAL_MASK (0xFFFFFFFFUL)
306 #define PDGO_WKUP_CYC_INTERVAL_SHIFT (0U)
307 #define PDGO_WKUP_CYC_INTERVAL_SET(x) (((uint32_t)(x) << PDGO_WKUP_CYC_INTERVAL_SHIFT) & PDGO_WKUP_CYC_INTERVAL_MASK)
308 #define PDGO_WKUP_CYC_INTERVAL_GET(x) (((uint32_t)(x) & PDGO_WKUP_CYC_INTERVAL_MASK) >> PDGO_WKUP_CYC_INTERVAL_SHIFT)
309 
310 /* Bitfield definition for register: WKUP_EN */
311 /*
312  * PCNT0 (RW)
313  *
314  * Allow wake-up via Pulse PCNT0 events.
315  * 0:Disable
316  * 1:Enable
317  * Note: wake-up interrupt request shloud be enable at the same time.
318  */
319 #define PDGO_WKUP_EN_PCNT0_MASK (0x100U)
320 #define PDGO_WKUP_EN_PCNT0_SHIFT (8U)
321 #define PDGO_WKUP_EN_PCNT0_SET(x) (((uint32_t)(x) << PDGO_WKUP_EN_PCNT0_SHIFT) & PDGO_WKUP_EN_PCNT0_MASK)
322 #define PDGO_WKUP_EN_PCNT0_GET(x) (((uint32_t)(x) & PDGO_WKUP_EN_PCNT0_MASK) >> PDGO_WKUP_EN_PCNT0_SHIFT)
323 
324 /*
325  * PCAP0 (RW)
326  *
327  * Allow wake-up via PCAP0 events.
328  * 0:Disable
329  * 1:Enable
330  * Note: wake-up interrupt request shloud be enable at the same time.
331  */
332 #define PDGO_WKUP_EN_PCAP0_MASK (0x10U)
333 #define PDGO_WKUP_EN_PCAP0_SHIFT (4U)
334 #define PDGO_WKUP_EN_PCAP0_SET(x) (((uint32_t)(x) << PDGO_WKUP_EN_PCAP0_SHIFT) & PDGO_WKUP_EN_PCAP0_MASK)
335 #define PDGO_WKUP_EN_PCAP0_GET(x) (((uint32_t)(x) & PDGO_WKUP_EN_PCAP0_MASK) >> PDGO_WKUP_EN_PCAP0_SHIFT)
336 
337 /*
338  * WUIO (RW)
339  *
340  * Allow wake-up via WU00/WU01/WU02/WU03 pins.
341  * 0:Disable
342  * 1:Enable
343  * Note: wake-up interrupt request shloud be enable at the same time.
344  */
345 #define PDGO_WKUP_EN_WUIO_MASK (0x4U)
346 #define PDGO_WKUP_EN_WUIO_SHIFT (2U)
347 #define PDGO_WKUP_EN_WUIO_SET(x) (((uint32_t)(x) << PDGO_WKUP_EN_WUIO_SHIFT) & PDGO_WKUP_EN_WUIO_MASK)
348 #define PDGO_WKUP_EN_WUIO_GET(x) (((uint32_t)(x) & PDGO_WKUP_EN_WUIO_MASK) >> PDGO_WKUP_EN_WUIO_SHIFT)
349 
350 /*
351  * CYC (RW)
352  *
353  * Allow software wake-up via counter cycle.
354  * 0:Disable
355  * 1:Enable
356  * Note: wake-up interrupt request shloud be enable at the same time.
357  */
358 #define PDGO_WKUP_EN_CYC_MASK (0x2U)
359 #define PDGO_WKUP_EN_CYC_SHIFT (1U)
360 #define PDGO_WKUP_EN_CYC_SET(x) (((uint32_t)(x) << PDGO_WKUP_EN_CYC_SHIFT) & PDGO_WKUP_EN_CYC_MASK)
361 #define PDGO_WKUP_EN_CYC_GET(x) (((uint32_t)(x) & PDGO_WKUP_EN_CYC_MASK) >> PDGO_WKUP_EN_CYC_SHIFT)
362 
363 /*
364  * WKUP (RW)
365  *
366  * Allow wake-up via the WKUP pin.
367  * 0:Disable
368  * 1:Enable
369  * Note: wake-up interrupt request shloud be enable at the same time.
370  */
371 #define PDGO_WKUP_EN_WKUP_MASK (0x1U)
372 #define PDGO_WKUP_EN_WKUP_SHIFT (0U)
373 #define PDGO_WKUP_EN_WKUP_SET(x) (((uint32_t)(x) << PDGO_WKUP_EN_WKUP_SHIFT) & PDGO_WKUP_EN_WKUP_MASK)
374 #define PDGO_WKUP_EN_WKUP_GET(x) (((uint32_t)(x) & PDGO_WKUP_EN_WKUP_MASK) >> PDGO_WKUP_EN_WKUP_SHIFT)
375 
376 /* Bitfield definition for register: WKUP_STS */
377 /*
378  * PCNT0 (W1C)
379  *
380  * PCNT0 events wake-up status.
381  * 0: wake-up is invalid
382  * 1: wake-up is valid
383  */
384 #define PDGO_WKUP_STS_PCNT0_MASK (0x100U)
385 #define PDGO_WKUP_STS_PCNT0_SHIFT (8U)
386 #define PDGO_WKUP_STS_PCNT0_SET(x) (((uint32_t)(x) << PDGO_WKUP_STS_PCNT0_SHIFT) & PDGO_WKUP_STS_PCNT0_MASK)
387 #define PDGO_WKUP_STS_PCNT0_GET(x) (((uint32_t)(x) & PDGO_WKUP_STS_PCNT0_MASK) >> PDGO_WKUP_STS_PCNT0_SHIFT)
388 
389 /*
390  * PCAP0 (W1C)
391  *
392  * PCAP0 events wake-up status.
393  * 0: wake-up is invalid
394  * 1: wake-up is valid
395  */
396 #define PDGO_WKUP_STS_PCAP0_MASK (0x10U)
397 #define PDGO_WKUP_STS_PCAP0_SHIFT (4U)
398 #define PDGO_WKUP_STS_PCAP0_SET(x) (((uint32_t)(x) << PDGO_WKUP_STS_PCAP0_SHIFT) & PDGO_WKUP_STS_PCAP0_MASK)
399 #define PDGO_WKUP_STS_PCAP0_GET(x) (((uint32_t)(x) & PDGO_WKUP_STS_PCAP0_MASK) >> PDGO_WKUP_STS_PCAP0_SHIFT)
400 
401 /*
402  * WUIO (W1C)
403  *
404  * WUIO0/WUIO1/WUIO2/WUIO3 pins wake-up status.
405  * 0: wake-up is invalid
406  * 1: wake-up is valid
407  */
408 #define PDGO_WKUP_STS_WUIO_MASK (0x4U)
409 #define PDGO_WKUP_STS_WUIO_SHIFT (2U)
410 #define PDGO_WKUP_STS_WUIO_SET(x) (((uint32_t)(x) << PDGO_WKUP_STS_WUIO_SHIFT) & PDGO_WKUP_STS_WUIO_MASK)
411 #define PDGO_WKUP_STS_WUIO_GET(x) (((uint32_t)(x) & PDGO_WKUP_STS_WUIO_MASK) >> PDGO_WKUP_STS_WUIO_SHIFT)
412 
413 /*
414  * CYC (W1C)
415  *
416  * counter cycle software wake-up status.
417  * 0: wake-up is invalid
418  * 1: wake-up is valid
419  */
420 #define PDGO_WKUP_STS_CYC_MASK (0x2U)
421 #define PDGO_WKUP_STS_CYC_SHIFT (1U)
422 #define PDGO_WKUP_STS_CYC_SET(x) (((uint32_t)(x) << PDGO_WKUP_STS_CYC_SHIFT) & PDGO_WKUP_STS_CYC_MASK)
423 #define PDGO_WKUP_STS_CYC_GET(x) (((uint32_t)(x) & PDGO_WKUP_STS_CYC_MASK) >> PDGO_WKUP_STS_CYC_SHIFT)
424 
425 /*
426  * WKUP (W1C)
427  *
428  * WKUP pin wake-up status.
429  * 0: wake-up is invalid
430  * 1: wake-up is valid
431  */
432 #define PDGO_WKUP_STS_WKUP_MASK (0x1U)
433 #define PDGO_WKUP_STS_WKUP_SHIFT (0U)
434 #define PDGO_WKUP_STS_WKUP_SET(x) (((uint32_t)(x) << PDGO_WKUP_STS_WKUP_SHIFT) & PDGO_WKUP_STS_WKUP_MASK)
435 #define PDGO_WKUP_STS_WKUP_GET(x) (((uint32_t)(x) & PDGO_WKUP_STS_WKUP_MASK) >> PDGO_WKUP_STS_WKUP_SHIFT)
436 
437 /* Bitfield definition for register: IRQ0_EN */
438 /*
439  * CYC (RW)
440  *
441  * Allow software counter cycle wake-up interrupt request.
442  * 0:Disable
443  * 1:Enable
444  */
445 #define PDGO_IRQ0_EN_CYC_MASK (0x20000UL)
446 #define PDGO_IRQ0_EN_CYC_SHIFT (17U)
447 #define PDGO_IRQ0_EN_CYC_SET(x) (((uint32_t)(x) << PDGO_IRQ0_EN_CYC_SHIFT) & PDGO_IRQ0_EN_CYC_MASK)
448 #define PDGO_IRQ0_EN_CYC_GET(x) (((uint32_t)(x) & PDGO_IRQ0_EN_CYC_MASK) >> PDGO_IRQ0_EN_CYC_SHIFT)
449 
450 /*
451  * WKUP (RW)
452  *
453  * Allow WKUP Pin wake-up interrupt request.
454  * 0:Disable
455  * 1:Enable
456  */
457 #define PDGO_IRQ0_EN_WKUP_MASK (0x10000UL)
458 #define PDGO_IRQ0_EN_WKUP_SHIFT (16U)
459 #define PDGO_IRQ0_EN_WKUP_SET(x) (((uint32_t)(x) << PDGO_IRQ0_EN_WKUP_SHIFT) & PDGO_IRQ0_EN_WKUP_MASK)
460 #define PDGO_IRQ0_EN_WKUP_GET(x) (((uint32_t)(x) & PDGO_IRQ0_EN_WKUP_MASK) >> PDGO_IRQ0_EN_WKUP_SHIFT)
461 
462 /*
463  * WUIO3 (RW)
464  *
465  * Allow WUIO3 Pin wake-up interrupt request.
466  * 0:Disable
467  * 1:Enable
468  */
469 #define PDGO_IRQ0_EN_WUIO3_MASK (0x8U)
470 #define PDGO_IRQ0_EN_WUIO3_SHIFT (3U)
471 #define PDGO_IRQ0_EN_WUIO3_SET(x) (((uint32_t)(x) << PDGO_IRQ0_EN_WUIO3_SHIFT) & PDGO_IRQ0_EN_WUIO3_MASK)
472 #define PDGO_IRQ0_EN_WUIO3_GET(x) (((uint32_t)(x) & PDGO_IRQ0_EN_WUIO3_MASK) >> PDGO_IRQ0_EN_WUIO3_SHIFT)
473 
474 /*
475  * WUIO2 (RW)
476  *
477  * Allow WUIO2 wake-up interrupt request.
478  * 0:Disable
479  * 1:Enable
480  */
481 #define PDGO_IRQ0_EN_WUIO2_MASK (0x4U)
482 #define PDGO_IRQ0_EN_WUIO2_SHIFT (2U)
483 #define PDGO_IRQ0_EN_WUIO2_SET(x) (((uint32_t)(x) << PDGO_IRQ0_EN_WUIO2_SHIFT) & PDGO_IRQ0_EN_WUIO2_MASK)
484 #define PDGO_IRQ0_EN_WUIO2_GET(x) (((uint32_t)(x) & PDGO_IRQ0_EN_WUIO2_MASK) >> PDGO_IRQ0_EN_WUIO2_SHIFT)
485 
486 /*
487  * WUIO1 (RW)
488  *
489  * Allow WUIO1 wake-up interrupt request.
490  * 0:Disable
491  * 1:Enable
492  */
493 #define PDGO_IRQ0_EN_WUIO1_MASK (0x2U)
494 #define PDGO_IRQ0_EN_WUIO1_SHIFT (1U)
495 #define PDGO_IRQ0_EN_WUIO1_SET(x) (((uint32_t)(x) << PDGO_IRQ0_EN_WUIO1_SHIFT) & PDGO_IRQ0_EN_WUIO1_MASK)
496 #define PDGO_IRQ0_EN_WUIO1_GET(x) (((uint32_t)(x) & PDGO_IRQ0_EN_WUIO1_MASK) >> PDGO_IRQ0_EN_WUIO1_SHIFT)
497 
498 /*
499  * WUIO0 (RW)
500  *
501  * Allow WUIO0 wake-up interrupt request.
502  * 0:Disable
503  * 1:Enable
504  */
505 #define PDGO_IRQ0_EN_WUIO0_MASK (0x1U)
506 #define PDGO_IRQ0_EN_WUIO0_SHIFT (0U)
507 #define PDGO_IRQ0_EN_WUIO0_SET(x) (((uint32_t)(x) << PDGO_IRQ0_EN_WUIO0_SHIFT) & PDGO_IRQ0_EN_WUIO0_MASK)
508 #define PDGO_IRQ0_EN_WUIO0_GET(x) (((uint32_t)(x) & PDGO_IRQ0_EN_WUIO0_MASK) >> PDGO_IRQ0_EN_WUIO0_SHIFT)
509 
510 /* Bitfield definition for register: IRQ0_STS */
511 /*
512  * CYC (W1C)
513  *
514  * software counter cycle wake-up interrupt status.
515  * 0: is invalid
516  * 1: is valid
517  */
518 #define PDGO_IRQ0_STS_CYC_MASK (0x20000UL)
519 #define PDGO_IRQ0_STS_CYC_SHIFT (17U)
520 #define PDGO_IRQ0_STS_CYC_SET(x) (((uint32_t)(x) << PDGO_IRQ0_STS_CYC_SHIFT) & PDGO_IRQ0_STS_CYC_MASK)
521 #define PDGO_IRQ0_STS_CYC_GET(x) (((uint32_t)(x) & PDGO_IRQ0_STS_CYC_MASK) >> PDGO_IRQ0_STS_CYC_SHIFT)
522 
523 /*
524  * WKUP (W1C)
525  *
526  * WKUP Pin wake-up interrupt status.
527  * 0: is invalid
528  * 1: is valid
529  */
530 #define PDGO_IRQ0_STS_WKUP_MASK (0x10000UL)
531 #define PDGO_IRQ0_STS_WKUP_SHIFT (16U)
532 #define PDGO_IRQ0_STS_WKUP_SET(x) (((uint32_t)(x) << PDGO_IRQ0_STS_WKUP_SHIFT) & PDGO_IRQ0_STS_WKUP_MASK)
533 #define PDGO_IRQ0_STS_WKUP_GET(x) (((uint32_t)(x) & PDGO_IRQ0_STS_WKUP_MASK) >> PDGO_IRQ0_STS_WKUP_SHIFT)
534 
535 /*
536  * WUIO3 (W1C)
537  *
538  * WUIO3 Pin wake-up interrupt status.
539  * 0: is invalid
540  * 1: is valid
541  */
542 #define PDGO_IRQ0_STS_WUIO3_MASK (0x8U)
543 #define PDGO_IRQ0_STS_WUIO3_SHIFT (3U)
544 #define PDGO_IRQ0_STS_WUIO3_SET(x) (((uint32_t)(x) << PDGO_IRQ0_STS_WUIO3_SHIFT) & PDGO_IRQ0_STS_WUIO3_MASK)
545 #define PDGO_IRQ0_STS_WUIO3_GET(x) (((uint32_t)(x) & PDGO_IRQ0_STS_WUIO3_MASK) >> PDGO_IRQ0_STS_WUIO3_SHIFT)
546 
547 /*
548  * WUIO2 (W1C)
549  *
550  * WUIO2 wake-up interrupt status.
551  * 0: is invalid
552  * 1: is valid
553  */
554 #define PDGO_IRQ0_STS_WUIO2_MASK (0x4U)
555 #define PDGO_IRQ0_STS_WUIO2_SHIFT (2U)
556 #define PDGO_IRQ0_STS_WUIO2_SET(x) (((uint32_t)(x) << PDGO_IRQ0_STS_WUIO2_SHIFT) & PDGO_IRQ0_STS_WUIO2_MASK)
557 #define PDGO_IRQ0_STS_WUIO2_GET(x) (((uint32_t)(x) & PDGO_IRQ0_STS_WUIO2_MASK) >> PDGO_IRQ0_STS_WUIO2_SHIFT)
558 
559 /*
560  * WUIO1 (W1C)
561  *
562  * WUIO1 wake-up interrupt status.
563  * 0: is invalid
564  * 1: is valid
565  */
566 #define PDGO_IRQ0_STS_WUIO1_MASK (0x2U)
567 #define PDGO_IRQ0_STS_WUIO1_SHIFT (1U)
568 #define PDGO_IRQ0_STS_WUIO1_SET(x) (((uint32_t)(x) << PDGO_IRQ0_STS_WUIO1_SHIFT) & PDGO_IRQ0_STS_WUIO1_MASK)
569 #define PDGO_IRQ0_STS_WUIO1_GET(x) (((uint32_t)(x) & PDGO_IRQ0_STS_WUIO1_MASK) >> PDGO_IRQ0_STS_WUIO1_SHIFT)
570 
571 /*
572  * WUIO0 (W1C)
573  *
574  * WUIO0 wake-up interrupt status.
575  * 0: is invalid
576  * 1: is valid
577  */
578 #define PDGO_IRQ0_STS_WUIO0_MASK (0x1U)
579 #define PDGO_IRQ0_STS_WUIO0_SHIFT (0U)
580 #define PDGO_IRQ0_STS_WUIO0_SET(x) (((uint32_t)(x) << PDGO_IRQ0_STS_WUIO0_SHIFT) & PDGO_IRQ0_STS_WUIO0_MASK)
581 #define PDGO_IRQ0_STS_WUIO0_GET(x) (((uint32_t)(x) & PDGO_IRQ0_STS_WUIO0_MASK) >> PDGO_IRQ0_STS_WUIO0_SHIFT)
582 
583 /* Bitfield definition for register: IRQ1_EN */
584 /*
585  * PCNT0_SEQERR (RW)
586  *
587  * Allow pulse counter interrupt request when phase sequence error happens.
588  * 0:Disable
589  * 1:Enable
590  */
591 #define PDGO_IRQ1_EN_PCNT0_SEQERR_MASK (0x800000UL)
592 #define PDGO_IRQ1_EN_PCNT0_SEQERR_SHIFT (23U)
593 #define PDGO_IRQ1_EN_PCNT0_SEQERR_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCNT0_SEQERR_SHIFT) & PDGO_IRQ1_EN_PCNT0_SEQERR_MASK)
594 #define PDGO_IRQ1_EN_PCNT0_SEQERR_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCNT0_SEQERR_MASK) >> PDGO_IRQ1_EN_PCNT0_SEQERR_SHIFT)
595 
596 /*
597  * PCNT0_DECERR (RW)
598  *
599  * Allow pulse counter interrupt request when decoder error happens.
600  * 0:Disable
601  * 1:Enable
602  */
603 #define PDGO_IRQ1_EN_PCNT0_DECERR_MASK (0x400000UL)
604 #define PDGO_IRQ1_EN_PCNT0_DECERR_SHIFT (22U)
605 #define PDGO_IRQ1_EN_PCNT0_DECERR_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCNT0_DECERR_SHIFT) & PDGO_IRQ1_EN_PCNT0_DECERR_MASK)
606 #define PDGO_IRQ1_EN_PCNT0_DECERR_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCNT0_DECERR_MASK) >> PDGO_IRQ1_EN_PCNT0_DECERR_SHIFT)
607 
608 /*
609  * PCNT0_TACHO (RW)
610  *
611  * Allow pulse counter interrupt request when tacho done happens.
612  * 0:Disable
613  * 1:Enable
614  */
615 #define PDGO_IRQ1_EN_PCNT0_TACHO_MASK (0x200000UL)
616 #define PDGO_IRQ1_EN_PCNT0_TACHO_SHIFT (21U)
617 #define PDGO_IRQ1_EN_PCNT0_TACHO_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCNT0_TACHO_SHIFT) & PDGO_IRQ1_EN_PCNT0_TACHO_MASK)
618 #define PDGO_IRQ1_EN_PCNT0_TACHO_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCNT0_TACHO_MASK) >> PDGO_IRQ1_EN_PCNT0_TACHO_SHIFT)
619 
620 /*
621  * PCNT0_MATCH0 (RW)
622  *
623  * Allow pulse counter interrupt request when match 0 events happens.
624  * 0:Disable
625  * 1:Enable
626  */
627 #define PDGO_IRQ1_EN_PCNT0_MATCH0_MASK (0x80000UL)
628 #define PDGO_IRQ1_EN_PCNT0_MATCH0_SHIFT (19U)
629 #define PDGO_IRQ1_EN_PCNT0_MATCH0_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCNT0_MATCH0_SHIFT) & PDGO_IRQ1_EN_PCNT0_MATCH0_MASK)
630 #define PDGO_IRQ1_EN_PCNT0_MATCH0_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCNT0_MATCH0_MASK) >> PDGO_IRQ1_EN_PCNT0_MATCH0_SHIFT)
631 
632 /*
633  * PCNT0_HOME (RW)
634  *
635  * Allow pulse counter interrupt request when Phase h (HOME) edges or level match events happens.
636  * 0:Disable
637  * 1:Enable
638  */
639 #define PDGO_IRQ1_EN_PCNT0_HOME_MASK (0x40000UL)
640 #define PDGO_IRQ1_EN_PCNT0_HOME_SHIFT (18U)
641 #define PDGO_IRQ1_EN_PCNT0_HOME_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCNT0_HOME_SHIFT) & PDGO_IRQ1_EN_PCNT0_HOME_MASK)
642 #define PDGO_IRQ1_EN_PCNT0_HOME_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCNT0_HOME_MASK) >> PDGO_IRQ1_EN_PCNT0_HOME_SHIFT)
643 
644 /*
645  * PCNT0_Z (RW)
646  *
647  * Allow pulse counter interrupt request when Phase Z (INDEX) edges or level match events happens.
648  * 0:Disable
649  * 1:Enable
650  */
651 #define PDGO_IRQ1_EN_PCNT0_Z_MASK (0x20000UL)
652 #define PDGO_IRQ1_EN_PCNT0_Z_SHIFT (17U)
653 #define PDGO_IRQ1_EN_PCNT0_Z_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCNT0_Z_SHIFT) & PDGO_IRQ1_EN_PCNT0_Z_MASK)
654 #define PDGO_IRQ1_EN_PCNT0_Z_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCNT0_Z_MASK) >> PDGO_IRQ1_EN_PCNT0_Z_SHIFT)
655 
656 /*
657  * PCNT0_UPDATE (RW)
658  *
659  * Allow pulse counter interrupt request when counter updates.
660  * 0:Disable
661  * 1:Enable
662  */
663 #define PDGO_IRQ1_EN_PCNT0_UPDATE_MASK (0x10000UL)
664 #define PDGO_IRQ1_EN_PCNT0_UPDATE_SHIFT (16U)
665 #define PDGO_IRQ1_EN_PCNT0_UPDATE_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCNT0_UPDATE_SHIFT) & PDGO_IRQ1_EN_PCNT0_UPDATE_MASK)
666 #define PDGO_IRQ1_EN_PCNT0_UPDATE_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCNT0_UPDATE_MASK) >> PDGO_IRQ1_EN_PCNT0_UPDATE_SHIFT)
667 
668 /*
669  * PCAP0_MATCH (RW)
670  *
671  * Allow PCAP0 interrupt request when match events happens.
672  * 0:Disable
673  * 1:Enable
674  */
675 #define PDGO_IRQ1_EN_PCAP0_MATCH_MASK (0x4U)
676 #define PDGO_IRQ1_EN_PCAP0_MATCH_SHIFT (2U)
677 #define PDGO_IRQ1_EN_PCAP0_MATCH_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCAP0_MATCH_SHIFT) & PDGO_IRQ1_EN_PCAP0_MATCH_MASK)
678 #define PDGO_IRQ1_EN_PCAP0_MATCH_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCAP0_MATCH_MASK) >> PDGO_IRQ1_EN_PCAP0_MATCH_SHIFT)
679 
680 /*
681  * PCAP0_DUMP (RW)
682  *
683  * Allow PCAP0 interrupt request when dump events happens.
684  * 0:Disable
685  * 1:Enable
686  */
687 #define PDGO_IRQ1_EN_PCAP0_DUMP_MASK (0x2U)
688 #define PDGO_IRQ1_EN_PCAP0_DUMP_SHIFT (1U)
689 #define PDGO_IRQ1_EN_PCAP0_DUMP_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCAP0_DUMP_SHIFT) & PDGO_IRQ1_EN_PCAP0_DUMP_MASK)
690 #define PDGO_IRQ1_EN_PCAP0_DUMP_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCAP0_DUMP_MASK) >> PDGO_IRQ1_EN_PCAP0_DUMP_SHIFT)
691 
692 /*
693  * PCAP0_PERIOD (RW)
694  *
695  * Allow PCAP0 interrupt request when period done.
696  * 0:Disable
697  * 1:Enable
698  */
699 #define PDGO_IRQ1_EN_PCAP0_PERIOD_MASK (0x1U)
700 #define PDGO_IRQ1_EN_PCAP0_PERIOD_SHIFT (0U)
701 #define PDGO_IRQ1_EN_PCAP0_PERIOD_SET(x) (((uint32_t)(x) << PDGO_IRQ1_EN_PCAP0_PERIOD_SHIFT) & PDGO_IRQ1_EN_PCAP0_PERIOD_MASK)
702 #define PDGO_IRQ1_EN_PCAP0_PERIOD_GET(x) (((uint32_t)(x) & PDGO_IRQ1_EN_PCAP0_PERIOD_MASK) >> PDGO_IRQ1_EN_PCAP0_PERIOD_SHIFT)
703 
704 /* Bitfield definition for register: IRQ1_STS */
705 /*
706  * PCNT0_SEQERR (W1C)
707  *
708  * pulse counter interrupt status when phase sequence error happens.
709  * 0: is invalid
710  * 1: is valid
711  */
712 #define PDGO_IRQ1_STS_PCNT0_SEQERR_MASK (0x800000UL)
713 #define PDGO_IRQ1_STS_PCNT0_SEQERR_SHIFT (23U)
714 #define PDGO_IRQ1_STS_PCNT0_SEQERR_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCNT0_SEQERR_SHIFT) & PDGO_IRQ1_STS_PCNT0_SEQERR_MASK)
715 #define PDGO_IRQ1_STS_PCNT0_SEQERR_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCNT0_SEQERR_MASK) >> PDGO_IRQ1_STS_PCNT0_SEQERR_SHIFT)
716 
717 /*
718  * PCNT0_DECERR (W1C)
719  *
720  * pulse counter interrupt status when decoder error happens.
721  * 0: is invalid
722  * 1: is valid
723  */
724 #define PDGO_IRQ1_STS_PCNT0_DECERR_MASK (0x400000UL)
725 #define PDGO_IRQ1_STS_PCNT0_DECERR_SHIFT (22U)
726 #define PDGO_IRQ1_STS_PCNT0_DECERR_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCNT0_DECERR_SHIFT) & PDGO_IRQ1_STS_PCNT0_DECERR_MASK)
727 #define PDGO_IRQ1_STS_PCNT0_DECERR_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCNT0_DECERR_MASK) >> PDGO_IRQ1_STS_PCNT0_DECERR_SHIFT)
728 
729 /*
730  * PCNT0_TACHO (W1C)
731  *
732  * pulse counter interrupt status when tacho done happens.
733  * 0: is invalid
734  * 1: is valid
735  */
736 #define PDGO_IRQ1_STS_PCNT0_TACHO_MASK (0x200000UL)
737 #define PDGO_IRQ1_STS_PCNT0_TACHO_SHIFT (21U)
738 #define PDGO_IRQ1_STS_PCNT0_TACHO_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCNT0_TACHO_SHIFT) & PDGO_IRQ1_STS_PCNT0_TACHO_MASK)
739 #define PDGO_IRQ1_STS_PCNT0_TACHO_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCNT0_TACHO_MASK) >> PDGO_IRQ1_STS_PCNT0_TACHO_SHIFT)
740 
741 /*
742  * PCNT0_MATCH0 (W1C)
743  *
744  * pulse counter interrupt status when match 0 events happens.
745  * 0: is invalid
746  * 1: is valid
747  */
748 #define PDGO_IRQ1_STS_PCNT0_MATCH0_MASK (0x80000UL)
749 #define PDGO_IRQ1_STS_PCNT0_MATCH0_SHIFT (19U)
750 #define PDGO_IRQ1_STS_PCNT0_MATCH0_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCNT0_MATCH0_SHIFT) & PDGO_IRQ1_STS_PCNT0_MATCH0_MASK)
751 #define PDGO_IRQ1_STS_PCNT0_MATCH0_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCNT0_MATCH0_MASK) >> PDGO_IRQ1_STS_PCNT0_MATCH0_SHIFT)
752 
753 /*
754  * PCNT0_HOME (W1C)
755  *
756  * pulse counter interrupt status when Phase H (HOME) edges or level match events happens.
757  * 0: is invalid
758  * 1: is valid
759  */
760 #define PDGO_IRQ1_STS_PCNT0_HOME_MASK (0x40000UL)
761 #define PDGO_IRQ1_STS_PCNT0_HOME_SHIFT (18U)
762 #define PDGO_IRQ1_STS_PCNT0_HOME_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCNT0_HOME_SHIFT) & PDGO_IRQ1_STS_PCNT0_HOME_MASK)
763 #define PDGO_IRQ1_STS_PCNT0_HOME_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCNT0_HOME_MASK) >> PDGO_IRQ1_STS_PCNT0_HOME_SHIFT)
764 
765 /*
766  * PCNT0_Z (W1C)
767  *
768  * pulse counter interrupt status when Phase Z (INDEX) edges or level match events happens.
769  * 0: is invalid
770  * 1: is valid
771  */
772 #define PDGO_IRQ1_STS_PCNT0_Z_MASK (0x20000UL)
773 #define PDGO_IRQ1_STS_PCNT0_Z_SHIFT (17U)
774 #define PDGO_IRQ1_STS_PCNT0_Z_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCNT0_Z_SHIFT) & PDGO_IRQ1_STS_PCNT0_Z_MASK)
775 #define PDGO_IRQ1_STS_PCNT0_Z_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCNT0_Z_MASK) >> PDGO_IRQ1_STS_PCNT0_Z_SHIFT)
776 
777 /*
778  * PCNT0_UPDATE (W1C)
779  *
780  * pulse counter interrupt status when counter updates.
781  * 0: is invalid
782  * 1: is valid
783  */
784 #define PDGO_IRQ1_STS_PCNT0_UPDATE_MASK (0x10000UL)
785 #define PDGO_IRQ1_STS_PCNT0_UPDATE_SHIFT (16U)
786 #define PDGO_IRQ1_STS_PCNT0_UPDATE_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCNT0_UPDATE_SHIFT) & PDGO_IRQ1_STS_PCNT0_UPDATE_MASK)
787 #define PDGO_IRQ1_STS_PCNT0_UPDATE_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCNT0_UPDATE_MASK) >> PDGO_IRQ1_STS_PCNT0_UPDATE_SHIFT)
788 
789 /*
790  * PCAP0_MATCH (W1C)
791  *
792  * PCAP0 interrupt status when match events happens.
793  * 0: is invalid
794  * 1: is valid
795  */
796 #define PDGO_IRQ1_STS_PCAP0_MATCH_MASK (0x4U)
797 #define PDGO_IRQ1_STS_PCAP0_MATCH_SHIFT (2U)
798 #define PDGO_IRQ1_STS_PCAP0_MATCH_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCAP0_MATCH_SHIFT) & PDGO_IRQ1_STS_PCAP0_MATCH_MASK)
799 #define PDGO_IRQ1_STS_PCAP0_MATCH_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCAP0_MATCH_MASK) >> PDGO_IRQ1_STS_PCAP0_MATCH_SHIFT)
800 
801 /*
802  * PCAP0_DUMP (W1C)
803  *
804  * PCAP0 interrupt status when dump events happens.
805  * 0: is invalid
806  * 1: is valid
807  */
808 #define PDGO_IRQ1_STS_PCAP0_DUMP_MASK (0x2U)
809 #define PDGO_IRQ1_STS_PCAP0_DUMP_SHIFT (1U)
810 #define PDGO_IRQ1_STS_PCAP0_DUMP_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCAP0_DUMP_SHIFT) & PDGO_IRQ1_STS_PCAP0_DUMP_MASK)
811 #define PDGO_IRQ1_STS_PCAP0_DUMP_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCAP0_DUMP_MASK) >> PDGO_IRQ1_STS_PCAP0_DUMP_SHIFT)
812 
813 /*
814  * PCAP0_PERIOD (W1C)
815  *
816  * PCAP0 interrupt status when period done.
817  * 0: is invalid
818  * 1: is valid
819  */
820 #define PDGO_IRQ1_STS_PCAP0_PERIOD_MASK (0x1U)
821 #define PDGO_IRQ1_STS_PCAP0_PERIOD_SHIFT (0U)
822 #define PDGO_IRQ1_STS_PCAP0_PERIOD_SET(x) (((uint32_t)(x) << PDGO_IRQ1_STS_PCAP0_PERIOD_SHIFT) & PDGO_IRQ1_STS_PCAP0_PERIOD_MASK)
823 #define PDGO_IRQ1_STS_PCAP0_PERIOD_GET(x) (((uint32_t)(x) & PDGO_IRQ1_STS_PCAP0_PERIOD_MASK) >> PDGO_IRQ1_STS_PCAP0_PERIOD_SHIFT)
824 
825 /* Bitfield definition for register array: GPR */
826 /*
827  * VALUE (RW)
828  *
829  * Value
830  */
831 #define PDGO_GPR_VALUE_MASK (0xFFFFFFFFUL)
832 #define PDGO_GPR_VALUE_SHIFT (0U)
833 #define PDGO_GPR_VALUE_SET(x) (((uint32_t)(x) << PDGO_GPR_VALUE_SHIFT) & PDGO_GPR_VALUE_MASK)
834 #define PDGO_GPR_VALUE_GET(x) (((uint32_t)(x) & PDGO_GPR_VALUE_MASK) >> PDGO_GPR_VALUE_SHIFT)
835 
836 /* Bitfield definition for register array: IOFILTER */
837 /*
838  * EN (RW)
839  *
840  * Allow this IO filter channel output
841  * 0: Disable
842  * 1: Enable
843  */
844 #define PDGO_IOFILTER_EN_MASK (0x80000000UL)
845 #define PDGO_IOFILTER_EN_SHIFT (31U)
846 #define PDGO_IOFILTER_EN_SET(x) (((uint32_t)(x) << PDGO_IOFILTER_EN_SHIFT) & PDGO_IOFILTER_EN_MASK)
847 #define PDGO_IOFILTER_EN_GET(x) (((uint32_t)(x) & PDGO_IOFILTER_EN_MASK) >> PDGO_IOFILTER_EN_SHIFT)
848 
849 /*
850  * IRQMODE (RW)
851  *
852  * Filter IRQ Mode:
853  * 0: Disable
854  * 1: Level Mode
855  * 2: Rising Edge
856  * 3: Rising Edge or Falling Edge
857  */
858 #define PDGO_IOFILTER_IRQMODE_MASK (0x3000000UL)
859 #define PDGO_IOFILTER_IRQMODE_SHIFT (24U)
860 #define PDGO_IOFILTER_IRQMODE_SET(x) (((uint32_t)(x) << PDGO_IOFILTER_IRQMODE_SHIFT) & PDGO_IOFILTER_IRQMODE_MASK)
861 #define PDGO_IOFILTER_IRQMODE_GET(x) (((uint32_t)(x) & PDGO_IOFILTER_IRQMODE_MASK) >> PDGO_IOFILTER_IRQMODE_SHIFT)
862 
863 /*
864  * NORM (RW)
865  *
866  * Initial output value
867  */
868 #define PDGO_IOFILTER_NORM_MASK (0x200000UL)
869 #define PDGO_IOFILTER_NORM_SHIFT (21U)
870 #define PDGO_IOFILTER_NORM_SET(x) (((uint32_t)(x) << PDGO_IOFILTER_NORM_SHIFT) & PDGO_IOFILTER_NORM_MASK)
871 #define PDGO_IOFILTER_NORM_GET(x) (((uint32_t)(x) & PDGO_IOFILTER_NORM_MASK) >> PDGO_IOFILTER_NORM_SHIFT)
872 
873 /*
874  * INV (RW)
875  *
876  * Invert Filter output result.
877  */
878 #define PDGO_IOFILTER_INV_MASK (0x100000UL)
879 #define PDGO_IOFILTER_INV_SHIFT (20U)
880 #define PDGO_IOFILTER_INV_SET(x) (((uint32_t)(x) << PDGO_IOFILTER_INV_SHIFT) & PDGO_IOFILTER_INV_MASK)
881 #define PDGO_IOFILTER_INV_GET(x) (((uint32_t)(x) & PDGO_IOFILTER_INV_MASK) >> PDGO_IOFILTER_INV_SHIFT)
882 
883 /*
884  * BYPASS (RW)
885  *
886  * Bypass Mode
887  * 0: Disable Bypass Mode
888  * 1: Enable Bypass Mode, use filter input as result output
889  */
890 #define PDGO_IOFILTER_BYPASS_MASK (0x40000UL)
891 #define PDGO_IOFILTER_BYPASS_SHIFT (18U)
892 #define PDGO_IOFILTER_BYPASS_SET(x) (((uint32_t)(x) << PDGO_IOFILTER_BYPASS_SHIFT) & PDGO_IOFILTER_BYPASS_MASK)
893 #define PDGO_IOFILTER_BYPASS_GET(x) (((uint32_t)(x) & PDGO_IOFILTER_BYPASS_MASK) >> PDGO_IOFILTER_BYPASS_SHIFT)
894 
895 /*
896  * MODE (RW)
897  *
898  * Filter Mode:
899  * 0: Rapid change mode
900  * 1: Delay filter mode
901  * 2: Stalbe low mode
902  * 3: Stable high mode
903  */
904 #define PDGO_IOFILTER_MODE_MASK (0x30000UL)
905 #define PDGO_IOFILTER_MODE_SHIFT (16U)
906 #define PDGO_IOFILTER_MODE_SET(x) (((uint32_t)(x) << PDGO_IOFILTER_MODE_SHIFT) & PDGO_IOFILTER_MODE_MASK)
907 #define PDGO_IOFILTER_MODE_GET(x) (((uint32_t)(x) & PDGO_IOFILTER_MODE_MASK) >> PDGO_IOFILTER_MODE_SHIFT)
908 
909 /*
910  * FILTER_LEN (RW)
911  *
912  * Filter Length(Base on 32K clock)
913  */
914 #define PDGO_IOFILTER_FILTER_LEN_MASK (0x3FFU)
915 #define PDGO_IOFILTER_FILTER_LEN_SHIFT (0U)
916 #define PDGO_IOFILTER_FILTER_LEN_SET(x) (((uint32_t)(x) << PDGO_IOFILTER_FILTER_LEN_SHIFT) & PDGO_IOFILTER_FILTER_LEN_MASK)
917 #define PDGO_IOFILTER_FILTER_LEN_GET(x) (((uint32_t)(x) & PDGO_IOFILTER_FILTER_LEN_MASK) >> PDGO_IOFILTER_FILTER_LEN_SHIFT)
918 
919 /* Bitfield definition for register of struct array PCAP: CTRL */
920 /*
921  * EN (RW)
922  *
923  * Enable PCAP counter
924  * 0: Disable
925  * 1: Enable
926  * Note: Other registers should be configured before enable this bit.
927  */
928 #define PDGO_PCAP_CTRL_EN_MASK (0x80000000UL)
929 #define PDGO_PCAP_CTRL_EN_SHIFT (31U)
930 #define PDGO_PCAP_CTRL_EN_SET(x) (((uint32_t)(x) << PDGO_PCAP_CTRL_EN_SHIFT) & PDGO_PCAP_CTRL_EN_MASK)
931 #define PDGO_PCAP_CTRL_EN_GET(x) (((uint32_t)(x) & PDGO_PCAP_CTRL_EN_MASK) >> PDGO_PCAP_CTRL_EN_SHIFT)
932 
933 /*
934  * SELECT (RW)
935  *
936  * Select Input for counter:
937  * 0: Use WUIO0 as input
938  * 1: Use WUIO1 as input
939  * 2: Use WUIO2 as input
940  * 3: Use WUIO3 as input
941  */
942 #define PDGO_PCAP_CTRL_SELECT_MASK (0x3000000UL)
943 #define PDGO_PCAP_CTRL_SELECT_SHIFT (24U)
944 #define PDGO_PCAP_CTRL_SELECT_SET(x) (((uint32_t)(x) << PDGO_PCAP_CTRL_SELECT_SHIFT) & PDGO_PCAP_CTRL_SELECT_MASK)
945 #define PDGO_PCAP_CTRL_SELECT_GET(x) (((uint32_t)(x) & PDGO_PCAP_CTRL_SELECT_MASK) >> PDGO_PCAP_CTRL_SELECT_SHIFT)
946 
947 /*
948  * MATCH_MODE (RW)
949  *
950  * Match Mode Selection. Generate Match Pulse when :
951  * 0 : Disable Match Mode;
952  * 1 : Reserved;
953  * 2 : COUNTER >= COMPARE;
954  * 3 : COUNTER <= COMPARE;
955  * 4 : HIGH_DUMP >= COMPARE;
956  * 5 : HIGH_DUMP <= COMPARE;
957  * 6 : LOW_DUMP >= COMPARE;
958  * 7 : LOW_DUMP <= COMPARE;
959  * 8 : (HIGH_DUMP + LOW_DUMP) >= COMPARE;
960  * 9 : (HIGH_DUMP + LOW_DUMP) <= COMPARE;
961  * 10 : | HIGH_DUMP - LOW_DUMP | >= COMPARE;
962  * 11 : | HIGH_DUMP - LOW_DUMP | <= COMPARE;
963  * 12 : | HIGH_DUMP - LOW_DUMP | >= COMPARE and HIGH_DUMP >= LOW_DUMP;
964  * 13 : | HIGH_DUMP - LOW_DUMP | <= COMPARE and LOW_DUMP >= HIGH_DUMP;
965  * 14 : | HIGH_DUMP - LOW_DUMP | >= COMPARE and HIGH_DUMP <= LOW_DUMP;
966  * 15 : | HIGH_DUMP - LOW_DUMP | <= COMPARE and LOW_DUMP <= HIGH_DUMP;
967  */
968 #define PDGO_PCAP_CTRL_MATCH_MODE_MASK (0xF0000UL)
969 #define PDGO_PCAP_CTRL_MATCH_MODE_SHIFT (16U)
970 #define PDGO_PCAP_CTRL_MATCH_MODE_SET(x) (((uint32_t)(x) << PDGO_PCAP_CTRL_MATCH_MODE_SHIFT) & PDGO_PCAP_CTRL_MATCH_MODE_MASK)
971 #define PDGO_PCAP_CTRL_MATCH_MODE_GET(x) (((uint32_t)(x) & PDGO_PCAP_CTRL_MATCH_MODE_MASK) >> PDGO_PCAP_CTRL_MATCH_MODE_SHIFT)
972 
973 /*
974  * DUMP_MODE (RW)
975  *
976  * Dump Mode, select the time using to update LOW_DUMP(input signal's low level time) and HIGH_DUMP(input signal's high level time):
977  * 00: Disable Dump
978  * 01: Update at rising edge. (input selection via SELECT bit field)
979  * 10: Update at falling edge. (input selected via SELECT bit field)
980  * 11: Update when COUNTER counts period done.
981  */
982 #define PDGO_PCAP_CTRL_DUMP_MODE_MASK (0x300U)
983 #define PDGO_PCAP_CTRL_DUMP_MODE_SHIFT (8U)
984 #define PDGO_PCAP_CTRL_DUMP_MODE_SET(x) (((uint32_t)(x) << PDGO_PCAP_CTRL_DUMP_MODE_SHIFT) & PDGO_PCAP_CTRL_DUMP_MODE_MASK)
985 #define PDGO_PCAP_CTRL_DUMP_MODE_GET(x) (((uint32_t)(x) & PDGO_PCAP_CTRL_DUMP_MODE_MASK) >> PDGO_PCAP_CTRL_DUMP_MODE_SHIFT)
986 
987 /*
988  * COUNT_MODE (RW)
989  *
990  * Count Mode
991  * - when Bit[0]:
992  * 0: Count up
993  * 1: Count down
994  * - when Bit[1]:
995  * 0: Oneshot mode
996  * 1: Period Mode
997  * - when Bit[3:2]:
998  * 00: Count by internal 32KHz clock
999  * 01: Count updates when rising edge
1000  * 10: Count updates when falling edge
1001  */
1002 #define PDGO_PCAP_CTRL_COUNT_MODE_MASK (0xFU)
1003 #define PDGO_PCAP_CTRL_COUNT_MODE_SHIFT (0U)
1004 #define PDGO_PCAP_CTRL_COUNT_MODE_SET(x) (((uint32_t)(x) << PDGO_PCAP_CTRL_COUNT_MODE_SHIFT) & PDGO_PCAP_CTRL_COUNT_MODE_MASK)
1005 #define PDGO_PCAP_CTRL_COUNT_MODE_GET(x) (((uint32_t)(x) & PDGO_PCAP_CTRL_COUNT_MODE_MASK) >> PDGO_PCAP_CTRL_COUNT_MODE_SHIFT)
1006 
1007 /* Bitfield definition for register of struct array PCAP: CP_CFG */
1008 /*
1009  * COMPARE (RW)
1010  *
1011  * Compare Value
1012  * Note: This is a SYNC register, and it won't be valid immediately after change. It can be change only after last configuration valid.
1013  */
1014 #define PDGO_PCAP_CP_CFG_COMPARE_MASK (0xFFFF0000UL)
1015 #define PDGO_PCAP_CP_CFG_COMPARE_SHIFT (16U)
1016 #define PDGO_PCAP_CP_CFG_COMPARE_SET(x) (((uint32_t)(x) << PDGO_PCAP_CP_CFG_COMPARE_SHIFT) & PDGO_PCAP_CP_CFG_COMPARE_MASK)
1017 #define PDGO_PCAP_CP_CFG_COMPARE_GET(x) (((uint32_t)(x) & PDGO_PCAP_CP_CFG_COMPARE_MASK) >> PDGO_PCAP_CP_CFG_COMPARE_SHIFT)
1018 
1019 /*
1020  * PERIOD (RW)
1021  *
1022  * Period Value
1023  * Note: This is a SYNC register, and it won't be valid immediately after change. It can be change only after last configuration valid.
1024  */
1025 #define PDGO_PCAP_CP_CFG_PERIOD_MASK (0xFFFFU)
1026 #define PDGO_PCAP_CP_CFG_PERIOD_SHIFT (0U)
1027 #define PDGO_PCAP_CP_CFG_PERIOD_SET(x) (((uint32_t)(x) << PDGO_PCAP_CP_CFG_PERIOD_SHIFT) & PDGO_PCAP_CP_CFG_PERIOD_MASK)
1028 #define PDGO_PCAP_CP_CFG_PERIOD_GET(x) (((uint32_t)(x) & PDGO_PCAP_CP_CFG_PERIOD_MASK) >> PDGO_PCAP_CP_CFG_PERIOD_SHIFT)
1029 
1030 /* Bitfield definition for register of struct array PCAP: COUNTER */
1031 /*
1032  * COUNTER (RW)
1033  *
1034  * Counter Value
1035  */
1036 #define PDGO_PCAP_COUNTER_COUNTER_MASK (0xFFFFU)
1037 #define PDGO_PCAP_COUNTER_COUNTER_SHIFT (0U)
1038 #define PDGO_PCAP_COUNTER_COUNTER_SET(x) (((uint32_t)(x) << PDGO_PCAP_COUNTER_COUNTER_SHIFT) & PDGO_PCAP_COUNTER_COUNTER_MASK)
1039 #define PDGO_PCAP_COUNTER_COUNTER_GET(x) (((uint32_t)(x) & PDGO_PCAP_COUNTER_COUNTER_MASK) >> PDGO_PCAP_COUNTER_COUNTER_SHIFT)
1040 
1041 /* Bitfield definition for register of struct array PCAP: DUMP */
1042 /*
1043  * LOW_DUMP (RW)
1044  *
1045  * Dump Value: Low Level Time(Base on 32K Clock)
1046  */
1047 #define PDGO_PCAP_DUMP_LOW_DUMP_MASK (0xFFFF0000UL)
1048 #define PDGO_PCAP_DUMP_LOW_DUMP_SHIFT (16U)
1049 #define PDGO_PCAP_DUMP_LOW_DUMP_SET(x) (((uint32_t)(x) << PDGO_PCAP_DUMP_LOW_DUMP_SHIFT) & PDGO_PCAP_DUMP_LOW_DUMP_MASK)
1050 #define PDGO_PCAP_DUMP_LOW_DUMP_GET(x) (((uint32_t)(x) & PDGO_PCAP_DUMP_LOW_DUMP_MASK) >> PDGO_PCAP_DUMP_LOW_DUMP_SHIFT)
1051 
1052 /*
1053  * HIGH_DUMP (RW)
1054  *
1055  * Dump Value: High Level Time(Base on 32K Clock)
1056  */
1057 #define PDGO_PCAP_DUMP_HIGH_DUMP_MASK (0xFFFFU)
1058 #define PDGO_PCAP_DUMP_HIGH_DUMP_SHIFT (0U)
1059 #define PDGO_PCAP_DUMP_HIGH_DUMP_SET(x) (((uint32_t)(x) << PDGO_PCAP_DUMP_HIGH_DUMP_SHIFT) & PDGO_PCAP_DUMP_HIGH_DUMP_MASK)
1060 #define PDGO_PCAP_DUMP_HIGH_DUMP_GET(x) (((uint32_t)(x) & PDGO_PCAP_DUMP_HIGH_DUMP_MASK) >> PDGO_PCAP_DUMP_HIGH_DUMP_SHIFT)
1061 
1062 /* Bitfield definition for register of struct array PCNT: CNT_CFG */
1063 /*
1064  * EN (RW)
1065  *
1066  * Enable Pulse Counter
1067  * 0: Disable
1068  * 1: Enable
1069  * Note: Other registers should be configured before enable this bit.
1070  */
1071 #define PDGO_PCNT_CNT_CFG_EN_MASK (0x80000000UL)
1072 #define PDGO_PCNT_CNT_CFG_EN_SHIFT (31U)
1073 #define PDGO_PCNT_CNT_CFG_EN_SET(x) (((uint32_t)(x) << PDGO_PCNT_CNT_CFG_EN_SHIFT) & PDGO_PCNT_CNT_CFG_EN_MASK)
1074 #define PDGO_PCNT_CNT_CFG_EN_GET(x) (((uint32_t)(x) & PDGO_PCNT_CNT_CFG_EN_MASK) >> PDGO_PCNT_CNT_CFG_EN_SHIFT)
1075 
1076 /*
1077  * OVRD (RW)
1078  *
1079  * Software Override Direction
1080  * 0: Disable
1081  * 1: Enable
1082  */
1083 #define PDGO_PCNT_CNT_CFG_OVRD_MASK (0x1000U)
1084 #define PDGO_PCNT_CNT_CFG_OVRD_SHIFT (12U)
1085 #define PDGO_PCNT_CNT_CFG_OVRD_SET(x) (((uint32_t)(x) << PDGO_PCNT_CNT_CFG_OVRD_SHIFT) & PDGO_PCNT_CNT_CFG_OVRD_MASK)
1086 #define PDGO_PCNT_CNT_CFG_OVRD_GET(x) (((uint32_t)(x) & PDGO_PCNT_CNT_CFG_OVRD_MASK) >> PDGO_PCNT_CNT_CFG_OVRD_SHIFT)
1087 
1088 /*
1089  * SEQ (RW)
1090  *
1091  * Change the direction of decoder
1092  * 0: Disable
1093  * 1: Enable
1094  * If enable:
1095  * In PD Mode:modify the positive direction by using high level in D channel as forward .
1096  * In UD Mode:modify the positive direction by using pulse in U channel as forward, pulse in D channel as reverse.
1097  * In ABZ Mode:modify the positive direction by using B channel's phase lead over A channel as forward.
1098  * In UVW Mode:modify the positive direction by using W channel lead as forward.
1099  */
1100 #define PDGO_PCNT_CNT_CFG_SEQ_MASK (0x100U)
1101 #define PDGO_PCNT_CNT_CFG_SEQ_SHIFT (8U)
1102 #define PDGO_PCNT_CNT_CFG_SEQ_SET(x) (((uint32_t)(x) << PDGO_PCNT_CNT_CFG_SEQ_SHIFT) & PDGO_PCNT_CNT_CFG_SEQ_MASK)
1103 #define PDGO_PCNT_CNT_CFG_SEQ_GET(x) (((uint32_t)(x) & PDGO_PCNT_CNT_CFG_SEQ_MASK) >> PDGO_PCNT_CNT_CFG_SEQ_SHIFT)
1104 
1105 /*
1106  * BIAS (RW)
1107  *
1108  * Bias compensation, compensation for decoded phase
1109  */
1110 #define PDGO_PCNT_CNT_CFG_BIAS_MASK (0x70U)
1111 #define PDGO_PCNT_CNT_CFG_BIAS_SHIFT (4U)
1112 #define PDGO_PCNT_CNT_CFG_BIAS_SET(x) (((uint32_t)(x) << PDGO_PCNT_CNT_CFG_BIAS_SHIFT) & PDGO_PCNT_CNT_CFG_BIAS_MASK)
1113 #define PDGO_PCNT_CNT_CFG_BIAS_GET(x) (((uint32_t)(x) & PDGO_PCNT_CNT_CFG_BIAS_MASK) >> PDGO_PCNT_CNT_CFG_BIAS_SHIFT)
1114 
1115 /*
1116  * DECODE_MODE (RW)
1117  *
1118  * Decode Mode:
1119  * 0: MODE_AB_4X
1120  * 1: MODE_AB_2X
1121  * 2: MODE_AB_1X
1122  * 3: Reserved
1123  * 4: MODE_PD_1X
1124  * 5: MODE_PDF1X(Disable checking of direction change when input pulse is valid)
1125  * 6: MODE_PD_2X
1126  * 7: MODE_PDF2X(Disable checking of direction change when input pulse is valid)
1127  * 8: MODE_UD_1X
1128  * 9: MODE_UDF1X(Disable checking if both channel U and D are valid at the same time)
1129  * 10: MODE_UD_2X
1130  * 11: MODE_UDF2X(Disable checking if both channel U and D are valid at the same time)
1131  * 12: MODE_UVW6X (120°)
1132  * 13: MODE_UVW6Y ( 60°)
1133  * 14: Reserved
1134  * 15: Reserved
1135  */
1136 #define PDGO_PCNT_CNT_CFG_DECODE_MODE_MASK (0xFU)
1137 #define PDGO_PCNT_CNT_CFG_DECODE_MODE_SHIFT (0U)
1138 #define PDGO_PCNT_CNT_CFG_DECODE_MODE_SET(x) (((uint32_t)(x) << PDGO_PCNT_CNT_CFG_DECODE_MODE_SHIFT) & PDGO_PCNT_CNT_CFG_DECODE_MODE_MASK)
1139 #define PDGO_PCNT_CNT_CFG_DECODE_MODE_GET(x) (((uint32_t)(x) & PDGO_PCNT_CNT_CFG_DECODE_MODE_MASK) >> PDGO_PCNT_CNT_CFG_DECODE_MODE_SHIFT)
1140 
1141 /* Bitfield definition for register of struct array PCNT: CALIB_CFG */
1142 /*
1143  * ZMODE (RW)
1144  *
1145  * Phase Z Mode Select
1146  * 0:Disable
1147  * 1:Edge Mode(Use Edge in ZSTATE Register)
1148  * 2:Level Mode(Match Phase A,B and Z)
1149  * 3:Level Mode(Only Match Phase Z)
1150  */
1151 #define PDGO_PCNT_CALIB_CFG_ZMODE_MASK (0x300000UL)
1152 #define PDGO_PCNT_CALIB_CFG_ZMODE_SHIFT (20U)
1153 #define PDGO_PCNT_CALIB_CFG_ZMODE_SET(x) (((uint32_t)(x) << PDGO_PCNT_CALIB_CFG_ZMODE_SHIFT) & PDGO_PCNT_CALIB_CFG_ZMODE_MASK)
1154 #define PDGO_PCNT_CALIB_CFG_ZMODE_GET(x) (((uint32_t)(x) & PDGO_PCNT_CALIB_CFG_ZMODE_MASK) >> PDGO_PCNT_CALIB_CFG_ZMODE_SHIFT)
1155 
1156 /*
1157  * ZSTATE (RW)
1158  *
1159  * Phase Z Matching Status
1160  * -When in level mode:
1161  * A bit2 of 1 indicates at the rising edge of the Z phase, and 0 at the falling edge.
1162  * The remaining bits correspond to the level state of the HZBA phase.
1163  * -When edge mode:
1164  * If bit3 is 1: Match Z-phase rising edge, reverse
1165  * If bit2 is 1: Match Z-phase falling edge, forward
1166  * If bit1 is 1: Match Z-phase falling edge, reverse
1167  * If bit0 is 1: Match Z-phase rising edge, forward.
1168  */
1169 #define PDGO_PCNT_CALIB_CFG_ZSTATE_MASK (0xF0000UL)
1170 #define PDGO_PCNT_CALIB_CFG_ZSTATE_SHIFT (16U)
1171 #define PDGO_PCNT_CALIB_CFG_ZSTATE_SET(x) (((uint32_t)(x) << PDGO_PCNT_CALIB_CFG_ZSTATE_SHIFT) & PDGO_PCNT_CALIB_CFG_ZSTATE_MASK)
1172 #define PDGO_PCNT_CALIB_CFG_ZSTATE_GET(x) (((uint32_t)(x) & PDGO_PCNT_CALIB_CFG_ZSTATE_MASK) >> PDGO_PCNT_CALIB_CFG_ZSTATE_SHIFT)
1173 
1174 /*
1175  * H_SEL (RW)
1176  *
1177  * Select Input for Phase H:
1178  * 0:WUIO0
1179  * 1:WUIO1
1180  * 2:WUIO2
1181  * 3:WUIO3
1182  */
1183 #define PDGO_PCNT_CALIB_CFG_H_SEL_MASK (0x3000U)
1184 #define PDGO_PCNT_CALIB_CFG_H_SEL_SHIFT (12U)
1185 #define PDGO_PCNT_CALIB_CFG_H_SEL_SET(x) (((uint32_t)(x) << PDGO_PCNT_CALIB_CFG_H_SEL_SHIFT) & PDGO_PCNT_CALIB_CFG_H_SEL_MASK)
1186 #define PDGO_PCNT_CALIB_CFG_H_SEL_GET(x) (((uint32_t)(x) & PDGO_PCNT_CALIB_CFG_H_SEL_MASK) >> PDGO_PCNT_CALIB_CFG_H_SEL_SHIFT)
1187 
1188 /*
1189  * Z_SEL (RW)
1190  *
1191  * Select Input for Phase Z:
1192  * 0:WUIO0
1193  * 1:WUIO1
1194  * 2:WUIO2
1195  * 3:WUIO3
1196  */
1197 #define PDGO_PCNT_CALIB_CFG_Z_SEL_MASK (0x300U)
1198 #define PDGO_PCNT_CALIB_CFG_Z_SEL_SHIFT (8U)
1199 #define PDGO_PCNT_CALIB_CFG_Z_SEL_SET(x) (((uint32_t)(x) << PDGO_PCNT_CALIB_CFG_Z_SEL_SHIFT) & PDGO_PCNT_CALIB_CFG_Z_SEL_MASK)
1200 #define PDGO_PCNT_CALIB_CFG_Z_SEL_GET(x) (((uint32_t)(x) & PDGO_PCNT_CALIB_CFG_Z_SEL_MASK) >> PDGO_PCNT_CALIB_CFG_Z_SEL_SHIFT)
1201 
1202 /*
1203  * B_SEL (RW)
1204  *
1205  * Select Input for Phase B:
1206  * 0:WUIO0
1207  * 1:WUIO1
1208  * 2:WUIO2
1209  * 3:WUIO3
1210  */
1211 #define PDGO_PCNT_CALIB_CFG_B_SEL_MASK (0x30U)
1212 #define PDGO_PCNT_CALIB_CFG_B_SEL_SHIFT (4U)
1213 #define PDGO_PCNT_CALIB_CFG_B_SEL_SET(x) (((uint32_t)(x) << PDGO_PCNT_CALIB_CFG_B_SEL_SHIFT) & PDGO_PCNT_CALIB_CFG_B_SEL_MASK)
1214 #define PDGO_PCNT_CALIB_CFG_B_SEL_GET(x) (((uint32_t)(x) & PDGO_PCNT_CALIB_CFG_B_SEL_MASK) >> PDGO_PCNT_CALIB_CFG_B_SEL_SHIFT)
1215 
1216 /*
1217  * A_SEL (RW)
1218  *
1219  * Select Input for Phase A:
1220  * 0:WUIO0
1221  * 1:WUIO1
1222  * 2:WUIO2
1223  * 3:WUIO3
1224  */
1225 #define PDGO_PCNT_CALIB_CFG_A_SEL_MASK (0x3U)
1226 #define PDGO_PCNT_CALIB_CFG_A_SEL_SHIFT (0U)
1227 #define PDGO_PCNT_CALIB_CFG_A_SEL_SET(x) (((uint32_t)(x) << PDGO_PCNT_CALIB_CFG_A_SEL_SHIFT) & PDGO_PCNT_CALIB_CFG_A_SEL_MASK)
1228 #define PDGO_PCNT_CALIB_CFG_A_SEL_GET(x) (((uint32_t)(x) & PDGO_PCNT_CALIB_CFG_A_SEL_MASK) >> PDGO_PCNT_CALIB_CFG_A_SEL_SHIFT)
1229 
1230 /* Bitfield definition for register of struct array PCNT: RESOLUTION */
1231 /*
1232  * RESOLUTION (RW)
1233  *
1234  * Resolution Value
1235  * Note:The Field in this register is the same as COUNTER register, so if target resolution value is TARGET_LINES , it should be shifted according to the current DECODE_MODE, and then decrease 1 because it counts from 0, it means when:
1236  * MODE_AB_4X: RESOLUTION = (TARGET_LINES << 2) - 1;
1237  * MODE_AB_2X: RESOLUTION = (TARGET_LINES << 1) - 1;
1238  * MODE_AB_1X: RESOLUTION = (TARGET_LINES << 0) - 1;
1239  * MODE_PD_1X: RESOLUTION = (TARGET_LINES << 0) - 1;
1240  * MODE_PDF1X: RESOLUTION = (TARGET_LINES << 0) - 1;
1241  * MODE_PD_2X: RESOLUTION = (TARGET_LINES << 1) - 1;
1242  * MODE_PDF2X: RESOLUTION = (TARGET_LINES << 1) - 1;
1243  * MODE_UD_1X: RESOLUTION = (TARGET_LINES << 0) - 1;
1244  * MODE_UDF1X: RESOLUTION = (TARGET_LINES << 0) - 1;
1245  * MODE_UD_2X: RESOLUTION = (TARGET_LINES << 1) - 1;
1246  * MODE_UDF2X: RESOLUTION = (TARGET_LINES << 1) - 1;
1247  * MODE_UVW6X: RESOLUTION = (TARGET_LINES << 3) - 1;
1248  * MODE_UVW6Y: RESOLUTION = (TARGET_LINES << 3) - 1;
1249  */
1250 #define PDGO_PCNT_RESOLUTION_RESOLUTION_MASK (0xFFFFFFFFUL)
1251 #define PDGO_PCNT_RESOLUTION_RESOLUTION_SHIFT (0U)
1252 #define PDGO_PCNT_RESOLUTION_RESOLUTION_SET(x) (((uint32_t)(x) << PDGO_PCNT_RESOLUTION_RESOLUTION_SHIFT) & PDGO_PCNT_RESOLUTION_RESOLUTION_MASK)
1253 #define PDGO_PCNT_RESOLUTION_RESOLUTION_GET(x) (((uint32_t)(x) & PDGO_PCNT_RESOLUTION_RESOLUTION_MASK) >> PDGO_PCNT_RESOLUTION_RESOLUTION_SHIFT)
1254 
1255 /* Bitfield definition for register of struct array PCNT: HOMING_CFG */
1256 /*
1257  * RNG_CMP_SRC (RW)
1258  *
1259  * Select Compare Source for Comparator 0 in Range Match mode ( Mode1 ):
1260  * 0: Compare value from counter (Line+Phase), compare when counter updates
1261  * 1: Compare value from counter (Revolution+Line+Phase), compare when counter updates
1262  * 2: Compare value from tacho_line(16bits), compare after each tacho
1263  * 3: Compare value from tacho_time(16bits), compare after each tacho
1264  */
1265 #define PDGO_PCNT_HOMING_CFG_RNG_CMP_SRC_MASK (0x300000UL)
1266 #define PDGO_PCNT_HOMING_CFG_RNG_CMP_SRC_SHIFT (20U)
1267 #define PDGO_PCNT_HOMING_CFG_RNG_CMP_SRC_SET(x) (((uint32_t)(x) << PDGO_PCNT_HOMING_CFG_RNG_CMP_SRC_SHIFT) & PDGO_PCNT_HOMING_CFG_RNG_CMP_SRC_MASK)
1268 #define PDGO_PCNT_HOMING_CFG_RNG_CMP_SRC_GET(x) (((uint32_t)(x) & PDGO_PCNT_HOMING_CFG_RNG_CMP_SRC_MASK) >> PDGO_PCNT_HOMING_CFG_RNG_CMP_SRC_SHIFT)
1269 
1270 /*
1271  * CMP0_MODE (RW)
1272  *
1273  * Match Mode for Comparator 0:
1274  * Comparison point 0 matches mode:
1275  * Mode0 : Disable.
1276  * Mode1 : Range Match:
1277  * If CMP0 <= CMP1, match valid when CMP0 <= RNG_CMP_SRC <= CMP1;
1278  * If CMP0 > CMP1, match valid when CMP0 <= RNG_CMP_SRC or RNG_CMP_SRC <= CMP1;
1279  * Note: The interrupt will be only available when entry and exit compare, i.e., it is generated only twice, but you can check whether it matches or not through the status bit in register.
1280  * Mode2 : when the COUNTER value matches the CMP0;
1281  * Mode3 : when the COUNTER value matches the CMP0; and the direction update value should be the same as the current direction;
1282  * Mode4: when counting up, the COUNTER value matches the CMP0;
1283  * Mode5: when counting up, the COUNTER value matches the CMP0; and the direction update value should be the same as the current direction;
1284  * Mode6: when counting down, the COUNTER value matches the CMP0;
1285  * Mode7: when counting down, the COUNTER value matches the CMP0; and the direction update value should be the same as the current direction;
1286  * Direction update value: direction decoded by the decoder according to the Phase (e.g. Phase 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 0 ...... mean forward.
1287  * Current Direction: direction decoded by the comparator based on the line field in counter.
1288  */
1289 #define PDGO_PCNT_HOMING_CFG_CMP0_MODE_MASK (0x70000UL)
1290 #define PDGO_PCNT_HOMING_CFG_CMP0_MODE_SHIFT (16U)
1291 #define PDGO_PCNT_HOMING_CFG_CMP0_MODE_SET(x) (((uint32_t)(x) << PDGO_PCNT_HOMING_CFG_CMP0_MODE_SHIFT) & PDGO_PCNT_HOMING_CFG_CMP0_MODE_MASK)
1292 #define PDGO_PCNT_HOMING_CFG_CMP0_MODE_GET(x) (((uint32_t)(x) & PDGO_PCNT_HOMING_CFG_CMP0_MODE_MASK) >> PDGO_PCNT_HOMING_CFG_CMP0_MODE_SHIFT)
1293 
1294 /*
1295  * DMODE (RW)
1296  *
1297  * Dump Mode Selection
1298  * 0:Disable
1299  * 1:Edge Mode(Use Edge in DSTATE Register)
1300  * 2:Level Mode(Match Phase A,B and H)
1301  * 3:Level Mode(Only Match Phase H)
1302  */
1303 #define PDGO_PCNT_HOMING_CFG_DMODE_MASK (0x3000U)
1304 #define PDGO_PCNT_HOMING_CFG_DMODE_SHIFT (12U)
1305 #define PDGO_PCNT_HOMING_CFG_DMODE_SET(x) (((uint32_t)(x) << PDGO_PCNT_HOMING_CFG_DMODE_SHIFT) & PDGO_PCNT_HOMING_CFG_DMODE_MASK)
1306 #define PDGO_PCNT_HOMING_CFG_DMODE_GET(x) (((uint32_t)(x) & PDGO_PCNT_HOMING_CFG_DMODE_MASK) >> PDGO_PCNT_HOMING_CFG_DMODE_SHIFT)
1307 
1308 /*
1309  * DSTATE (RW)
1310  *
1311  * Dump Match State
1312  * When level mode:
1313  * The remaining bits correspond to the level state of the HZBA phase, respectively.
1314  * When edge mode:
1315  * Bit3: H-phase rising edge, reverse
1316  * Bit2: H-phase falling edge, forward
1317  * Bit1: H-phase falling edge, reverse
1318  * Bit0: H-phase rising edge, forward.
1319  */
1320 #define PDGO_PCNT_HOMING_CFG_DSTATE_MASK (0xF00U)
1321 #define PDGO_PCNT_HOMING_CFG_DSTATE_SHIFT (8U)
1322 #define PDGO_PCNT_HOMING_CFG_DSTATE_SET(x) (((uint32_t)(x) << PDGO_PCNT_HOMING_CFG_DSTATE_SHIFT) & PDGO_PCNT_HOMING_CFG_DSTATE_MASK)
1323 #define PDGO_PCNT_HOMING_CFG_DSTATE_GET(x) (((uint32_t)(x) & PDGO_PCNT_HOMING_CFG_DSTATE_MASK) >> PDGO_PCNT_HOMING_CFG_DSTATE_SHIFT)
1324 
1325 /*
1326  * HMODE (RW)
1327  *
1328  * Phase H Mode Selection
1329  * 0:Disable
1330  * 1:Edge Mode(Use Edge in HSTATE Register)
1331  * 2:Level Mode(Match Phase A,B and H)
1332  * 3:Level Mode(Only Match Phase H)
1333  */
1334 #define PDGO_PCNT_HOMING_CFG_HMODE_MASK (0x30U)
1335 #define PDGO_PCNT_HOMING_CFG_HMODE_SHIFT (4U)
1336 #define PDGO_PCNT_HOMING_CFG_HMODE_SET(x) (((uint32_t)(x) << PDGO_PCNT_HOMING_CFG_HMODE_SHIFT) & PDGO_PCNT_HOMING_CFG_HMODE_MASK)
1337 #define PDGO_PCNT_HOMING_CFG_HMODE_GET(x) (((uint32_t)(x) & PDGO_PCNT_HOMING_CFG_HMODE_MASK) >> PDGO_PCNT_HOMING_CFG_HMODE_SHIFT)
1338 
1339 /*
1340  * HSTATE (RW)
1341  *
1342  * H-Phase Match State
1343  * When level mode:
1344  * Each bit correspond to the level state of the HZBA phase, respectively.
1345  * When edge mode:
1346  * If bit3 is 1: Match H-phase rising edge, reverse
1347  * If bit2 is 1: Match H-phase falling edge, forward
1348  * If bit1 is 1: Match H-phase falling edge, reverse
1349  * If bit0 is 1: Match H-phase rising edge, forward.
1350  */
1351 #define PDGO_PCNT_HOMING_CFG_HSTATE_MASK (0xFU)
1352 #define PDGO_PCNT_HOMING_CFG_HSTATE_SHIFT (0U)
1353 #define PDGO_PCNT_HOMING_CFG_HSTATE_SET(x) (((uint32_t)(x) << PDGO_PCNT_HOMING_CFG_HSTATE_SHIFT) & PDGO_PCNT_HOMING_CFG_HSTATE_MASK)
1354 #define PDGO_PCNT_HOMING_CFG_HSTATE_GET(x) (((uint32_t)(x) & PDGO_PCNT_HOMING_CFG_HSTATE_MASK) >> PDGO_PCNT_HOMING_CFG_HSTATE_SHIFT)
1355 
1356 /* Bitfield definition for register of struct array PCNT: ANALYSE_CFG */
1357 /*
1358  * ERS (RW)
1359  *
1360  * Whether to discard this result and automatically restart the tacho immediately after a Dec_Error or Seq_Error is detected.
1361  */
1362 #define PDGO_PCNT_ANALYSE_CFG_ERS_MASK (0x40000UL)
1363 #define PDGO_PCNT_ANALYSE_CFG_ERS_SHIFT (18U)
1364 #define PDGO_PCNT_ANALYSE_CFG_ERS_SET(x) (((uint32_t)(x) << PDGO_PCNT_ANALYSE_CFG_ERS_SHIFT) & PDGO_PCNT_ANALYSE_CFG_ERS_MASK)
1365 #define PDGO_PCNT_ANALYSE_CFG_ERS_GET(x) (((uint32_t)(x) & PDGO_PCNT_ANALYSE_CFG_ERS_MASK) >> PDGO_PCNT_ANALYSE_CFG_ERS_SHIFT)
1366 
1367 /*
1368  * TACHO_MODE (RW)
1369  *
1370  * Tacho Mode Selection
1371  * 0: Disable tacho
1372  * 1: Period Mode, specify the length of time, measure the number of complete lines traveled within the length of time, and record the actual time spent.
1373  * 2: Travel Mode, specify the number of lines, measure the time taken to reach the number of lines.
1374  */
1375 #define PDGO_PCNT_ANALYSE_CFG_TACHO_MODE_MASK (0x30000UL)
1376 #define PDGO_PCNT_ANALYSE_CFG_TACHO_MODE_SHIFT (16U)
1377 #define PDGO_PCNT_ANALYSE_CFG_TACHO_MODE_SET(x) (((uint32_t)(x) << PDGO_PCNT_ANALYSE_CFG_TACHO_MODE_SHIFT) & PDGO_PCNT_ANALYSE_CFG_TACHO_MODE_MASK)
1378 #define PDGO_PCNT_ANALYSE_CFG_TACHO_MODE_GET(x) (((uint32_t)(x) & PDGO_PCNT_ANALYSE_CFG_TACHO_MODE_MASK) >> PDGO_PCNT_ANALYSE_CFG_TACHO_MODE_SHIFT)
1379 
1380 /*
1381  * TACHO_LEN (RW)
1382  *
1383  * Tacho Length
1384  * Period Mode:specify the length of time for each tacho.
1385  * Travel Mode:specify the number of lines for each tacho.
1386  * Note: This is a SYNC register, and it won't be valid immediately after change. It can be change only after last configuration valid.
1387  */
1388 #define PDGO_PCNT_ANALYSE_CFG_TACHO_LEN_MASK (0xFFFFU)
1389 #define PDGO_PCNT_ANALYSE_CFG_TACHO_LEN_SHIFT (0U)
1390 #define PDGO_PCNT_ANALYSE_CFG_TACHO_LEN_SET(x) (((uint32_t)(x) << PDGO_PCNT_ANALYSE_CFG_TACHO_LEN_SHIFT) & PDGO_PCNT_ANALYSE_CFG_TACHO_LEN_MASK)
1391 #define PDGO_PCNT_ANALYSE_CFG_TACHO_LEN_GET(x) (((uint32_t)(x) & PDGO_PCNT_ANALYSE_CFG_TACHO_LEN_MASK) >> PDGO_PCNT_ANALYSE_CFG_TACHO_LEN_SHIFT)
1392 
1393 /* Bitfield definition for register of struct array PCNT: DIRECTION */
1394 /*
1395  * DIR (RW)
1396  *
1397  * Software Override Direction Value
1398  * 0: Forward
1399  * 1: Reverse
1400  */
1401 #define PDGO_PCNT_DIRECTION_DIR_MASK (0x1U)
1402 #define PDGO_PCNT_DIRECTION_DIR_SHIFT (0U)
1403 #define PDGO_PCNT_DIRECTION_DIR_SET(x) (((uint32_t)(x) << PDGO_PCNT_DIRECTION_DIR_SHIFT) & PDGO_PCNT_DIRECTION_DIR_MASK)
1404 #define PDGO_PCNT_DIRECTION_DIR_GET(x) (((uint32_t)(x) & PDGO_PCNT_DIRECTION_DIR_MASK) >> PDGO_PCNT_DIRECTION_DIR_SHIFT)
1405 
1406 /* Bitfield definition for register of struct array PCNT: CMP0 */
1407 /*
1408  * CMP0 (RW)
1409  *
1410  * Comnpare Point 0
1411  * Note: This is a SYNC register, and it won't be valid immediately after change. It can be change only after last configuration valid.
1412  */
1413 #define PDGO_PCNT_CMP0_CMP0_MASK (0xFFFFFFFFUL)
1414 #define PDGO_PCNT_CMP0_CMP0_SHIFT (0U)
1415 #define PDGO_PCNT_CMP0_CMP0_SET(x) (((uint32_t)(x) << PDGO_PCNT_CMP0_CMP0_SHIFT) & PDGO_PCNT_CMP0_CMP0_MASK)
1416 #define PDGO_PCNT_CMP0_CMP0_GET(x) (((uint32_t)(x) & PDGO_PCNT_CMP0_CMP0_MASK) >> PDGO_PCNT_CMP0_CMP0_SHIFT)
1417 
1418 /* Bitfield definition for register of struct array PCNT: CMP1 */
1419 /*
1420  * CMP1 (RW)
1421  *
1422  * Comnpare Point 1
1423  * Note: This is a SYNC register, and it won't be valid immediately after change. It can be change only after last configuration valid.
1424  */
1425 #define PDGO_PCNT_CMP1_CMP1_MASK (0xFFFFFFFFUL)
1426 #define PDGO_PCNT_CMP1_CMP1_SHIFT (0U)
1427 #define PDGO_PCNT_CMP1_CMP1_SET(x) (((uint32_t)(x) << PDGO_PCNT_CMP1_CMP1_SHIFT) & PDGO_PCNT_CMP1_CMP1_MASK)
1428 #define PDGO_PCNT_CMP1_CMP1_GET(x) (((uint32_t)(x) & PDGO_PCNT_CMP1_CMP1_MASK) >> PDGO_PCNT_CMP1_CMP1_SHIFT)
1429 
1430 /* Bitfield definition for register of struct array PCNT: CNT */
1431 /*
1432  * COUNTER (RW)
1433  *
1434  * Pulse Counter Value
1435  * Note:
1436  * 1. Pulse Counter Value update when:
1437  * - Software Update: According to the current DECODE_MODE, the software directly writes the target value to the Revolution field and Line field of this register;
1438  * - Phase Z (Index) match: When Phase Z matches, clear Line field; Revolution field will be increased by 1 if forward, Revolution field remains unchanged if reverse, and the Phase field will be updated by decoder.
1439  * - Phase H (Home) match: when Phase H matches, clear Revolution field; and the Line field and Phase field will be updated by decoder.
1440  * - Decoder update: Revolution field, Line field and Phase field will be updated by decoder.
1441  * 2. This is a SYNC register, and it won't be valid immediately after software write. It can be change only after last configuration valid.
1442  * 3. Pulse Counter Value include:
1443  * - Revolution field;
1444  * - Line field,the width of this bit field depends on RESOLUTION register;
1445  * - Phase field,the width of this bit field depends on DECODE_MODE register, when:
1446  * · MODE_AB_4X: 2 Bits,Bit[1:0];
1447  * · MODE_AB_2X: 1 Bit,Bit[0];
1448  * · MODE_AB_1X: 0 Bit,no Phase field;
1449  * · MODE_PD_1X: 0 Bit,no Phase field;
1450  * · MODE_PDF1X: 0 Bit,no Phase field;
1451  * · MODE_PD_2X: 1 Bit,Bit[0];
1452  * · MODE_PDF2X: 1 Bit,Bit[0];
1453  * · MODE_UD_1X: 0 Bit,no Phase field;
1454  * · MODE_UDF1X: 0 Bit,no Phase field;
1455  * · MODE_UD_2X: 1 Bit,Bit[0];
1456  * · MODE_UDF2X: 1 Bit,Bit[0];
1457  * · MODE_UVW6X: 3 Bits,Bit[2:0];
1458  * · MODE_UVW6Y: 3 Bits,Bit[2:0];
1459  */
1460 #define PDGO_PCNT_CNT_COUNTER_MASK (0xFFFFFFFFUL)
1461 #define PDGO_PCNT_CNT_COUNTER_SHIFT (0U)
1462 #define PDGO_PCNT_CNT_COUNTER_SET(x) (((uint32_t)(x) << PDGO_PCNT_CNT_COUNTER_SHIFT) & PDGO_PCNT_CNT_COUNTER_MASK)
1463 #define PDGO_PCNT_CNT_COUNTER_GET(x) (((uint32_t)(x) & PDGO_PCNT_CNT_COUNTER_MASK) >> PDGO_PCNT_CNT_COUNTER_SHIFT)
1464 
1465 /* Bitfield definition for register of struct array PCNT: TACHO */
1466 /*
1467  * LINE (RW)
1468  *
1469  * Line Result
1470  * Period Mode:count up from 0 when forward; count down from 0 when forward.
1471  * Travel Mode:count up from 0 when forward; count down from 0xFFFF when forward.
1472  */
1473 #define PDGO_PCNT_TACHO_LINE_MASK (0xFFFF0000UL)
1474 #define PDGO_PCNT_TACHO_LINE_SHIFT (16U)
1475 #define PDGO_PCNT_TACHO_LINE_SET(x) (((uint32_t)(x) << PDGO_PCNT_TACHO_LINE_SHIFT) & PDGO_PCNT_TACHO_LINE_MASK)
1476 #define PDGO_PCNT_TACHO_LINE_GET(x) (((uint32_t)(x) & PDGO_PCNT_TACHO_LINE_MASK) >> PDGO_PCNT_TACHO_LINE_SHIFT)
1477 
1478 /*
1479  * TIME (RW)
1480  *
1481  * Time Result
1482  * Period Mode: The actual time taken to complete the complete Lines in a specified time.
1483  * Travel Mode: The actual time taken to complete the specified Lines.
1484  */
1485 #define PDGO_PCNT_TACHO_TIME_MASK (0xFFFFU)
1486 #define PDGO_PCNT_TACHO_TIME_SHIFT (0U)
1487 #define PDGO_PCNT_TACHO_TIME_SET(x) (((uint32_t)(x) << PDGO_PCNT_TACHO_TIME_SHIFT) & PDGO_PCNT_TACHO_TIME_MASK)
1488 #define PDGO_PCNT_TACHO_TIME_GET(x) (((uint32_t)(x) & PDGO_PCNT_TACHO_TIME_MASK) >> PDGO_PCNT_TACHO_TIME_SHIFT)
1489 
1490 /* Bitfield definition for register of struct array PCNT: DUMP */
1491 /*
1492  * DUMP (RO)
1493  *
1494  * Dump Result: Save COUNTER value when DUMP match.
1495  */
1496 #define PDGO_PCNT_DUMP_DUMP_MASK (0xFFFFFFFFUL)
1497 #define PDGO_PCNT_DUMP_DUMP_SHIFT (0U)
1498 #define PDGO_PCNT_DUMP_DUMP_GET(x) (((uint32_t)(x) & PDGO_PCNT_DUMP_DUMP_MASK) >> PDGO_PCNT_DUMP_DUMP_SHIFT)
1499 
1500 /* Bitfield definition for register of struct array PCNT: STS */
1501 /*
1502  * MATCH0 (RO)
1503  *
1504  * MATCH0 Status
1505  * 0:invalid
1506  * 1:valid
1507  */
1508 #define PDGO_PCNT_STS_MATCH0_MASK (0x1U)
1509 #define PDGO_PCNT_STS_MATCH0_SHIFT (0U)
1510 #define PDGO_PCNT_STS_MATCH0_GET(x) (((uint32_t)(x) & PDGO_PCNT_STS_MATCH0_MASK) >> PDGO_PCNT_STS_MATCH0_SHIFT)
1511 
1512 
1513 
1514 /* GPR register group index macro definition */
1515 #define PDGO_GPR_0 (0UL)
1516 #define PDGO_GPR_1 (1UL)
1517 #define PDGO_GPR_2 (2UL)
1518 #define PDGO_GPR_3 (3UL)
1519 #define PDGO_GPR_4 (4UL)
1520 #define PDGO_GPR_5 (5UL)
1521 #define PDGO_GPR_6 (6UL)
1522 #define PDGO_GPR_7 (7UL)
1523 
1524 /* IOFILTER register group index macro definition */
1525 #define PDGO_IOFILTER_0 (0UL)
1526 #define PDGO_IOFILTER_1 (1UL)
1527 #define PDGO_IOFILTER_2 (2UL)
1528 #define PDGO_IOFILTER_3 (3UL)
1529 
1530 /* PCAP register group index macro definition */
1531 #define PDGO_PCAP_0 (0UL)
1532 
1533 /* PCNT register group index macro definition */
1534 #define PDGO_PCNT_0 (0UL)
1535 
1536 
1537 #endif /* HPM_PDGO_H */
Definition: hpm_pdgo_regs.h:12