HPM SDK
HPMicro Software Development Kit
hpm_sdm_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_SDM_H
10 #define HPM_SDM_H
11 
12 typedef struct {
13  __RW uint32_t CTRL; /* 0x0: SDM control register */
14  __RW uint32_t INT_EN; /* 0x4: Interrupt enable register. */
15  __R uint32_t STATUS; /* 0x8: Status Registers */
16  __R uint8_t RESERVED0[4]; /* 0xC - 0xF: Reserved */
17  struct {
18  __RW uint32_t SDFIFOCTRL; /* 0x10: Data FIFO Path Control Register */
19  __RW uint32_t SDCTRLP; /* 0x14: Data Path Control Primary Register */
20  __RW uint32_t SDCTRLE; /* 0x18: Data Path Control Extra Register */
21  __RW uint32_t SDST; /* 0x1C: Data Path Status */
22  __R uint32_t SDATA; /* 0x20: Data */
23  __R uint32_t SDFIFO; /* 0x24: FIFO Data */
24  __R uint32_t SCAMP; /* 0x28: instant Amplitude Results */
25  __RW uint32_t SCHTL; /* 0x2C: Amplitude Threshold for High Limit */
26  __RW uint32_t SCHTLZ; /* 0x30: Amplitude Threshold for zero crossing */
27  __RW uint32_t SCLLT; /* 0x34: Amplitude Threshold for low limit */
28  __RW uint32_t SCCTRL; /* 0x38: Amplitude Path Control */
29  __RW uint32_t SCST; /* 0x3C: Amplitude Path Status */
30  __R uint8_t RESERVED0[16]; /* 0x40 - 0x4F: Reserved */
31  } CH[4];
32 } SDM_Type;
33 
34 
35 /* Bitfield definition for register: CTRL */
36 /*
37  * SFTRST (RW)
38  *
39  * software reset the module if asserted to be1’b1.
40  */
41 #define SDM_CTRL_SFTRST_MASK (0x80000000UL)
42 #define SDM_CTRL_SFTRST_SHIFT (31U)
43 #define SDM_CTRL_SFTRST_SET(x) (((uint32_t)(x) << SDM_CTRL_SFTRST_SHIFT) & SDM_CTRL_SFTRST_MASK)
44 #define SDM_CTRL_SFTRST_GET(x) (((uint32_t)(x) & SDM_CTRL_SFTRST_MASK) >> SDM_CTRL_SFTRST_SHIFT)
45 
46 /*
47  * CHMD (RW)
48  *
49  * Channel Rcv mode
50  * Bits[2:0] for Ch0.
51  * Bits[5:3] for Ch1
52  * Bits[8:6] for Ch2
53  * Bits[11:9] for Ch3
54  * 3'b000: Capture at posedge of MCLK
55  * 3'b001: Capture at both posedge and negedge of MCLK
56  * 3'b010: Manchestor Mode
57  * 3'b011: Capture at negedge of MCLK
58  * 3'b100: Capture at every other posedge of MCLK
59  * 3'b101: Capture at every other negedge of MCLK
60  * Others: Undefined
61  */
62 #define SDM_CTRL_CHMD_MASK (0x3FFC000UL)
63 #define SDM_CTRL_CHMD_SHIFT (14U)
64 #define SDM_CTRL_CHMD_SET(x) (((uint32_t)(x) << SDM_CTRL_CHMD_SHIFT) & SDM_CTRL_CHMD_MASK)
65 #define SDM_CTRL_CHMD_GET(x) (((uint32_t)(x) & SDM_CTRL_CHMD_MASK) >> SDM_CTRL_CHMD_SHIFT)
66 
67 /*
68  * SYNC_MCLK (RW)
69  *
70  * Asserted to double sync the mclk input pin before its usage inside the module
71  */
72 #define SDM_CTRL_SYNC_MCLK_MASK (0x3C00U)
73 #define SDM_CTRL_SYNC_MCLK_SHIFT (10U)
74 #define SDM_CTRL_SYNC_MCLK_SET(x) (((uint32_t)(x) << SDM_CTRL_SYNC_MCLK_SHIFT) & SDM_CTRL_SYNC_MCLK_MASK)
75 #define SDM_CTRL_SYNC_MCLK_GET(x) (((uint32_t)(x) & SDM_CTRL_SYNC_MCLK_MASK) >> SDM_CTRL_SYNC_MCLK_SHIFT)
76 
77 /*
78  * SYNC_MDAT (RW)
79  *
80  * Asserted to double sync the mdat input pin before its usage inside the module
81  */
82 #define SDM_CTRL_SYNC_MDAT_MASK (0x3C0U)
83 #define SDM_CTRL_SYNC_MDAT_SHIFT (6U)
84 #define SDM_CTRL_SYNC_MDAT_SET(x) (((uint32_t)(x) << SDM_CTRL_SYNC_MDAT_SHIFT) & SDM_CTRL_SYNC_MDAT_MASK)
85 #define SDM_CTRL_SYNC_MDAT_GET(x) (((uint32_t)(x) & SDM_CTRL_SYNC_MDAT_MASK) >> SDM_CTRL_SYNC_MDAT_SHIFT)
86 
87 /*
88  * CH_EN (RW)
89  *
90  * Channel Enable
91  */
92 #define SDM_CTRL_CH_EN_MASK (0x3CU)
93 #define SDM_CTRL_CH_EN_SHIFT (2U)
94 #define SDM_CTRL_CH_EN_SET(x) (((uint32_t)(x) << SDM_CTRL_CH_EN_SHIFT) & SDM_CTRL_CH_EN_MASK)
95 #define SDM_CTRL_CH_EN_GET(x) (((uint32_t)(x) & SDM_CTRL_CH_EN_MASK) >> SDM_CTRL_CH_EN_SHIFT)
96 
97 /*
98  * IE (RW)
99  *
100  * Interrupt Enable
101  */
102 #define SDM_CTRL_IE_MASK (0x2U)
103 #define SDM_CTRL_IE_SHIFT (1U)
104 #define SDM_CTRL_IE_SET(x) (((uint32_t)(x) << SDM_CTRL_IE_SHIFT) & SDM_CTRL_IE_MASK)
105 #define SDM_CTRL_IE_GET(x) (((uint32_t)(x) & SDM_CTRL_IE_MASK) >> SDM_CTRL_IE_SHIFT)
106 
107 /* Bitfield definition for register: INT_EN */
108 /*
109  * CH3DRY (RW)
110  *
111  * Ch3 Data Ready interrupt enable.
112  */
113 #define SDM_INT_EN_CH3DRY_MASK (0x80U)
114 #define SDM_INT_EN_CH3DRY_SHIFT (7U)
115 #define SDM_INT_EN_CH3DRY_SET(x) (((uint32_t)(x) << SDM_INT_EN_CH3DRY_SHIFT) & SDM_INT_EN_CH3DRY_MASK)
116 #define SDM_INT_EN_CH3DRY_GET(x) (((uint32_t)(x) & SDM_INT_EN_CH3DRY_MASK) >> SDM_INT_EN_CH3DRY_SHIFT)
117 
118 /*
119  * CH2DRY (RW)
120  *
121  * Ch2 Data Ready interrupt enable
122  */
123 #define SDM_INT_EN_CH2DRY_MASK (0x40U)
124 #define SDM_INT_EN_CH2DRY_SHIFT (6U)
125 #define SDM_INT_EN_CH2DRY_SET(x) (((uint32_t)(x) << SDM_INT_EN_CH2DRY_SHIFT) & SDM_INT_EN_CH2DRY_MASK)
126 #define SDM_INT_EN_CH2DRY_GET(x) (((uint32_t)(x) & SDM_INT_EN_CH2DRY_MASK) >> SDM_INT_EN_CH2DRY_SHIFT)
127 
128 /*
129  * CH1DRY (RW)
130  *
131  * Ch1 Data Ready interrupt enable
132  */
133 #define SDM_INT_EN_CH1DRY_MASK (0x20U)
134 #define SDM_INT_EN_CH1DRY_SHIFT (5U)
135 #define SDM_INT_EN_CH1DRY_SET(x) (((uint32_t)(x) << SDM_INT_EN_CH1DRY_SHIFT) & SDM_INT_EN_CH1DRY_MASK)
136 #define SDM_INT_EN_CH1DRY_GET(x) (((uint32_t)(x) & SDM_INT_EN_CH1DRY_MASK) >> SDM_INT_EN_CH1DRY_SHIFT)
137 
138 /*
139  * CH0DRY (RW)
140  *
141  * Ch0 Data Ready interrupt enable
142  */
143 #define SDM_INT_EN_CH0DRY_MASK (0x10U)
144 #define SDM_INT_EN_CH0DRY_SHIFT (4U)
145 #define SDM_INT_EN_CH0DRY_SET(x) (((uint32_t)(x) << SDM_INT_EN_CH0DRY_SHIFT) & SDM_INT_EN_CH0DRY_MASK)
146 #define SDM_INT_EN_CH0DRY_GET(x) (((uint32_t)(x) & SDM_INT_EN_CH0DRY_MASK) >> SDM_INT_EN_CH0DRY_SHIFT)
147 
148 /*
149  * CH3ERR (RW)
150  *
151  * Ch3 Error interrupt enable.
152  */
153 #define SDM_INT_EN_CH3ERR_MASK (0x8U)
154 #define SDM_INT_EN_CH3ERR_SHIFT (3U)
155 #define SDM_INT_EN_CH3ERR_SET(x) (((uint32_t)(x) << SDM_INT_EN_CH3ERR_SHIFT) & SDM_INT_EN_CH3ERR_MASK)
156 #define SDM_INT_EN_CH3ERR_GET(x) (((uint32_t)(x) & SDM_INT_EN_CH3ERR_MASK) >> SDM_INT_EN_CH3ERR_SHIFT)
157 
158 /*
159  * CH2ERR (RW)
160  *
161  * Ch2 Error interrupt enable
162  */
163 #define SDM_INT_EN_CH2ERR_MASK (0x4U)
164 #define SDM_INT_EN_CH2ERR_SHIFT (2U)
165 #define SDM_INT_EN_CH2ERR_SET(x) (((uint32_t)(x) << SDM_INT_EN_CH2ERR_SHIFT) & SDM_INT_EN_CH2ERR_MASK)
166 #define SDM_INT_EN_CH2ERR_GET(x) (((uint32_t)(x) & SDM_INT_EN_CH2ERR_MASK) >> SDM_INT_EN_CH2ERR_SHIFT)
167 
168 /*
169  * CH1ERR (RW)
170  *
171  * Ch1 Error interrupt enable
172  */
173 #define SDM_INT_EN_CH1ERR_MASK (0x2U)
174 #define SDM_INT_EN_CH1ERR_SHIFT (1U)
175 #define SDM_INT_EN_CH1ERR_SET(x) (((uint32_t)(x) << SDM_INT_EN_CH1ERR_SHIFT) & SDM_INT_EN_CH1ERR_MASK)
176 #define SDM_INT_EN_CH1ERR_GET(x) (((uint32_t)(x) & SDM_INT_EN_CH1ERR_MASK) >> SDM_INT_EN_CH1ERR_SHIFT)
177 
178 /*
179  * CH0ERR (RW)
180  *
181  * Ch0 Error interrupt enable
182  */
183 #define SDM_INT_EN_CH0ERR_MASK (0x1U)
184 #define SDM_INT_EN_CH0ERR_SHIFT (0U)
185 #define SDM_INT_EN_CH0ERR_SET(x) (((uint32_t)(x) << SDM_INT_EN_CH0ERR_SHIFT) & SDM_INT_EN_CH0ERR_MASK)
186 #define SDM_INT_EN_CH0ERR_GET(x) (((uint32_t)(x) & SDM_INT_EN_CH0ERR_MASK) >> SDM_INT_EN_CH0ERR_SHIFT)
187 
188 /* Bitfield definition for register: STATUS */
189 /*
190  * CH3DRY (RO)
191  *
192  * Ch3 Data Ready.
193  * De-assert this bit by reading the data (or data fifo) registers.
194  */
195 #define SDM_STATUS_CH3DRY_MASK (0x80U)
196 #define SDM_STATUS_CH3DRY_SHIFT (7U)
197 #define SDM_STATUS_CH3DRY_GET(x) (((uint32_t)(x) & SDM_STATUS_CH3DRY_MASK) >> SDM_STATUS_CH3DRY_SHIFT)
198 
199 /*
200  * CH2DRY (RO)
201  *
202  * Ch2 Data Ready
203  */
204 #define SDM_STATUS_CH2DRY_MASK (0x40U)
205 #define SDM_STATUS_CH2DRY_SHIFT (6U)
206 #define SDM_STATUS_CH2DRY_GET(x) (((uint32_t)(x) & SDM_STATUS_CH2DRY_MASK) >> SDM_STATUS_CH2DRY_SHIFT)
207 
208 /*
209  * CH1DRY (RO)
210  *
211  * Ch1 Data Ready
212  */
213 #define SDM_STATUS_CH1DRY_MASK (0x20U)
214 #define SDM_STATUS_CH1DRY_SHIFT (5U)
215 #define SDM_STATUS_CH1DRY_GET(x) (((uint32_t)(x) & SDM_STATUS_CH1DRY_MASK) >> SDM_STATUS_CH1DRY_SHIFT)
216 
217 /*
218  * CH0DRY (RO)
219  *
220  * Ch0 Data Ready
221  */
222 #define SDM_STATUS_CH0DRY_MASK (0x10U)
223 #define SDM_STATUS_CH0DRY_SHIFT (4U)
224 #define SDM_STATUS_CH0DRY_GET(x) (((uint32_t)(x) & SDM_STATUS_CH0DRY_MASK) >> SDM_STATUS_CH0DRY_SHIFT)
225 
226 /*
227  * CH3ERR (RO)
228  *
229  * Ch3 Error.
230  * ORed together by channel related error signals and corresponding error interrupt enable signals.
231  * De-assert this bit by write-1-clear the corresponding error status bits in the channel status registers.
232  */
233 #define SDM_STATUS_CH3ERR_MASK (0x8U)
234 #define SDM_STATUS_CH3ERR_SHIFT (3U)
235 #define SDM_STATUS_CH3ERR_GET(x) (((uint32_t)(x) & SDM_STATUS_CH3ERR_MASK) >> SDM_STATUS_CH3ERR_SHIFT)
236 
237 /*
238  * CH2ERR (RO)
239  *
240  * Ch2 Error
241  */
242 #define SDM_STATUS_CH2ERR_MASK (0x4U)
243 #define SDM_STATUS_CH2ERR_SHIFT (2U)
244 #define SDM_STATUS_CH2ERR_GET(x) (((uint32_t)(x) & SDM_STATUS_CH2ERR_MASK) >> SDM_STATUS_CH2ERR_SHIFT)
245 
246 /*
247  * CH1ERR (RO)
248  *
249  * Ch1 Error
250  */
251 #define SDM_STATUS_CH1ERR_MASK (0x2U)
252 #define SDM_STATUS_CH1ERR_SHIFT (1U)
253 #define SDM_STATUS_CH1ERR_GET(x) (((uint32_t)(x) & SDM_STATUS_CH1ERR_MASK) >> SDM_STATUS_CH1ERR_SHIFT)
254 
255 /*
256  * CH0ERR (RO)
257  *
258  * Ch0 Error
259  */
260 #define SDM_STATUS_CH0ERR_MASK (0x1U)
261 #define SDM_STATUS_CH0ERR_SHIFT (0U)
262 #define SDM_STATUS_CH0ERR_GET(x) (((uint32_t)(x) & SDM_STATUS_CH0ERR_MASK) >> SDM_STATUS_CH0ERR_SHIFT)
263 
264 /* Bitfield definition for register of struct array CH: SDFIFOCTRL */
265 /*
266  * GATE_SAMPLES (RW)
267  *
268  * The number-1-3 of input PDM bit samples to be gated when CIC_GATE_EN=1. Max 255. So the minimum gated samples is 4 samples when GATE_SAMPLES=0.
269  */
270 #define SDM_CH_SDFIFOCTRL_GATE_SAMPLES_MASK (0xFF0000UL)
271 #define SDM_CH_SDFIFOCTRL_GATE_SAMPLES_SHIFT (16U)
272 #define SDM_CH_SDFIFOCTRL_GATE_SAMPLES_SET(x) (((uint32_t)(x) << SDM_CH_SDFIFOCTRL_GATE_SAMPLES_SHIFT) & SDM_CH_SDFIFOCTRL_GATE_SAMPLES_MASK)
273 #define SDM_CH_SDFIFOCTRL_GATE_SAMPLES_GET(x) (((uint32_t)(x) & SDM_CH_SDFIFOCTRL_GATE_SAMPLES_MASK) >> SDM_CH_SDFIFOCTRL_GATE_SAMPLES_SHIFT)
274 
275 /*
276  * THRSH (RW)
277  *
278  * FIFO threshold (0,..,16) (fillings > threshold, then gen int)
279  */
280 #define SDM_CH_SDFIFOCTRL_THRSH_MASK (0x1F0U)
281 #define SDM_CH_SDFIFOCTRL_THRSH_SHIFT (4U)
282 #define SDM_CH_SDFIFOCTRL_THRSH_SET(x) (((uint32_t)(x) << SDM_CH_SDFIFOCTRL_THRSH_SHIFT) & SDM_CH_SDFIFOCTRL_THRSH_MASK)
283 #define SDM_CH_SDFIFOCTRL_THRSH_GET(x) (((uint32_t)(x) & SDM_CH_SDFIFOCTRL_THRSH_MASK) >> SDM_CH_SDFIFOCTRL_THRSH_SHIFT)
284 
285 /* Bitfield definition for register of struct array CH: SDCTRLP */
286 /*
287  * MANCH_THR (RW)
288  *
289  * Manchester Decoding threshold. 3/4 of PERIOD_MCLK[7:0]
290  */
291 #define SDM_CH_SDCTRLP_MANCH_THR_MASK (0xFE000000UL)
292 #define SDM_CH_SDCTRLP_MANCH_THR_SHIFT (25U)
293 #define SDM_CH_SDCTRLP_MANCH_THR_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_MANCH_THR_SHIFT) & SDM_CH_SDCTRLP_MANCH_THR_MASK)
294 #define SDM_CH_SDCTRLP_MANCH_THR_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_MANCH_THR_MASK) >> SDM_CH_SDCTRLP_MANCH_THR_SHIFT)
295 
296 /*
297  * WDOG_THR (RW)
298  *
299  * Watch dog threshold for channel failure of CLK halting
300  */
301 #define SDM_CH_SDCTRLP_WDOG_THR_MASK (0x1FE0000UL)
302 #define SDM_CH_SDCTRLP_WDOG_THR_SHIFT (17U)
303 #define SDM_CH_SDCTRLP_WDOG_THR_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_WDOG_THR_SHIFT) & SDM_CH_SDCTRLP_WDOG_THR_MASK)
304 #define SDM_CH_SDCTRLP_WDOG_THR_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_WDOG_THR_MASK) >> SDM_CH_SDCTRLP_WDOG_THR_SHIFT)
305 
306 /*
307  * DFFOVIE (RW)
308  *
309  * Ch Data FIFO overflow interrupt enable
310  */
311 #define SDM_CH_SDCTRLP_DFFOVIE_MASK (0x8000U)
312 #define SDM_CH_SDCTRLP_DFFOVIE_SHIFT (15U)
313 #define SDM_CH_SDCTRLP_DFFOVIE_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_DFFOVIE_SHIFT) & SDM_CH_SDCTRLP_DFFOVIE_MASK)
314 #define SDM_CH_SDCTRLP_DFFOVIE_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_DFFOVIE_MASK) >> SDM_CH_SDCTRLP_DFFOVIE_SHIFT)
315 
316 /*
317  * DSATIE (RW)
318  *
319  * Ch CIC Data Saturation Interrupt Enable
320  */
321 #define SDM_CH_SDCTRLP_DSATIE_MASK (0x4000U)
322 #define SDM_CH_SDCTRLP_DSATIE_SHIFT (14U)
323 #define SDM_CH_SDCTRLP_DSATIE_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_DSATIE_SHIFT) & SDM_CH_SDCTRLP_DSATIE_MASK)
324 #define SDM_CH_SDCTRLP_DSATIE_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_DSATIE_MASK) >> SDM_CH_SDCTRLP_DSATIE_SHIFT)
325 
326 /*
327  * DRIE (RW)
328  *
329  * Ch Data Ready Interrupt Enable
330  */
331 #define SDM_CH_SDCTRLP_DRIE_MASK (0x2000U)
332 #define SDM_CH_SDCTRLP_DRIE_SHIFT (13U)
333 #define SDM_CH_SDCTRLP_DRIE_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_DRIE_SHIFT) & SDM_CH_SDCTRLP_DRIE_MASK)
334 #define SDM_CH_SDCTRLP_DRIE_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_DRIE_MASK) >> SDM_CH_SDCTRLP_DRIE_SHIFT)
335 
336 /*
337  * SYNCSEL (RW)
338  *
339  * Select the PWM SYNC Source
340  */
341 #define SDM_CH_SDCTRLP_SYNCSEL_MASK (0x1F80U)
342 #define SDM_CH_SDCTRLP_SYNCSEL_SHIFT (7U)
343 #define SDM_CH_SDCTRLP_SYNCSEL_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_SYNCSEL_SHIFT) & SDM_CH_SDCTRLP_SYNCSEL_MASK)
344 #define SDM_CH_SDCTRLP_SYNCSEL_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_SYNCSEL_MASK) >> SDM_CH_SDCTRLP_SYNCSEL_SHIFT)
345 
346 /*
347  * FFSYNCCLREN (RW)
348  *
349  * Auto clear FIFO when a new SDSYNC event is found. Only valid when WTSYNCEN=1
350  */
351 #define SDM_CH_SDCTRLP_FFSYNCCLREN_MASK (0x40U)
352 #define SDM_CH_SDCTRLP_FFSYNCCLREN_SHIFT (6U)
353 #define SDM_CH_SDCTRLP_FFSYNCCLREN_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_FFSYNCCLREN_SHIFT) & SDM_CH_SDCTRLP_FFSYNCCLREN_MASK)
354 #define SDM_CH_SDCTRLP_FFSYNCCLREN_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_FFSYNCCLREN_MASK) >> SDM_CH_SDCTRLP_FFSYNCCLREN_SHIFT)
355 
356 /*
357  * WTSYNACLR (RW)
358  *
359  * 1: Asserted to Auto clear WTSYNFLG when the SDFFINT is gen
360  * 0: WTSYNFLG should be cleared manually by WTSYNMCLR
361  */
362 #define SDM_CH_SDCTRLP_WTSYNACLR_MASK (0x20U)
363 #define SDM_CH_SDCTRLP_WTSYNACLR_SHIFT (5U)
364 #define SDM_CH_SDCTRLP_WTSYNACLR_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_WTSYNACLR_SHIFT) & SDM_CH_SDCTRLP_WTSYNACLR_MASK)
365 #define SDM_CH_SDCTRLP_WTSYNACLR_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_WTSYNACLR_MASK) >> SDM_CH_SDCTRLP_WTSYNACLR_SHIFT)
366 
367 /*
368  * WTSYNMCLR (RW)
369  *
370  * 1: Manually clear WTSYNFLG. Auto-clear.
371  */
372 #define SDM_CH_SDCTRLP_WTSYNMCLR_MASK (0x10U)
373 #define SDM_CH_SDCTRLP_WTSYNMCLR_SHIFT (4U)
374 #define SDM_CH_SDCTRLP_WTSYNMCLR_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_WTSYNMCLR_SHIFT) & SDM_CH_SDCTRLP_WTSYNMCLR_MASK)
375 #define SDM_CH_SDCTRLP_WTSYNMCLR_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_WTSYNMCLR_MASK) >> SDM_CH_SDCTRLP_WTSYNMCLR_SHIFT)
376 
377 /*
378  * WTSYNCEN (RW)
379  *
380  * 1: Start to store data only after PWM SYNC event
381  * 0: Start to store data whenever enabled
382  */
383 #define SDM_CH_SDCTRLP_WTSYNCEN_MASK (0x8U)
384 #define SDM_CH_SDCTRLP_WTSYNCEN_SHIFT (3U)
385 #define SDM_CH_SDCTRLP_WTSYNCEN_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_WTSYNCEN_SHIFT) & SDM_CH_SDCTRLP_WTSYNCEN_MASK)
386 #define SDM_CH_SDCTRLP_WTSYNCEN_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_WTSYNCEN_MASK) >> SDM_CH_SDCTRLP_WTSYNCEN_SHIFT)
387 
388 /*
389  * D32 (RW)
390  *
391  * 1:32 bit data
392  * 0:16 bit data
393  */
394 #define SDM_CH_SDCTRLP_D32_MASK (0x4U)
395 #define SDM_CH_SDCTRLP_D32_SHIFT (2U)
396 #define SDM_CH_SDCTRLP_D32_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_D32_SHIFT) & SDM_CH_SDCTRLP_D32_MASK)
397 #define SDM_CH_SDCTRLP_D32_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_D32_MASK) >> SDM_CH_SDCTRLP_D32_SHIFT)
398 
399 /*
400  * DR_OPT (RW)
401  *
402  * 1: Use Data FIFO Ready as data ready when fifo fillings are greater than the threshold
403  * 0: Use Data Reg Ready as data ready
404  */
405 #define SDM_CH_SDCTRLP_DR_OPT_MASK (0x2U)
406 #define SDM_CH_SDCTRLP_DR_OPT_SHIFT (1U)
407 #define SDM_CH_SDCTRLP_DR_OPT_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_DR_OPT_SHIFT) & SDM_CH_SDCTRLP_DR_OPT_MASK)
408 #define SDM_CH_SDCTRLP_DR_OPT_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_DR_OPT_MASK) >> SDM_CH_SDCTRLP_DR_OPT_SHIFT)
409 
410 /*
411  * EN (RW)
412  *
413  * Data Path Enable
414  */
415 #define SDM_CH_SDCTRLP_EN_MASK (0x1U)
416 #define SDM_CH_SDCTRLP_EN_SHIFT (0U)
417 #define SDM_CH_SDCTRLP_EN_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLP_EN_SHIFT) & SDM_CH_SDCTRLP_EN_MASK)
418 #define SDM_CH_SDCTRLP_EN_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLP_EN_MASK) >> SDM_CH_SDCTRLP_EN_SHIFT)
419 
420 /* Bitfield definition for register of struct array CH: SDCTRLE */
421 /*
422  * CIC_GATE_TYPE (RW)
423  *
424  * 1: the gate cycle is determined by SDFIFOCTRLn[GATE_SAMPLES].
425  * 0: the gate cycle is determined by the CIC decimation counter, and the minimal gated off PDM bits are determined by SDFIFOCTRLn[GATE_SAMPLES], and at the same time, to keep alignment with normal PCM sampling time.
426  */
427 #define SDM_CH_SDCTRLE_CIC_GATE_TYPE_MASK (0x80000000UL)
428 #define SDM_CH_SDCTRLE_CIC_GATE_TYPE_SHIFT (31U)
429 #define SDM_CH_SDCTRLE_CIC_GATE_TYPE_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_CIC_GATE_TYPE_SHIFT) & SDM_CH_SDCTRLE_CIC_GATE_TYPE_MASK)
430 #define SDM_CH_SDCTRLE_CIC_GATE_TYPE_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_CIC_GATE_TYPE_MASK) >> SDM_CH_SDCTRLE_CIC_GATE_TYPE_SHIFT)
431 
432 /*
433  * CIC_GATE_POL (RW)
434  *
435  * 1: When mask signal is 1, pause the CIC stage at he rising edge of mask signal.
436  * 0: When mask signal is 0, pause the CIC stage at he falling edge of mask signal.
437  */
438 #define SDM_CH_SDCTRLE_CIC_GATE_POL_MASK (0x40000000UL)
439 #define SDM_CH_SDCTRLE_CIC_GATE_POL_SHIFT (30U)
440 #define SDM_CH_SDCTRLE_CIC_GATE_POL_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_CIC_GATE_POL_SHIFT) & SDM_CH_SDCTRLE_CIC_GATE_POL_MASK)
441 #define SDM_CH_SDCTRLE_CIC_GATE_POL_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_CIC_GATE_POL_MASK) >> SDM_CH_SDCTRLE_CIC_GATE_POL_SHIFT)
442 
443 /*
444  * CIC_GATE_SEL (RW)
445  *
446  * Select the mask signal for CIC gate signal.
447  */
448 #define SDM_CH_SDCTRLE_CIC_GATE_SEL_MASK (0x3C000000UL)
449 #define SDM_CH_SDCTRLE_CIC_GATE_SEL_SHIFT (26U)
450 #define SDM_CH_SDCTRLE_CIC_GATE_SEL_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_CIC_GATE_SEL_SHIFT) & SDM_CH_SDCTRLE_CIC_GATE_SEL_MASK)
451 #define SDM_CH_SDCTRLE_CIC_GATE_SEL_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_CIC_GATE_SEL_MASK) >> SDM_CH_SDCTRLE_CIC_GATE_SEL_SHIFT)
452 
453 /*
454  * CIC_GATE_EN (RW)
455  *
456  * 1: the CIC stage can be paused by the mask input.
457  * 0: the CIC stage won't be paused by the mask input.
458  */
459 #define SDM_CH_SDCTRLE_CIC_GATE_EN_MASK (0x2000000UL)
460 #define SDM_CH_SDCTRLE_CIC_GATE_EN_SHIFT (25U)
461 #define SDM_CH_SDCTRLE_CIC_GATE_EN_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_CIC_GATE_EN_SHIFT) & SDM_CH_SDCTRLE_CIC_GATE_EN_MASK)
462 #define SDM_CH_SDCTRLE_CIC_GATE_EN_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_CIC_GATE_EN_MASK) >> SDM_CH_SDCTRLE_CIC_GATE_EN_SHIFT)
463 
464 /*
465  * TIMESTAMP_TYPE (RW)
466  *
467  * 1. Use the time (when the data is calculated out) - delta_time_of_filter_span as the timestamp.
468  * 0: Use the time when the data is calculated out.
469  */
470 #define SDM_CH_SDCTRLE_TIMESTAMP_TYPE_MASK (0x400000UL)
471 #define SDM_CH_SDCTRLE_TIMESTAMP_TYPE_SHIFT (22U)
472 #define SDM_CH_SDCTRLE_TIMESTAMP_TYPE_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_TIMESTAMP_TYPE_SHIFT) & SDM_CH_SDCTRLE_TIMESTAMP_TYPE_MASK)
473 #define SDM_CH_SDCTRLE_TIMESTAMP_TYPE_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_TIMESTAMP_TYPE_MASK) >> SDM_CH_SDCTRLE_TIMESTAMP_TYPE_SHIFT)
474 
475 /*
476  * DFIFO_S_T (RW)
477  *
478  * 1: the output of SDFIFO is data and timestamp interleaved. First is data.
479  * 0: the output of SDFIFO is data only
480  */
481 #define SDM_CH_SDCTRLE_DFIFO_S_T_MASK (0x200000UL)
482 #define SDM_CH_SDCTRLE_DFIFO_S_T_SHIFT (21U)
483 #define SDM_CH_SDCTRLE_DFIFO_S_T_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_DFIFO_S_T_SHIFT) & SDM_CH_SDCTRLE_DFIFO_S_T_MASK)
484 #define SDM_CH_SDCTRLE_DFIFO_S_T_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_DFIFO_S_T_MASK) >> SDM_CH_SDCTRLE_DFIFO_S_T_SHIFT)
485 
486 /*
487  * DATA_S_T (RW)
488  *
489  * "1: the read output of SData is data and timestamp interleaved. First is data.
490  * 0: the read output of SData is data only"
491  */
492 #define SDM_CH_SDCTRLE_DATA_S_T_MASK (0x100000UL)
493 #define SDM_CH_SDCTRLE_DATA_S_T_SHIFT (20U)
494 #define SDM_CH_SDCTRLE_DATA_S_T_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_DATA_S_T_SHIFT) & SDM_CH_SDCTRLE_DATA_S_T_MASK)
495 #define SDM_CH_SDCTRLE_DATA_S_T_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_DATA_S_T_MASK) >> SDM_CH_SDCTRLE_DATA_S_T_SHIFT)
496 
497 /*
498  * SGD_ORDR (RW)
499  *
500  * CIC order
501  * 0: SYNC1
502  * 1: SYNC2
503  * 2: SYNC3
504  * 3: FAST_SYNC
505  */
506 #define SDM_CH_SDCTRLE_SGD_ORDR_MASK (0x60000UL)
507 #define SDM_CH_SDCTRLE_SGD_ORDR_SHIFT (17U)
508 #define SDM_CH_SDCTRLE_SGD_ORDR_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_SGD_ORDR_SHIFT) & SDM_CH_SDCTRLE_SGD_ORDR_MASK)
509 #define SDM_CH_SDCTRLE_SGD_ORDR_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_SGD_ORDR_MASK) >> SDM_CH_SDCTRLE_SGD_ORDR_SHIFT)
510 
511 /*
512  * PWMSYNC (RW)
513  *
514  * Asserted to double sync the PWM trigger signal
515  */
516 #define SDM_CH_SDCTRLE_PWMSYNC_MASK (0x10000UL)
517 #define SDM_CH_SDCTRLE_PWMSYNC_SHIFT (16U)
518 #define SDM_CH_SDCTRLE_PWMSYNC_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_PWMSYNC_SHIFT) & SDM_CH_SDCTRLE_PWMSYNC_MASK)
519 #define SDM_CH_SDCTRLE_PWMSYNC_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_PWMSYNC_MASK) >> SDM_CH_SDCTRLE_PWMSYNC_SHIFT)
520 
521 /*
522  * CIC_SCL (RW)
523  *
524  * CIC shift control
525  */
526 #define SDM_CH_SDCTRLE_CIC_SCL_MASK (0x7800U)
527 #define SDM_CH_SDCTRLE_CIC_SCL_SHIFT (11U)
528 #define SDM_CH_SDCTRLE_CIC_SCL_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_CIC_SCL_SHIFT) & SDM_CH_SDCTRLE_CIC_SCL_MASK)
529 #define SDM_CH_SDCTRLE_CIC_SCL_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_CIC_SCL_MASK) >> SDM_CH_SDCTRLE_CIC_SCL_SHIFT)
530 
531 /*
532  * CIC_DEC_RATIO (RW)
533  *
534  * CIC decimation ratio. 0 means div-by-256
535  */
536 #define SDM_CH_SDCTRLE_CIC_DEC_RATIO_MASK (0x7F8U)
537 #define SDM_CH_SDCTRLE_CIC_DEC_RATIO_SHIFT (3U)
538 #define SDM_CH_SDCTRLE_CIC_DEC_RATIO_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_CIC_DEC_RATIO_SHIFT) & SDM_CH_SDCTRLE_CIC_DEC_RATIO_MASK)
539 #define SDM_CH_SDCTRLE_CIC_DEC_RATIO_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_CIC_DEC_RATIO_MASK) >> SDM_CH_SDCTRLE_CIC_DEC_RATIO_SHIFT)
540 
541 /*
542  * IGN_INI_SAMPLES (RW)
543  *
544  * NotZero: Don't store the first samples that are not accurate
545  * Zero: Store all samples
546  */
547 #define SDM_CH_SDCTRLE_IGN_INI_SAMPLES_MASK (0x7U)
548 #define SDM_CH_SDCTRLE_IGN_INI_SAMPLES_SHIFT (0U)
549 #define SDM_CH_SDCTRLE_IGN_INI_SAMPLES_SET(x) (((uint32_t)(x) << SDM_CH_SDCTRLE_IGN_INI_SAMPLES_SHIFT) & SDM_CH_SDCTRLE_IGN_INI_SAMPLES_MASK)
550 #define SDM_CH_SDCTRLE_IGN_INI_SAMPLES_GET(x) (((uint32_t)(x) & SDM_CH_SDCTRLE_IGN_INI_SAMPLES_MASK) >> SDM_CH_SDCTRLE_IGN_INI_SAMPLES_SHIFT)
551 
552 /* Bitfield definition for register of struct array CH: SDST */
553 /*
554  * PERIOD_MCLK (RO)
555  *
556  * maxim of mclk spacing in cycles, using edges of mclk signal. In manchester coding mode, it is just the period of MCLK. In other modes, it is almost the half period.
557  */
558 #define SDM_CH_SDST_PERIOD_MCLK_MASK (0x7F800000UL)
559 #define SDM_CH_SDST_PERIOD_MCLK_SHIFT (23U)
560 #define SDM_CH_SDST_PERIOD_MCLK_GET(x) (((uint32_t)(x) & SDM_CH_SDST_PERIOD_MCLK_MASK) >> SDM_CH_SDST_PERIOD_MCLK_SHIFT)
561 
562 /*
563  * SDATA_D0_T1 (RO)
564  *
565  * 1: current value in SDATA is data
566  * 0: current value in SDATA is timestamp
567  */
568 #define SDM_CH_SDST_SDATA_D0_T1_MASK (0x2000U)
569 #define SDM_CH_SDST_SDATA_D0_T1_SHIFT (13U)
570 #define SDM_CH_SDST_SDATA_D0_T1_GET(x) (((uint32_t)(x) & SDM_CH_SDST_SDATA_D0_T1_MASK) >> SDM_CH_SDST_SDATA_D0_T1_SHIFT)
571 
572 /*
573  * SDFIFO_D0_T1 (RO)
574  *
575  * 1: first value readout from FIFO is data
576  * 0: first value readout from FIFO is timestamp
577  */
578 #define SDM_CH_SDST_SDFIFO_D0_T1_MASK (0x1000U)
579 #define SDM_CH_SDST_SDFIFO_D0_T1_SHIFT (12U)
580 #define SDM_CH_SDST_SDFIFO_D0_T1_GET(x) (((uint32_t)(x) & SDM_CH_SDST_SDFIFO_D0_T1_MASK) >> SDM_CH_SDST_SDFIFO_D0_T1_SHIFT)
581 
582 /*
583  * FIFO_DR (W1C)
584  *
585  * FIFO data ready
586  */
587 #define SDM_CH_SDST_FIFO_DR_MASK (0x200U)
588 #define SDM_CH_SDST_FIFO_DR_SHIFT (9U)
589 #define SDM_CH_SDST_FIFO_DR_SET(x) (((uint32_t)(x) << SDM_CH_SDST_FIFO_DR_SHIFT) & SDM_CH_SDST_FIFO_DR_MASK)
590 #define SDM_CH_SDST_FIFO_DR_GET(x) (((uint32_t)(x) & SDM_CH_SDST_FIFO_DR_MASK) >> SDM_CH_SDST_FIFO_DR_SHIFT)
591 
592 /*
593  * DOV_ERR (W1C)
594  *
595  * Data FIFO Overflow Error. Error flag.
596  */
597 #define SDM_CH_SDST_DOV_ERR_MASK (0x80U)
598 #define SDM_CH_SDST_DOV_ERR_SHIFT (7U)
599 #define SDM_CH_SDST_DOV_ERR_SET(x) (((uint32_t)(x) << SDM_CH_SDST_DOV_ERR_SHIFT) & SDM_CH_SDST_DOV_ERR_MASK)
600 #define SDM_CH_SDST_DOV_ERR_GET(x) (((uint32_t)(x) & SDM_CH_SDST_DOV_ERR_MASK) >> SDM_CH_SDST_DOV_ERR_SHIFT)
601 
602 /*
603  * DSAT_ERR (W1C)
604  *
605  * CIC out Data saturation err. Error flag.
606  */
607 #define SDM_CH_SDST_DSAT_ERR_MASK (0x40U)
608 #define SDM_CH_SDST_DSAT_ERR_SHIFT (6U)
609 #define SDM_CH_SDST_DSAT_ERR_SET(x) (((uint32_t)(x) << SDM_CH_SDST_DSAT_ERR_SHIFT) & SDM_CH_SDST_DSAT_ERR_MASK)
610 #define SDM_CH_SDST_DSAT_ERR_GET(x) (((uint32_t)(x) & SDM_CH_SDST_DSAT_ERR_MASK) >> SDM_CH_SDST_DSAT_ERR_SHIFT)
611 
612 /*
613  * WTSYNFLG (RO)
614  *
615  * Wait-for-sync event found
616  */
617 #define SDM_CH_SDST_WTSYNFLG_MASK (0x20U)
618 #define SDM_CH_SDST_WTSYNFLG_SHIFT (5U)
619 #define SDM_CH_SDST_WTSYNFLG_GET(x) (((uint32_t)(x) & SDM_CH_SDST_WTSYNFLG_MASK) >> SDM_CH_SDST_WTSYNFLG_SHIFT)
620 
621 /*
622  * FILL (RO)
623  *
624  * Data FIFO Fillings
625  */
626 #define SDM_CH_SDST_FILL_MASK (0x1FU)
627 #define SDM_CH_SDST_FILL_SHIFT (0U)
628 #define SDM_CH_SDST_FILL_GET(x) (((uint32_t)(x) & SDM_CH_SDST_FILL_MASK) >> SDM_CH_SDST_FILL_SHIFT)
629 
630 /* Bitfield definition for register of struct array CH: SDATA */
631 /*
632  * VAL (RO)
633  *
634  * Data
635  */
636 #define SDM_CH_SDATA_VAL_MASK (0xFFFFFFFFUL)
637 #define SDM_CH_SDATA_VAL_SHIFT (0U)
638 #define SDM_CH_SDATA_VAL_GET(x) (((uint32_t)(x) & SDM_CH_SDATA_VAL_MASK) >> SDM_CH_SDATA_VAL_SHIFT)
639 
640 /* Bitfield definition for register of struct array CH: SDFIFO */
641 /*
642  * VAL (RO)
643  *
644  * FIFO Data
645  */
646 #define SDM_CH_SDFIFO_VAL_MASK (0xFFFFFFFFUL)
647 #define SDM_CH_SDFIFO_VAL_SHIFT (0U)
648 #define SDM_CH_SDFIFO_VAL_GET(x) (((uint32_t)(x) & SDM_CH_SDFIFO_VAL_MASK) >> SDM_CH_SDFIFO_VAL_SHIFT)
649 
650 /* Bitfield definition for register of struct array CH: SCAMP */
651 /*
652  * VAL (RO)
653  *
654  * instant Amplitude Results
655  */
656 #define SDM_CH_SCAMP_VAL_MASK (0xFFFFU)
657 #define SDM_CH_SCAMP_VAL_SHIFT (0U)
658 #define SDM_CH_SCAMP_VAL_GET(x) (((uint32_t)(x) & SDM_CH_SCAMP_VAL_MASK) >> SDM_CH_SCAMP_VAL_SHIFT)
659 
660 /* Bitfield definition for register of struct array CH: SCHTL */
661 /*
662  * VAL (RW)
663  *
664  * Amplitude Threshold for High Limit
665  */
666 #define SDM_CH_SCHTL_VAL_MASK (0xFFFFU)
667 #define SDM_CH_SCHTL_VAL_SHIFT (0U)
668 #define SDM_CH_SCHTL_VAL_SET(x) (((uint32_t)(x) << SDM_CH_SCHTL_VAL_SHIFT) & SDM_CH_SCHTL_VAL_MASK)
669 #define SDM_CH_SCHTL_VAL_GET(x) (((uint32_t)(x) & SDM_CH_SCHTL_VAL_MASK) >> SDM_CH_SCHTL_VAL_SHIFT)
670 
671 /* Bitfield definition for register of struct array CH: SCHTLZ */
672 /*
673  * VAL (RW)
674  *
675  * Amplitude Threshold for zero crossing
676  */
677 #define SDM_CH_SCHTLZ_VAL_MASK (0xFFFFU)
678 #define SDM_CH_SCHTLZ_VAL_SHIFT (0U)
679 #define SDM_CH_SCHTLZ_VAL_SET(x) (((uint32_t)(x) << SDM_CH_SCHTLZ_VAL_SHIFT) & SDM_CH_SCHTLZ_VAL_MASK)
680 #define SDM_CH_SCHTLZ_VAL_GET(x) (((uint32_t)(x) & SDM_CH_SCHTLZ_VAL_MASK) >> SDM_CH_SCHTLZ_VAL_SHIFT)
681 
682 /* Bitfield definition for register of struct array CH: SCLLT */
683 /*
684  * VAL (RW)
685  *
686  * Amplitude Threshold for low limit
687  */
688 #define SDM_CH_SCLLT_VAL_MASK (0xFFFFU)
689 #define SDM_CH_SCLLT_VAL_SHIFT (0U)
690 #define SDM_CH_SCLLT_VAL_SET(x) (((uint32_t)(x) << SDM_CH_SCLLT_VAL_SHIFT) & SDM_CH_SCLLT_VAL_MASK)
691 #define SDM_CH_SCLLT_VAL_GET(x) (((uint32_t)(x) & SDM_CH_SCLLT_VAL_MASK) >> SDM_CH_SCLLT_VAL_SHIFT)
692 
693 /* Bitfield definition for register of struct array CH: SCCTRL */
694 /*
695  * HZ_EN (RW)
696  *
697  * Zero Crossing Enable
698  */
699 #define SDM_CH_SCCTRL_HZ_EN_MASK (0x800000UL)
700 #define SDM_CH_SCCTRL_HZ_EN_SHIFT (23U)
701 #define SDM_CH_SCCTRL_HZ_EN_SET(x) (((uint32_t)(x) << SDM_CH_SCCTRL_HZ_EN_SHIFT) & SDM_CH_SCCTRL_HZ_EN_MASK)
702 #define SDM_CH_SCCTRL_HZ_EN_GET(x) (((uint32_t)(x) & SDM_CH_SCCTRL_HZ_EN_MASK) >> SDM_CH_SCCTRL_HZ_EN_SHIFT)
703 
704 /*
705  * MF_IE (RW)
706  *
707  * Module failure Interrupt enable
708  */
709 #define SDM_CH_SCCTRL_MF_IE_MASK (0x400000UL)
710 #define SDM_CH_SCCTRL_MF_IE_SHIFT (22U)
711 #define SDM_CH_SCCTRL_MF_IE_SET(x) (((uint32_t)(x) << SDM_CH_SCCTRL_MF_IE_SHIFT) & SDM_CH_SCCTRL_MF_IE_MASK)
712 #define SDM_CH_SCCTRL_MF_IE_GET(x) (((uint32_t)(x) & SDM_CH_SCCTRL_MF_IE_MASK) >> SDM_CH_SCCTRL_MF_IE_SHIFT)
713 
714 /*
715  * HL_IE (RW)
716  *
717  * HLT Interrupt Enable
718  */
719 #define SDM_CH_SCCTRL_HL_IE_MASK (0x200000UL)
720 #define SDM_CH_SCCTRL_HL_IE_SHIFT (21U)
721 #define SDM_CH_SCCTRL_HL_IE_SET(x) (((uint32_t)(x) << SDM_CH_SCCTRL_HL_IE_SHIFT) & SDM_CH_SCCTRL_HL_IE_MASK)
722 #define SDM_CH_SCCTRL_HL_IE_GET(x) (((uint32_t)(x) & SDM_CH_SCCTRL_HL_IE_MASK) >> SDM_CH_SCCTRL_HL_IE_SHIFT)
723 
724 /*
725  * LL_IE (RW)
726  *
727  * LLT interrupt Enable
728  */
729 #define SDM_CH_SCCTRL_LL_IE_MASK (0x100000UL)
730 #define SDM_CH_SCCTRL_LL_IE_SHIFT (20U)
731 #define SDM_CH_SCCTRL_LL_IE_SET(x) (((uint32_t)(x) << SDM_CH_SCCTRL_LL_IE_SHIFT) & SDM_CH_SCCTRL_LL_IE_MASK)
732 #define SDM_CH_SCCTRL_LL_IE_GET(x) (((uint32_t)(x) & SDM_CH_SCCTRL_LL_IE_MASK) >> SDM_CH_SCCTRL_LL_IE_SHIFT)
733 
734 /*
735  * SGD_ORDR (RW)
736  *
737  * CIC order
738  * 0: SYNC1
739  * 1: SYNC2
740  * 2: SYNC3
741  * 3: FAST_SYNC
742  */
743 #define SDM_CH_SCCTRL_SGD_ORDR_MASK (0xC0000UL)
744 #define SDM_CH_SCCTRL_SGD_ORDR_SHIFT (18U)
745 #define SDM_CH_SCCTRL_SGD_ORDR_SET(x) (((uint32_t)(x) << SDM_CH_SCCTRL_SGD_ORDR_SHIFT) & SDM_CH_SCCTRL_SGD_ORDR_MASK)
746 #define SDM_CH_SCCTRL_SGD_ORDR_GET(x) (((uint32_t)(x) & SDM_CH_SCCTRL_SGD_ORDR_MASK) >> SDM_CH_SCCTRL_SGD_ORDR_SHIFT)
747 
748 /*
749  * CIC_DEC_RATIO (RW)
750  *
751  * CIC decimation ratio. 0 means div-by-32
752  */
753 #define SDM_CH_SCCTRL_CIC_DEC_RATIO_MASK (0x1F0U)
754 #define SDM_CH_SCCTRL_CIC_DEC_RATIO_SHIFT (4U)
755 #define SDM_CH_SCCTRL_CIC_DEC_RATIO_SET(x) (((uint32_t)(x) << SDM_CH_SCCTRL_CIC_DEC_RATIO_SHIFT) & SDM_CH_SCCTRL_CIC_DEC_RATIO_MASK)
756 #define SDM_CH_SCCTRL_CIC_DEC_RATIO_GET(x) (((uint32_t)(x) & SDM_CH_SCCTRL_CIC_DEC_RATIO_MASK) >> SDM_CH_SCCTRL_CIC_DEC_RATIO_SHIFT)
757 
758 /*
759  * IGN_INI_SAMPLES (RW)
760  *
761  * NotZero: Ignore the first samples that are not accurate
762  * Zero: Use all samples
763  */
764 #define SDM_CH_SCCTRL_IGN_INI_SAMPLES_MASK (0xEU)
765 #define SDM_CH_SCCTRL_IGN_INI_SAMPLES_SHIFT (1U)
766 #define SDM_CH_SCCTRL_IGN_INI_SAMPLES_SET(x) (((uint32_t)(x) << SDM_CH_SCCTRL_IGN_INI_SAMPLES_SHIFT) & SDM_CH_SCCTRL_IGN_INI_SAMPLES_MASK)
767 #define SDM_CH_SCCTRL_IGN_INI_SAMPLES_GET(x) (((uint32_t)(x) & SDM_CH_SCCTRL_IGN_INI_SAMPLES_MASK) >> SDM_CH_SCCTRL_IGN_INI_SAMPLES_SHIFT)
768 
769 /*
770  * EN (RW)
771  *
772  * Amplitude Path Enable
773  */
774 #define SDM_CH_SCCTRL_EN_MASK (0x1U)
775 #define SDM_CH_SCCTRL_EN_SHIFT (0U)
776 #define SDM_CH_SCCTRL_EN_SET(x) (((uint32_t)(x) << SDM_CH_SCCTRL_EN_SHIFT) & SDM_CH_SCCTRL_EN_MASK)
777 #define SDM_CH_SCCTRL_EN_GET(x) (((uint32_t)(x) & SDM_CH_SCCTRL_EN_MASK) >> SDM_CH_SCCTRL_EN_SHIFT)
778 
779 /* Bitfield definition for register of struct array CH: SCST */
780 /*
781  * HZ (W1C)
782  *
783  * Amplitude rising above HZ event found.
784  */
785 #define SDM_CH_SCST_HZ_MASK (0x8U)
786 #define SDM_CH_SCST_HZ_SHIFT (3U)
787 #define SDM_CH_SCST_HZ_SET(x) (((uint32_t)(x) << SDM_CH_SCST_HZ_SHIFT) & SDM_CH_SCST_HZ_MASK)
788 #define SDM_CH_SCST_HZ_GET(x) (((uint32_t)(x) & SDM_CH_SCST_HZ_MASK) >> SDM_CH_SCST_HZ_SHIFT)
789 
790 /*
791  * MF (W1C)
792  *
793  * power modulator Failure found. MCLK not found. Error flag.
794  */
795 #define SDM_CH_SCST_MF_MASK (0x4U)
796 #define SDM_CH_SCST_MF_SHIFT (2U)
797 #define SDM_CH_SCST_MF_SET(x) (((uint32_t)(x) << SDM_CH_SCST_MF_SHIFT) & SDM_CH_SCST_MF_MASK)
798 #define SDM_CH_SCST_MF_GET(x) (((uint32_t)(x) & SDM_CH_SCST_MF_MASK) >> SDM_CH_SCST_MF_SHIFT)
799 
800 /*
801  * CMPH (W1C)
802  *
803  * HLT out of range. Error flag.
804  */
805 #define SDM_CH_SCST_CMPH_MASK (0x2U)
806 #define SDM_CH_SCST_CMPH_SHIFT (1U)
807 #define SDM_CH_SCST_CMPH_SET(x) (((uint32_t)(x) << SDM_CH_SCST_CMPH_SHIFT) & SDM_CH_SCST_CMPH_MASK)
808 #define SDM_CH_SCST_CMPH_GET(x) (((uint32_t)(x) & SDM_CH_SCST_CMPH_MASK) >> SDM_CH_SCST_CMPH_SHIFT)
809 
810 /*
811  * CMPL (W1C)
812  *
813  * LLT out of range. Error flag.
814  */
815 #define SDM_CH_SCST_CMPL_MASK (0x1U)
816 #define SDM_CH_SCST_CMPL_SHIFT (0U)
817 #define SDM_CH_SCST_CMPL_SET(x) (((uint32_t)(x) << SDM_CH_SCST_CMPL_SHIFT) & SDM_CH_SCST_CMPL_MASK)
818 #define SDM_CH_SCST_CMPL_GET(x) (((uint32_t)(x) & SDM_CH_SCST_CMPL_MASK) >> SDM_CH_SCST_CMPL_SHIFT)
819 
820 
821 
822 /* CH register group index macro definition */
823 #define SDM_CH_0 (0UL)
824 #define SDM_CH_1 (1UL)
825 #define SDM_CH_2 (2UL)
826 #define SDM_CH_3 (3UL)
827 
828 
829 #endif /* HPM_SDM_H */
Definition: hpm_sdm_regs.h:12