1 /***************************************************************************//**
2  * @file
3  * @brief Device Manager Clocks.
4  *******************************************************************************
5  * # License
6  * <b>Copyright 2024 Silicon Laboratories, Inc. www.silabs.com</b>
7  ******************************************************************************
8  *
9  * SPDX-License-Identifier: Zlib
10  *
11  * The licensor of this software is Silicon Laboratories Inc.
12  *
13  * This software is provided 'as-is', without any express or implied
14  * warranty. In no event will the authors be held liable for any damages
15  * arising from the use of this software.
16  *
17  * Permission is granted to anyone to use this software for any purpose,
18  * including commercial applications, and to alter it and redistribute it
19  * freely, subject to the following restrictions:
20  *
21  * 1. The origin of this software must not be misrepresented; you must not
22  *    claim that you wrote the original software. If you use this software
23  *    in a product, an acknowledgment in the product documentation would be
24  *    appreciated but is not required.
25  * 2. Altered source versions must be plainly marked as such, and must not be
26  *    misrepresented as being the original software.
27  * 3. This notice may not be removed or altered from any source distribution.
28  *
29  *****************************************************************************/
30 
31 #ifndef SL_DEVICE_CLOCK_H
32 #define SL_DEVICE_CLOCK_H
33 
34 #include "sl_enum.h"
35 #include <stdint.h>
36 
37 #if defined(DEVICE_CLOCK_INTERNAL_PRESENT)
38 #include "sli_device_clock_internal.h"
39 #endif
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 /***************************************************************************//**
46  * @addtogroup device_clock Device Manager Clock
47  * @details
48  * ## Overview
49  *
50  * The Device Manager Clock module defines the different oscillators,
51  * clock branches and bus clock values that exist across all Silicon Labs
52  * devices.
53  *
54  * @{
55  ******************************************************************************/
56 
57 // ----------------------------------------------------------------------------
58 // ENUMS
59 
60 /// Oscillators
SL_ENUM(sl_oscillator_t)61 SL_ENUM(sl_oscillator_t) {
62   SL_OSCILLATOR_FSRCO,      ///< FSRCO Oscillator
63   SL_OSCILLATOR_HFRCODPLL,  ///< HFRCODPLL Oscillator
64   SL_OSCILLATOR_HFXO,       ///< HFXO Oscillator
65   SL_OSCILLATOR_HFRCOEM23,  ///< HFRCOEM23 Oscillator
66   SL_OSCILLATOR_RFFPLL,     ///< RFFPLL Oscillator
67   SL_OSCILLATOR_USBPLL,     ///< USBPLL Oscillator
68   SL_OSCILLATOR_SOCPLL,     ///< SOCPLL Oscillator
69   SL_OSCILLATOR_LFXO,       ///< LFXO Oscillator
70   SL_OSCILLATOR_LFRCO,      ///< LFRCO Oscillator
71   SL_OSCILLATOR_ULFRCO,     ///< ULFRCO Oscillator
72   SL_OSCILLATOR_CLKIN0,     ///< CLKIN0 Oscillator
73   SL_OSCILLATOR_FLPLL       ///< FLPLL Oscillator
74 };
75 
76 /// Clock Branches
SL_ENUM(sl_clock_branch_t)77 SL_ENUM(sl_clock_branch_t) {
78   SL_CLOCK_BRANCH_SYSCLK,        ///< SYSCLK Clock Branch
79   SL_CLOCK_BRANCH_HCLK,          ///< HCLK Clock Branch
80   SL_CLOCK_BRANCH_HCLKRADIO,     ///< HCLK Radio Clock Branch
81   SL_CLOCK_BRANCH_PCLK,          ///< PCLK Clock Branch
82   SL_CLOCK_BRANCH_LSPCLK,        ///< LSPCLK Clock Branch
83   SL_CLOCK_BRANCH_TRACECLK,      ///< TRACECLK Clock Branch
84   SL_CLOCK_BRANCH_ADCCLK,        ///< ADCCLK Clock Branch
85   SL_CLOCK_BRANCH_EXPORTCLK,     ///< EXPORTCLK Clock Branch
86   SL_CLOCK_BRANCH_EM01GRPACLK,   ///< EM01GRPACLK Clock Branch
87   SL_CLOCK_BRANCH_EM01GRPBCLK,   ///< EM01GRPBCLK Clock Branch
88   SL_CLOCK_BRANCH_EM01GRPCCLK,   ///< EM01GRPCCLK Clock Branch
89   SL_CLOCK_BRANCH_EM01GRPDCLK,   ///< EM01GRPDCLK Clock Branch
90   SL_CLOCK_BRANCH_EM23GRPACLK,   ///< EM23GRPACLK Clock Branch
91   SL_CLOCK_BRANCH_EM4GRPACLK,    ///< EM4GRPACLK Clock Branch
92   SL_CLOCK_BRANCH_QSPISYSCLK,    ///< QSPISYSCLK Clock Branch
93   SL_CLOCK_BRANCH_IADCCLK,       ///< IADCCLK Clock Branch
94   SL_CLOCK_BRANCH_WDOG0CLK,      ///< WDOG0CLK Clock Branch
95   SL_CLOCK_BRANCH_WDOG1CLK,      ///< WDOG1CLK Clock Branch
96   SL_CLOCK_BRANCH_RTCCCLK,       ///< RTCCCLK Clock Branch
97   SL_CLOCK_BRANCH_SYSRTCCLK,     ///< SYSRTCCLK Clock Branch
98   SL_CLOCK_BRANCH_EUART0CLK,     ///< EUART0CLK Clock Branch
99   SL_CLOCK_BRANCH_EUSART0CLK,    ///< EUSART0CLK Clock Branch
100   SL_CLOCK_BRANCH_DPLLREFCLK,    ///< DPLLREFCLK Clock Branch
101   SL_CLOCK_BRANCH_I2C0CLK,       ///< I2C0CLK Clock Branch
102   SL_CLOCK_BRANCH_LCDCLK,        ///< LCDCLK Clock Branch
103   SL_CLOCK_BRANCH_PIXELRZCLK,    ///< PIXELRZCLK Clock Branch
104   SL_CLOCK_BRANCH_PCNT0CLK,      ///< PCNT0CLK Clock Branch
105   SL_CLOCK_BRANCH_PRORTCCLK,     ///< PCNT0CLK Clock Branch
106   SL_CLOCK_BRANCH_SYSTICKCLK,    ///< SYSTICKCLK Clock Branch
107   SL_CLOCK_BRANCH_LESENSEHFCLK,  ///< LESENSEHFCLK Clock Branch
108   SL_CLOCK_BRANCH_VDAC0CLK,      ///< VDAC0CLK Clock Branch
109   SL_CLOCK_BRANCH_VDAC1CLK,      ///< VDAC1CLK Clock Branch
110   SL_CLOCK_BRANCH_USB0CLK,       ///< USB0CLK Clock Branch
111   SL_CLOCK_BRANCH_FLPLLREFCLK,   ///< FLPLLREFCLK Clock Branch
112   SL_CLOCK_BRANCH_INVALID        ///< INVALID Clock Branch
113 };
114 
115 // ----------------------------------------------------------------------------
116 // DEFINES
117 
118 /// @cond DO_NOT_INCLUDE_WITH_DOXYGEN
119 
120 // CLKEN bitfield shift in bus clock value.
121 #define _BUS_CLOCK_CLKEN_BIT_SHIFT 0
122 
123 // CLKEN bitfield mask in bus clock value.
124 #define _BUS_CLOCK_CLKEN_BIT_MASK  0x3FUL
125 
126 // CLKENx register number shift in bus clock value.
127 #define _BUS_CLOCK_CLKENX_SHIFT  6
128 
129 // CLKENx register number mask in bus clock value.
130 #define _BUS_CLOCK_CLKENX_MASK   0x1C0UL
131 
132 // CLKEN0 value in bus clock.
133 #define BUS_CLOCK_CLKEN0   0x0UL
134 
135 // CLKEN1 value in bus clock.
136 #define BUS_CLOCK_CLKEN1   0x1UL
137 
138 // CLKEN2 value in bus clock.
139 #define BUS_CLOCK_CLKEN2   0x2UL
140 
141 // CLKENHV value in bus clock.
142 #define BUS_CLOCK_CLKENHV  0x3UL
143 
144 /// @endcond
145 
146 /***************************************************************************//**
147  * @name Bus Clock Defines
148  * Those defines can be used as constant of type sl_bus_clock_t and thus can
149  * be used as argument for function sl_clock_manager_enable_bus_clock() and
150  * sl_clock_manager_disable_bus_clock() in @ref clock_manager.
151  * The values of those defines are device specific.
152  * @{
153  ******************************************************************************/
154 
155 /// Define for INVALID peripheral bus clock pointer.
156 #define SL_BUS_CLOCK_INVALID (0)
157 
158 /// Define for ACMP0 peripheral bus clock pointer.
159 #define SL_BUS_CLOCK_ACMP0 (&SL_BUS_CLOCK_ACMP0_VALUE)
160 
161 /// Define for ACMP1 peripheral bus clock pointer.
162 #define SL_BUS_CLOCK_ACMP1 (&SL_BUS_CLOCK_ACMP1_VALUE)
163 
164 /// Define for ADC0 peripheral bus clock pointer.
165 #define SL_BUS_CLOCK_ADC0 (&SL_BUS_CLOCK_ADC0_VALUE)
166 
167 /// Define for AGC peripheral bus clock pointer.
168 #define SL_BUS_CLOCK_AGC (&SL_BUS_CLOCK_AGC_VALUE)
169 
170 /// Define for AMUXCP0 peripheral bus clock pointer.
171 #define SL_BUS_CLOCK_AMUXCP0 (&SL_BUS_CLOCK_AMUXCP0_VALUE)
172 
173 /// Define for BUFC peripheral bus clock pointer.
174 #define SL_BUS_CLOCK_BUFC (&SL_BUS_CLOCK_BUFC_VALUE)
175 
176 /// Define for BURAM peripheral bus clock pointer.
177 #define SL_BUS_CLOCK_BURAM (&SL_BUS_CLOCK_BURAM_VALUE)
178 
179 /// Define for BURTC peripheral bus clock pointer.
180 #define SL_BUS_CLOCK_BURTC (&SL_BUS_CLOCK_BURTC_VALUE)
181 
182 /// Define for CRYPTOACC peripheral bus clock pointer.
183 #define SL_BUS_CLOCK_CRYPTOACC (&SL_BUS_CLOCK_CRYPTOACC_VALUE)
184 
185 /// Define for DCDC peripheral bus clock pointer.
186 #define SL_BUS_CLOCK_DCDC (&SL_BUS_CLOCK_DCDC_VALUE)
187 
188 /// Define for DEVINFO peripheral bus clock pointer.
189 #define SL_BUS_CLOCK_DEVINFO (&SL_BUS_CLOCK_DEVINFO_VALUE)
190 
191 /// Define for DMEM peripheral bus clock pointer.
192 #define SL_BUS_CLOCK_DMEM (&SL_BUS_CLOCK_DMEM_VALUE)
193 
194 /// Define for DPLL0 peripheral bus clock pointer.
195 #define SL_BUS_CLOCK_DPLL0 (&SL_BUS_CLOCK_DPLL0_VALUE)
196 
197 /// Define for ECAIFADC peripheral bus clock pointer.
198 #define SL_BUS_CLOCK_ECAIFADC (&SL_BUS_CLOCK_ECAIFADC_VALUE)
199 
200 /// Define for ETAMPDET peripheral bus clock pointer.
201 #define SL_BUS_CLOCK_ETAMPDET (&SL_BUS_CLOCK_ETAMPDET_VALUE)
202 
203 /// Define for EUART0 peripheral bus clock pointer.
204 #define SL_BUS_CLOCK_EUART0 (&SL_BUS_CLOCK_EUART0_VALUE)
205 
206 /// Define for EUSART0 peripheral bus clock pointer.
207 #define SL_BUS_CLOCK_EUSART0 (&SL_BUS_CLOCK_EUSART0_VALUE)
208 
209 /// Define for EUSART1 peripheral bus clock pointer.
210 #define SL_BUS_CLOCK_EUSART1 (&SL_BUS_CLOCK_EUSART1_VALUE)
211 
212 /// Define for EUSART2 peripheral bus clock pointer.
213 #define SL_BUS_CLOCK_EUSART2 (&SL_BUS_CLOCK_EUSART2_VALUE)
214 
215 /// Define for EUSART3 peripheral bus clock pointer.
216 #define SL_BUS_CLOCK_EUSART3 (&SL_BUS_CLOCK_EUSART3_VALUE)
217 
218 /// Define for EUSART4 peripheral bus clock pointer.
219 #define SL_BUS_CLOCK_EUSART4 (&SL_BUS_CLOCK_EUSART4_VALUE)
220 
221 /// Define for FRC peripheral bus clock pointer.
222 #define SL_BUS_CLOCK_FRC (&SL_BUS_CLOCK_FRC_VALUE)
223 
224 /// Define for FSRCO peripheral bus clock pointer.
225 #define SL_BUS_CLOCK_FSRCO (&SL_BUS_CLOCK_FSRCO_VALUE)
226 
227 /// Define for GPCRC0 peripheral bus clock pointer.
228 #define SL_BUS_CLOCK_GPCRC0 (&SL_BUS_CLOCK_GPCRC0_VALUE)
229 
230 /// Define for GPIO peripheral bus clock pointer.
231 #define SL_BUS_CLOCK_GPIO (&SL_BUS_CLOCK_GPIO_VALUE)
232 
233 /// Define for HFRCO0 peripheral bus clock pointer.
234 #define SL_BUS_CLOCK_HFRCO0 (&SL_BUS_CLOCK_HFRCO0_VALUE)
235 
236 /// Define for HFRCOEM23 peripheral bus clock pointer.
237 #define SL_BUS_CLOCK_HFRCOEM23 (&SL_BUS_CLOCK_HFRCOEM23_VALUE)
238 
239 /// Define for HFXO0 peripheral bus clock pointer.
240 #define SL_BUS_CLOCK_HFXO0 (&SL_BUS_CLOCK_HFXO0_VALUE)
241 
242 /// Define for HOSTMAILBOX peripheral bus clock pointer.
243 #define SL_BUS_CLOCK_HOSTMAILBOX (&SL_BUS_CLOCK_HOSTMAILBOX_VALUE)
244 
245 /// Define for HOSTPORTAL peripheral bus clock pointer.
246 #define SL_BUS_CLOCK_HOSTPORTAL (&SL_BUS_CLOCK_HOSTPORTAL_VALUE)
247 
248 /// Define for I2C0 peripheral bus clock pointer.
249 #define SL_BUS_CLOCK_I2C0 (&SL_BUS_CLOCK_I2C0_VALUE)
250 
251 /// Define for I2C1 peripheral bus clock pointer.
252 #define SL_BUS_CLOCK_I2C1 (&SL_BUS_CLOCK_I2C1_VALUE)
253 
254 /// Define for I2C2 peripheral bus clock pointer.
255 #define SL_BUS_CLOCK_I2C2 (&SL_BUS_CLOCK_I2C2_VALUE)
256 
257 /// Define for I2C3 peripheral bus clock pointer.
258 #define SL_BUS_CLOCK_I2C3 (&SL_BUS_CLOCK_I2C3_VALUE)
259 
260 /// Define for IADC0 peripheral bus clock pointer.
261 #define SL_BUS_CLOCK_IADC0 (&SL_BUS_CLOCK_IADC0_VALUE)
262 
263 /// Define for ICACHE0 peripheral bus clock pointer.
264 #define SL_BUS_CLOCK_ICACHE0 (&SL_BUS_CLOCK_ICACHE0_VALUE)
265 
266 /// Define for IFADCDEBUG peripheral bus clock pointer.
267 #define SL_BUS_CLOCK_IFADCDEBUG (&SL_BUS_CLOCK_IFADCDEBUG_VALUE)
268 
269 /// Define for KEYSCAN peripheral bus clock pointer.
270 #define SL_BUS_CLOCK_KEYSCAN (&SL_BUS_CLOCK_KEYSCAN_VALUE)
271 
272 /// Define for KSU peripheral bus clock pointer.
273 #define SL_BUS_CLOCK_KSU (&SL_BUS_CLOCK_KSU_VALUE)
274 
275 /// Define for L2ICACHE0 peripheral bus clock pointer.
276 #define SL_BUS_CLOCK_L2ICACHE0 (&SL_BUS_CLOCK_L2ICACHE0_VALUE)
277 
278 /// Define for LCD peripheral bus clock pointer.
279 #define SL_BUS_CLOCK_LCD (&SL_BUS_CLOCK_LCD_VALUE)
280 
281 /// Define for LDMA0 peripheral bus clock pointer.
282 #define SL_BUS_CLOCK_LDMA0 (&SL_BUS_CLOCK_LDMA0_VALUE)
283 
284 /// Define for LDMAXBAR0 peripheral bus clock pointer.
285 #define SL_BUS_CLOCK_LDMAXBAR0 (&SL_BUS_CLOCK_LDMAXBAR0_VALUE)
286 
287 /// Define for LEDDRV0 peripheral bus clock pointer.
288 #define SL_BUS_CLOCK_LEDDRV0 (&SL_BUS_CLOCK_LEDDRV0_VALUE)
289 
290 /// Define for LESENSE peripheral bus clock pointer.
291 #define SL_BUS_CLOCK_LESENSE (&SL_BUS_CLOCK_LESENSE_VALUE)
292 
293 /// Define for LETIMER0 peripheral bus clock pointer.
294 #define SL_BUS_CLOCK_LETIMER0 (&SL_BUS_CLOCK_LETIMER0_VALUE)
295 
296 /// Define for LFRCO peripheral bus clock pointer.
297 #define SL_BUS_CLOCK_LFRCO (&SL_BUS_CLOCK_LFRCO_VALUE)
298 
299 /// Define for LFXO peripheral bus clock pointer.
300 #define SL_BUS_CLOCK_LFXO (&SL_BUS_CLOCK_LFXO_VALUE)
301 
302 /// Define for LPWAES peripheral bus clock pointer.
303 #define SL_BUS_CLOCK_LPWAES (&SL_BUS_CLOCK_LPWAES_VALUE)
304 
305 /// Define for LPW0PORTAL peripheral bus clock pointer.
306 #define SL_BUS_CLOCK_LPW0PORTAL (&SL_BUS_CLOCK_LPW0PORTAL_VALUE)
307 
308 /// Define for MODEM peripheral bus clock pointer.
309 #define SL_BUS_CLOCK_MODEM (&SL_BUS_CLOCK_MODEM_VALUE)
310 
311 /// Define for MSC peripheral bus clock pointer.
312 #define SL_BUS_CLOCK_MSC (&SL_BUS_CLOCK_MSC_VALUE)
313 
314 /// Define for MVP peripheral bus clock pointer.
315 #define SL_BUS_CLOCK_MVP (&SL_BUS_CLOCK_MVP_VALUE)
316 
317 /// Define for PCNT0 peripheral bus clock pointer.
318 #define SL_BUS_CLOCK_PCNT0 (&SL_BUS_CLOCK_PCNT0_VALUE)
319 
320 /// Define for PDM peripheral bus clock pointer.
321 #define SL_BUS_CLOCK_PDM (&SL_BUS_CLOCK_PDM_VALUE)
322 
323 /// Define for PIXELRZ0 peripheral bus clock pointer.
324 #define SL_BUS_CLOCK_PIXELRZ0 (&SL_BUS_CLOCK_PIXELRZ0_VALUE)
325 
326 /// Define for PIXELRZ1 peripheral bus clock pointer.
327 #define SL_BUS_CLOCK_PIXELRZ1 (&SL_BUS_CLOCK_PIXELRZ1_VALUE)
328 
329 /// Define for PRORTC peripheral bus clock pointer.
330 #define SL_BUS_CLOCK_PRORTC (&SL_BUS_CLOCK_PRORTC_VALUE)
331 
332 /// Define for PROTIMER peripheral bus clock pointer.
333 #define SL_BUS_CLOCK_PROTIMER (&SL_BUS_CLOCK_PROTIMER_VALUE)
334 
335 /// Define for PRS peripheral bus clock pointer.
336 #define SL_BUS_CLOCK_PRS (&SL_BUS_CLOCK_PRS_VALUE)
337 
338 /// Define for RAC peripheral bus clock pointer.
339 #define SL_BUS_CLOCK_RAC (&SL_BUS_CLOCK_RAC_VALUE)
340 
341 /// Define for RADIOAES peripheral bus clock pointer.
342 #define SL_BUS_CLOCK_RADIOAES (&SL_BUS_CLOCK_RADIOAES_VALUE)
343 
344 /// Define for RDMAILBOX0 peripheral bus clock pointer.
345 #define SL_BUS_CLOCK_RDMAILBOX0 (&SL_BUS_CLOCK_RDMAILBOX0_VALUE)
346 
347 /// Define for RDMAILBOX1 peripheral bus clock pointer.
348 #define SL_BUS_CLOCK_RDMAILBOX1 (&SL_BUS_CLOCK_RDMAILBOX1_VALUE)
349 
350 /// Define for RDSCRATCHPAD peripheral bus clock pointer.
351 #define SL_BUS_CLOCK_RDSCRATCHPAD (&SL_BUS_CLOCK_RDSCRATCHPAD_VALUE)
352 
353 /// Define for RFCRC peripheral bus clock pointer.
354 #define SL_BUS_CLOCK_RFCRC (&SL_BUS_CLOCK_RFCRC_VALUE)
355 
356 /// Define for RFECA0 peripheral bus clock pointer.
357 #define SL_BUS_CLOCK_RFECA0 (&SL_BUS_CLOCK_RFECA0_VALUE)
358 
359 /// Define for RFECA1 peripheral bus clock pointer.
360 #define SL_BUS_CLOCK_RFECA1 (&SL_BUS_CLOCK_RFECA1_VALUE)
361 
362 /// Define for RFFPLL0 peripheral bus clock pointer.
363 #define SL_BUS_CLOCK_RFFPLL0 (&SL_BUS_CLOCK_RFFPLL0_VALUE)
364 
365 /// Define for RFMAILBOX peripheral bus clock pointer.
366 #define SL_BUS_CLOCK_RFMAILBOX (&SL_BUS_CLOCK_RFMAILBOX_VALUE)
367 
368 /// Define for RFSCRATCHPAD peripheral bus clock pointer.
369 #define SL_BUS_CLOCK_RFSCRATCHPAD (&SL_BUS_CLOCK_RFSCRATCHPAD_VALUE)
370 
371 /// Define for RFSENSE peripheral bus clock pointer.
372 #define SL_BUS_CLOCK_RFSENSE (&SL_BUS_CLOCK_RFSENSE_VALUE)
373 
374 /// Define for RPA peripheral bus clock pointer.
375 #define SL_BUS_CLOCK_RPA (&SL_BUS_CLOCK_RPA_VALUE)
376 
377 /// Define for RTCC peripheral bus clock pointer.
378 #define SL_BUS_CLOCK_RTCC (&SL_BUS_CLOCK_RTCC_VALUE)
379 
380 /// Define for SCRATCHPAD peripheral bus clock pointer.
381 #define SL_BUS_CLOCK_SCRATCHPAD (&SL_BUS_CLOCK_SCRATCHPAD_VALUE)
382 
383 /// Define for SEMAILBOX peripheral bus clock pointer.
384 #define SL_BUS_CLOCK_SEMAILBOX (&SL_BUS_CLOCK_SEMAILBOX_VALUE)
385 
386 /// Define for SEMAPHORE0 peripheral bus clock pointer.
387 #define SL_BUS_CLOCK_SEMAPHORE0 (&SL_BUS_CLOCK_SEMAPHORE0_VALUE)
388 
389 /// Define for SEMAPHORE1 peripheral bus clock pointer.
390 #define SL_BUS_CLOCK_SEMAPHORE1 (&SL_BUS_CLOCK_SEMAPHORE1_VALUE)
391 
392 /// Define for SEPORTAL peripheral bus clock pointer.
393 #define SL_BUS_CLOCK_SEPORTAL (&SL_BUS_CLOCK_SEPORTAL_VALUE)
394 
395 /// Define for SMU peripheral bus clock pointer.
396 #define SL_BUS_CLOCK_SMU (&SL_BUS_CLOCK_SMU_VALUE)
397 
398 /// Define for SOCPLL0 peripheral bus clock pointer.
399 #define SL_BUS_CLOCK_SOCPLL0 (&SL_BUS_CLOCK_SOCPLL0_VALUE)
400 
401 /// Define for SYMCRYPTO peripheral bus clock pointer.
402 #define SL_BUS_CLOCK_SYMCRYPTO (&SL_BUS_CLOCK_SYMCRYPTO_VALUE)
403 
404 /// Define for SYNTH peripheral bus clock pointer.
405 #define SL_BUS_CLOCK_SYNTH (&SL_BUS_CLOCK_SYNTH_VALUE)
406 
407 /// Define for SYSCFG peripheral bus clock pointer.
408 #define SL_BUS_CLOCK_SYSCFG (&SL_BUS_CLOCK_SYSCFG_VALUE)
409 
410 /// Define for SYSRTC0 peripheral bus clock pointer.
411 #define SL_BUS_CLOCK_SYSRTC0 (&SL_BUS_CLOCK_SYSRTC0_VALUE)
412 
413 /// Define for TIMER0 peripheral bus clock pointer.
414 #define SL_BUS_CLOCK_TIMER0 (&SL_BUS_CLOCK_TIMER0_VALUE)
415 
416 /// Define for TIMER1 peripheral bus clock pointer.
417 #define SL_BUS_CLOCK_TIMER1 (&SL_BUS_CLOCK_TIMER1_VALUE)
418 
419 /// Define for TIMER2 peripheral bus clock pointer.
420 #define SL_BUS_CLOCK_TIMER2 (&SL_BUS_CLOCK_TIMER2_VALUE)
421 
422 /// Define for TIMER3 peripheral bus clock pointer.
423 #define SL_BUS_CLOCK_TIMER3 (&SL_BUS_CLOCK_TIMER3_VALUE)
424 
425 /// Define for TIMER4 peripheral bus clock pointer.
426 #define SL_BUS_CLOCK_TIMER4 (&SL_BUS_CLOCK_TIMER4_VALUE)
427 
428 /// Define for TIMER5 peripheral bus clock pointer.
429 #define SL_BUS_CLOCK_TIMER5 (&SL_BUS_CLOCK_TIMER5_VALUE)
430 
431 /// Define for TIMER6 peripheral bus clock pointer.
432 #define SL_BUS_CLOCK_TIMER6 (&SL_BUS_CLOCK_TIMER6_VALUE)
433 
434 /// Define for TIMER7 peripheral bus clock pointer.
435 #define SL_BUS_CLOCK_TIMER7 (&SL_BUS_CLOCK_TIMER7_VALUE)
436 
437 /// Define for TIMER8 peripheral bus clock pointer.
438 #define SL_BUS_CLOCK_TIMER8 (&SL_BUS_CLOCK_TIMER8_VALUE)
439 
440 /// Define for TIMER9 peripheral bus clock pointer.
441 #define SL_BUS_CLOCK_TIMER9 (&SL_BUS_CLOCK_TIMER9_VALUE)
442 
443 /// Define for ULFRCO peripheral bus clock pointer.
444 #define SL_BUS_CLOCK_ULFRCO (&SL_BUS_CLOCK_ULFRCO_VALUE)
445 
446 /// Define for USART0 peripheral bus clock pointer.
447 #define SL_BUS_CLOCK_USART0 (&SL_BUS_CLOCK_USART0_VALUE)
448 
449 /// Define for USART1 peripheral bus clock pointer.
450 #define SL_BUS_CLOCK_USART1 (&SL_BUS_CLOCK_USART1_VALUE)
451 
452 /// Define for USART2 peripheral bus clock pointer.
453 #define SL_BUS_CLOCK_USART2 (&SL_BUS_CLOCK_USART2_VALUE)
454 
455 /// Define for USB peripheral bus clock pointer.
456 #define SL_BUS_CLOCK_USB (&SL_BUS_CLOCK_USB_VALUE)
457 
458 /// Define for VDAC0 peripheral bus clock pointer.
459 #define SL_BUS_CLOCK_VDAC0 (&SL_BUS_CLOCK_VDAC0_VALUE)
460 
461 /// Define for VDAC1 peripheral bus clock pointer.
462 #define SL_BUS_CLOCK_VDAC1 (&SL_BUS_CLOCK_VDAC1_VALUE)
463 
464 /// Define for WDOG0 peripheral bus clock pointer.
465 #define SL_BUS_CLOCK_WDOG0 (&SL_BUS_CLOCK_WDOG0_VALUE)
466 
467 /// Define for WDOG1 peripheral bus clock pointer.
468 #define SL_BUS_CLOCK_WDOG1 (&SL_BUS_CLOCK_WDOG1_VALUE)
469 
470 /// @} (end bus_clock_defines)
471 
472 // ----------------------------------------------------------------------------
473 // TYPEDEFS
474 
475 /// The bus clock typedef.
476 typedef const uint32_t* sl_bus_clock_t;
477 
478 // ----------------------------------------------------------------------------
479 // EXTERNS
480 
481 /// @cond DO_NOT_INCLUDE_WITH_DOXYGEN
482 
483 // External declaration for invalid peripheral bus clock value.
484 extern const uint32_t SL_BUS_CLOCK_INVALID_VALUE;
485 
486 // External declaration for ACMP0 peripheral bus clock value.
487 extern const uint32_t SL_BUS_CLOCK_ACMP0_VALUE;
488 
489 // External declaration for ACMP1 peripheral bus clock value.
490 extern const uint32_t SL_BUS_CLOCK_ACMP1_VALUE;
491 
492 // External declaration for ADC0 peripheral bus clock value.
493 extern const uint32_t SL_BUS_CLOCK_ADC0_VALUE;
494 
495 // External declaration for AGC peripheral bus clock value.
496 extern const uint32_t SL_BUS_CLOCK_AGC_VALUE;
497 
498 // External declaration for AMUXCP0 peripheral bus clock value.
499 extern const uint32_t SL_BUS_CLOCK_AMUXCP0_VALUE;
500 
501 // External declaration for BUFC peripheral bus clock value.
502 extern const uint32_t SL_BUS_CLOCK_BUFC_VALUE;
503 
504 // External declaration for BURAM peripheral bus clock value.
505 extern const uint32_t SL_BUS_CLOCK_BURAM_VALUE;
506 
507 // External declaration for BURTC peripheral bus clock value.
508 extern const uint32_t SL_BUS_CLOCK_BURTC_VALUE;
509 
510 // External declaration for CRYPTOACC peripheral bus clock value.
511 extern const uint32_t SL_BUS_CLOCK_CRYPTOACC_VALUE;
512 
513 // External declaration for DCDC peripheral bus clock value.
514 extern const uint32_t SL_BUS_CLOCK_DCDC_VALUE;
515 
516 // External declaration for DEVINFO peripheral bus clock value.
517 extern const uint32_t SL_BUS_CLOCK_DEVINFO_VALUE;
518 
519 // External declaration for DMEM peripheral bus clock value.
520 extern const uint32_t SL_BUS_CLOCK_DMEM_VALUE;
521 
522 // External declaration for DPLL0 peripheral bus clock value.
523 extern const uint32_t SL_BUS_CLOCK_DPLL0_VALUE;
524 
525 // External declaration for ECAIFADC peripheral bus clock value.
526 extern const uint32_t SL_BUS_CLOCK_ECAIFADC_VALUE;
527 
528 // External declaration for ETAMPDET peripheral bus clock value.
529 extern const uint32_t SL_BUS_CLOCK_ETAMPDET_VALUE;
530 
531 // External declaration for EUART0 peripheral bus clock value.
532 extern const uint32_t SL_BUS_CLOCK_EUART0_VALUE;
533 
534 // External declaration for EUSART0 peripheral bus clock value.
535 extern const uint32_t SL_BUS_CLOCK_EUSART0_VALUE;
536 
537 // External declaration for EUSART1 peripheral bus clock value.
538 extern const uint32_t SL_BUS_CLOCK_EUSART1_VALUE;
539 
540 // External declaration for EUSART2 peripheral bus clock value.
541 extern const uint32_t SL_BUS_CLOCK_EUSART2_VALUE;
542 
543 // External declaration for EUSART3 peripheral bus clock value.
544 extern const uint32_t SL_BUS_CLOCK_EUSART3_VALUE;
545 
546 // External declaration for EUSART4 peripheral bus clock value.
547 extern const uint32_t SL_BUS_CLOCK_EUSART4_VALUE;
548 
549 // External declaration for FRC peripheral bus clock value.
550 extern const uint32_t SL_BUS_CLOCK_FRC_VALUE;
551 
552 // External declaration for FSRCO peripheral bus clock value.
553 extern const uint32_t SL_BUS_CLOCK_FSRCO_VALUE;
554 
555 // External declaration for GPCRC0 peripheral bus clock value.
556 extern const uint32_t SL_BUS_CLOCK_GPCRC0_VALUE;
557 
558 // External declaration for GPIO peripheral bus clock value.
559 extern const uint32_t SL_BUS_CLOCK_GPIO_VALUE;
560 
561 // External declaration for HFRCO0 peripheral bus clock value.
562 extern const uint32_t SL_BUS_CLOCK_HFRCO0_VALUE;
563 
564 // External declaration for HFRCOEM23 peripheral bus clock value.
565 extern const uint32_t SL_BUS_CLOCK_HFRCOEM23_VALUE;
566 
567 // External declaration for HFXO0 peripheral bus clock value.
568 extern const uint32_t SL_BUS_CLOCK_HFXO0_VALUE;
569 
570 // External declaration for HOSTMAILBOX peripheral bus clock value.
571 extern const uint32_t SL_BUS_CLOCK_HOSTMAILBOX_VALUE;
572 
573 // External declaration for HOSTPORTAL peripheral bus clock value.
574 extern const uint32_t SL_BUS_CLOCK_HOSTPORTAL_VALUE;
575 
576 // External declaration for I2C0 peripheral bus clock value.
577 extern const uint32_t SL_BUS_CLOCK_I2C0_VALUE;
578 
579 // External declaration for I2C1 peripheral bus clock value.
580 extern const uint32_t SL_BUS_CLOCK_I2C1_VALUE;
581 
582 // External declaration for I2C2 peripheral bus clock value.
583 extern const uint32_t SL_BUS_CLOCK_I2C2_VALUE;
584 
585 // External declaration for I2C3 peripheral bus clock value.
586 extern const uint32_t SL_BUS_CLOCK_I2C3_VALUE;
587 
588 // External declaration for IADC0 peripheral bus clock value.
589 extern const uint32_t SL_BUS_CLOCK_IADC0_VALUE;
590 
591 // External declaration for ICACHE0 peripheral bus clock value.
592 extern const uint32_t SL_BUS_CLOCK_ICACHE0_VALUE;
593 
594 // External declaration for IFADCDEBUG peripheral bus clock value.
595 extern const uint32_t SL_BUS_CLOCK_IFADCDEBUG_VALUE;
596 
597 // External declaration for KEYSCAN peripheral bus clock value.
598 extern const uint32_t SL_BUS_CLOCK_KEYSCAN_VALUE;
599 
600 // External declaration for KSU peripheral bus clock value.
601 extern const uint32_t SL_BUS_CLOCK_KSU_VALUE;
602 
603 // External declaration for L2ICACHE0 peripheral bus clock value.
604 extern const uint32_t SL_BUS_CLOCK_L2ICACHE0_VALUE;
605 
606 // External declaration for LCD peripheral bus clock value.
607 extern const uint32_t SL_BUS_CLOCK_LCD_VALUE;
608 
609 // External declaration for LDMA0 peripheral bus clock value.
610 extern const uint32_t SL_BUS_CLOCK_LDMA0_VALUE;
611 
612 // External declaration for LDMAXBAR0 peripheral bus clock value.
613 extern const uint32_t SL_BUS_CLOCK_LDMAXBAR0_VALUE;
614 
615 // External declaration for LEDDRV0 peripheral bus clock value.
616 extern const uint32_t SL_BUS_CLOCK_LEDDRV0_VALUE;
617 
618 // External declaration for LESENSE peripheral bus clock value.
619 extern const uint32_t SL_BUS_CLOCK_LESENSE_VALUE;
620 
621 // External declaration for LETIMER0 peripheral bus clock value.
622 extern const uint32_t SL_BUS_CLOCK_LETIMER0_VALUE;
623 
624 // External declaration for LFRCO peripheral bus clock value.
625 extern const uint32_t SL_BUS_CLOCK_LFRCO_VALUE;
626 
627 // External declaration for LFXO peripheral bus clock value.
628 extern const uint32_t SL_BUS_CLOCK_LFXO_VALUE;
629 
630 // External declaration for LPWAES peripheral bus clock value.
631 extern const uint32_t SL_BUS_CLOCK_LPWAES_VALUE;
632 
633 // External declaration for LPW0PORTAL peripheral bus clock value.
634 extern const uint32_t SL_BUS_CLOCK_LPW0PORTAL_VALUE;
635 
636 // External declaration for MODEM peripheral bus clock value.
637 extern const uint32_t SL_BUS_CLOCK_MODEM_VALUE;
638 
639 // External declaration for MSC peripheral bus clock value.
640 extern const uint32_t SL_BUS_CLOCK_MSC_VALUE;
641 
642 // External declaration for MVP peripheral bus clock value.
643 extern const uint32_t SL_BUS_CLOCK_MVP_VALUE;
644 
645 // External declaration for PCNT0 peripheral bus clock value.
646 extern const uint32_t SL_BUS_CLOCK_PCNT0_VALUE;
647 
648 // External declaration for PDM peripheral bus clock value.
649 extern const uint32_t SL_BUS_CLOCK_PDM_VALUE;
650 
651 // External declaration for PIXELRZ0 peripheral bus clock value.
652 extern const uint32_t SL_BUS_CLOCK_PIXELRZ0_VALUE;
653 
654 // External declaration for PIXELRZ1 peripheral bus clock value.
655 extern const uint32_t SL_BUS_CLOCK_PIXELRZ1_VALUE;
656 
657 // External declaration for PRORTC peripheral bus clock value.
658 extern const uint32_t SL_BUS_CLOCK_PRORTC_VALUE;
659 
660 // External declaration for PROTIMER peripheral bus clock value.
661 extern const uint32_t SL_BUS_CLOCK_PROTIMER_VALUE;
662 
663 // External declaration for PRS peripheral bus clock value.
664 extern const uint32_t SL_BUS_CLOCK_PRS_VALUE;
665 
666 // External declaration for RAC peripheral bus clock value.
667 extern const uint32_t SL_BUS_CLOCK_RAC_VALUE;
668 
669 // External declaration for RADIOAES peripheral bus clock value.
670 extern const uint32_t SL_BUS_CLOCK_RADIOAES_VALUE;
671 
672 // External declaration for RDMAILBOX0 peripheral bus clock value.
673 extern const uint32_t SL_BUS_CLOCK_RDMAILBOX0_VALUE;
674 
675 // External declaration for RDMAILBOX1 peripheral bus clock value.
676 extern const uint32_t SL_BUS_CLOCK_RDMAILBOX1_VALUE;
677 
678 // External declaration for RDSCRATCHPAD peripheral bus clock value.
679 extern const uint32_t SL_BUS_CLOCK_RDSCRATCHPAD_VALUE;
680 
681 // External declaration for RFCRC peripheral bus clock value.
682 extern const uint32_t SL_BUS_CLOCK_RFCRC_VALUE;
683 
684 // External declaration for RFECA0 peripheral bus clock value.
685 extern const uint32_t SL_BUS_CLOCK_RFECA0_VALUE;
686 
687 // External declaration for RFECA1 peripheral bus clock value.
688 extern const uint32_t SL_BUS_CLOCK_RFECA1_VALUE;
689 
690 // External declaration for RFFPLL0 peripheral bus clock value.
691 extern const uint32_t SL_BUS_CLOCK_RFFPLL0_VALUE;
692 
693 // External declaration for RFMAILBOX peripheral bus clock value.
694 extern const uint32_t SL_BUS_CLOCK_RFMAILBOX_VALUE;
695 
696 // External declaration for RFSCRATCHPAD peripheral bus clock value.
697 extern const uint32_t SL_BUS_CLOCK_RFSCRATCHPAD_VALUE;
698 
699 // External declaration for RFSENSE peripheral bus clock value.
700 extern const uint32_t SL_BUS_CLOCK_RFSENSE_VALUE;
701 
702 // External declaration for RPA peripheral bus clock value.
703 extern const uint32_t SL_BUS_CLOCK_RPA_VALUE;
704 
705 // External declaration for RTCC peripheral bus clock value.
706 extern const uint32_t SL_BUS_CLOCK_RTCC_VALUE;
707 
708 // External declaration for SCRATCHPAD peripheral bus clock value.
709 extern const uint32_t SL_BUS_CLOCK_SCRATCHPAD_VALUE;
710 
711 // External declaration for SEMAILBOX peripheral bus clock value.
712 extern const uint32_t SL_BUS_CLOCK_SEMAILBOX_VALUE;
713 
714 // External declaration for SEMAPHORE0 peripheral bus clock value.
715 extern const uint32_t SL_BUS_CLOCK_SEMAPHORE0_VALUE;
716 
717 // External declaration for SEMAPHORE1 peripheral bus clock value.
718 extern const uint32_t SL_BUS_CLOCK_SEMAPHORE1_VALUE;
719 
720 // External declaration for SEPORTAL peripheral bus clock value.
721 extern const uint32_t SL_BUS_CLOCK_SEPORTAL_VALUE;
722 
723 // External declaration for SMU peripheral bus clock value.
724 extern const uint32_t SL_BUS_CLOCK_SMU_VALUE;
725 
726 // External declaration for SOCPLL0 peripheral bus clock value.
727 extern const uint32_t SL_BUS_CLOCK_SOCPLL0_VALUE;
728 
729 // External declaration for SYMCRYPTO peripheral bus clock value.
730 extern const uint32_t SL_BUS_CLOCK_SYMCRYPTO_VALUE;
731 
732 // External declaration for SYNTH peripheral bus clock value.
733 extern const uint32_t SL_BUS_CLOCK_SYNTH_VALUE;
734 
735 // External declaration for SYSCFG peripheral bus clock value.
736 extern const uint32_t SL_BUS_CLOCK_SYSCFG_VALUE;
737 
738 // External declaration for SYSRTC0 peripheral bus clock value.
739 extern const uint32_t SL_BUS_CLOCK_SYSRTC0_VALUE;
740 
741 // External declaration for TIMER0 peripheral bus clock value.
742 extern const uint32_t SL_BUS_CLOCK_TIMER0_VALUE;
743 
744 // External declaration for TIMER1 peripheral bus clock value.
745 extern const uint32_t SL_BUS_CLOCK_TIMER1_VALUE;
746 
747 // External declaration for TIMER2 peripheral bus clock value.
748 extern const uint32_t SL_BUS_CLOCK_TIMER2_VALUE;
749 
750 // External declaration for TIMER3 peripheral bus clock value.
751 extern const uint32_t SL_BUS_CLOCK_TIMER3_VALUE;
752 
753 // External declaration for TIMER4 peripheral bus clock value.
754 extern const uint32_t SL_BUS_CLOCK_TIMER4_VALUE;
755 
756 // External declaration for TIMER5 peripheral bus clock value.
757 extern const uint32_t SL_BUS_CLOCK_TIMER5_VALUE;
758 
759 // External declaration for TIMER6 peripheral bus clock value.
760 extern const uint32_t SL_BUS_CLOCK_TIMER6_VALUE;
761 
762 // External declaration for TIMER7 peripheral bus clock value.
763 extern const uint32_t SL_BUS_CLOCK_TIMER7_VALUE;
764 
765 // External declaration for TIMER8 peripheral bus clock value.
766 extern const uint32_t SL_BUS_CLOCK_TIMER8_VALUE;
767 
768 // External declaration for TIMER9 peripheral bus clock value.
769 extern const uint32_t SL_BUS_CLOCK_TIMER9_VALUE;
770 
771 // External declaration for ULFRCO peripheral bus clock value.
772 extern const uint32_t SL_BUS_CLOCK_ULFRCO_VALUE;
773 
774 // External declaration for USART0 peripheral bus clock value.
775 extern const uint32_t SL_BUS_CLOCK_USART0_VALUE;
776 
777 // External declaration for USART1 peripheral bus clock value.
778 extern const uint32_t SL_BUS_CLOCK_USART1_VALUE;
779 
780 // External declaration for USART2 peripheral bus clock value.
781 extern const uint32_t SL_BUS_CLOCK_USART2_VALUE;
782 
783 // External declaration for USB peripheral bus clock value.
784 extern const uint32_t SL_BUS_CLOCK_USB_VALUE;
785 
786 // External declaration for VDAC0 peripheral bus clock value.
787 extern const uint32_t SL_BUS_CLOCK_VDAC0_VALUE;
788 
789 // External declaration for VDAC1 peripheral bus clock value.
790 extern const uint32_t SL_BUS_CLOCK_VDAC1_VALUE;
791 
792 // External declaration for WDOG0 peripheral bus clock value.
793 extern const uint32_t SL_BUS_CLOCK_WDOG0_VALUE;
794 
795 // External declaration for WDOG1 peripheral bus clock value.
796 extern const uint32_t SL_BUS_CLOCK_WDOG1_VALUE;
797 
798 /// @endcond
799 
800 /** @} (end addtogroup device_clock) */
801 
802 #ifdef __cplusplus
803 }
804 #endif
805 
806 #endif // SL_DEVICE_CLOCK_H
807