Loading...
Searching...
No Matches
clocks.h
1// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT
2
8#ifndef _HARDWARE_STRUCTS_CLOCKS_H
9#define _HARDWARE_STRUCTS_CLOCKS_H
10
14
16#include "hardware/regs/clocks.h"
17
18// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_clocks
19//
20// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature)
21// _REG_(x) will link to the corresponding register in hardware/regs/clocks.h.
22//
23// Bit-field descriptions are of the form:
24// BITMASK [BITRANGE] FIELDNAME (RESETVALUE) DESCRIPTION
43
97
99typedef struct {
100 _REG_(CLOCKS_CLK_GPOUT0_CTRL_OFFSET) // CLOCKS_CLK_GPOUT0_CTRL
101 // Clock control, can be changed on-the-fly (except for auxsrc)
102 // 0x00100000 [20] NUDGE (0) An edge on this signal shifts the phase of the output by...
103 // 0x00030000 [17:16] PHASE (0x0) This delays the enable signal by up to 3 cycles of the...
104 // 0x00001000 [12] DC50 (0) Enables duty cycle correction for odd divisors
105 // 0x00000800 [11] ENABLE (0) Starts and stops the clock generator cleanly
106 // 0x00000400 [10] KILL (0) Asynchronously kills the clock generator
107 // 0x000001e0 [8:5] AUXSRC (0x0) Selects the auxiliary clock source, will glitch when switching
108 io_rw_32 ctrl;
109
110 _REG_(CLOCKS_CLK_GPOUT0_DIV_OFFSET) // CLOCKS_CLK_GPOUT0_DIV
111 // Clock divisor, can be changed on-the-fly
112 // 0xffffff00 [31:8] INT (0x000001) Integer component of the divisor, 0 -> divide by 2^16
113 // 0x000000ff [7:0] FRAC (0x00) Fractional component of the divisor
114 io_rw_32 div;
115
116 _REG_(CLOCKS_CLK_GPOUT0_SELECTED_OFFSET) // CLOCKS_CLK_GPOUT0_SELECTED
117 // Indicates which SRC is currently selected by the glitchless mux (one-hot)
118 // 0xffffffff [31:0] CLK_GPOUT0_SELECTED (0x00000001) This slice does not have a glitchless mux (only the...
119 io_ro_32 selected;
120} clock_hw_t;
121
122
123typedef struct {
124 _REG_(CLOCKS_CLK_SYS_RESUS_CTRL_OFFSET) // CLOCKS_CLK_SYS_RESUS_CTRL
125 // 0x00010000 [16] CLEAR (0) For clearing the resus after the fault that triggered it...
126 // 0x00001000 [12] FRCE (0) Force a resus, for test purposes only
127 // 0x00000100 [8] ENABLE (0) Enable resus
128 // 0x000000ff [7:0] TIMEOUT (0xff) This is expressed as a number of clk_ref cycles +
129 io_rw_32 ctrl;
130
131 _REG_(CLOCKS_CLK_SYS_RESUS_STATUS_OFFSET) // CLOCKS_CLK_SYS_RESUS_STATUS
132 // 0x00000001 [0] RESUSSED (0) Clock has been resuscitated, correct the error then send...
133 io_ro_32 status;
135
136typedef struct {
137 _REG_(CLOCKS_FC0_REF_KHZ_OFFSET) // CLOCKS_FC0_REF_KHZ
138 // Reference clock frequency in kHz
139 // 0x000fffff [19:0] FC0_REF_KHZ (0x00000)
140 io_rw_32 ref_khz;
141
142 _REG_(CLOCKS_FC0_MIN_KHZ_OFFSET) // CLOCKS_FC0_MIN_KHZ
143 // Minimum pass frequency in kHz
144 // 0x01ffffff [24:0] FC0_MIN_KHZ (0x0000000)
145 io_rw_32 min_khz;
146
147 _REG_(CLOCKS_FC0_MAX_KHZ_OFFSET) // CLOCKS_FC0_MAX_KHZ
148 // Maximum pass frequency in kHz
149 // 0x01ffffff [24:0] FC0_MAX_KHZ (0x1ffffff)
150 io_rw_32 max_khz;
151
152 _REG_(CLOCKS_FC0_DELAY_OFFSET) // CLOCKS_FC0_DELAY
153 // Delays the start of frequency counting to allow the mux to settle
154 // 0x00000007 [2:0] FC0_DELAY (0x1)
155 io_rw_32 delay;
156
157 _REG_(CLOCKS_FC0_INTERVAL_OFFSET) // CLOCKS_FC0_INTERVAL
158 // The test interval is 0
159 // 0x0000000f [3:0] FC0_INTERVAL (0x8)
160 io_rw_32 interval;
161
162 _REG_(CLOCKS_FC0_SRC_OFFSET) // CLOCKS_FC0_SRC
163 // Clock sent to frequency counter, set to 0 when not required
164 // 0x000000ff [7:0] FC0_SRC (0x00)
165 io_rw_32 src;
166
167 _REG_(CLOCKS_FC0_STATUS_OFFSET) // CLOCKS_FC0_STATUS
168 // Frequency counter status
169 // 0x10000000 [28] DIED (0) Test clock stopped during test
170 // 0x01000000 [24] FAST (0) Test clock faster than expected, only valid when status_done=1
171 // 0x00100000 [20] SLOW (0) Test clock slower than expected, only valid when status_done=1
172 // 0x00010000 [16] FAIL (0) Test failed
173 // 0x00001000 [12] WAITING (0) Waiting for test clock to start
174 // 0x00000100 [8] RUNNING (0) Test running
175 // 0x00000010 [4] DONE (0) Test complete
176 // 0x00000001 [0] PASS (0) Test passed
177 io_ro_32 status;
178
179 _REG_(CLOCKS_FC0_RESULT_OFFSET) // CLOCKS_FC0_RESULT
180 // Result of frequency measurement, only valid when status_done=1
181 // 0x3fffffe0 [29:5] KHZ (0x0000000)
182 // 0x0000001f [4:0] FRAC (0x00)
183 io_ro_32 result;
184} fc_hw_t;
185
186typedef struct {
187 clock_hw_t clk[10];
188
189 clock_resus_hw_t resus;
190
191 fc_hw_t fc0;
192
193 union {
194 struct {
195 _REG_(CLOCKS_WAKE_EN0_OFFSET) // CLOCKS_WAKE_EN0
196 // enable clock in wake mode
197 // 0x80000000 [31] CLK_SYS_SRAM3 (1)
198 // 0x40000000 [30] CLK_SYS_SRAM2 (1)
199 // 0x20000000 [29] CLK_SYS_SRAM1 (1)
200 // 0x10000000 [28] CLK_SYS_SRAM0 (1)
201 // 0x08000000 [27] CLK_SYS_SPI1 (1)
202 // 0x04000000 [26] CLK_PERI_SPI1 (1)
203 // 0x02000000 [25] CLK_SYS_SPI0 (1)
204 // 0x01000000 [24] CLK_PERI_SPI0 (1)
205 // 0x00800000 [23] CLK_SYS_SIO (1)
206 // 0x00400000 [22] CLK_SYS_RTC (1)
207 // 0x00200000 [21] CLK_RTC_RTC (1)
208 // 0x00100000 [20] CLK_SYS_ROSC (1)
209 // 0x00080000 [19] CLK_SYS_ROM (1)
210 // 0x00040000 [18] CLK_SYS_RESETS (1)
211 // 0x00020000 [17] CLK_SYS_PWM (1)
212 // 0x00010000 [16] CLK_SYS_POWER (1)
213 // 0x00008000 [15] CLK_SYS_PLL_USB (1)
214 // 0x00004000 [14] CLK_SYS_PLL_SYS (1)
215 // 0x00002000 [13] CLK_SYS_PIO1 (1)
216 // 0x00001000 [12] CLK_SYS_PIO0 (1)
217 // 0x00000800 [11] CLK_SYS_PADS (1)
218 // 0x00000400 [10] CLK_SYS_LDO_POR (1)
219 // 0x00000200 [9] CLK_SYS_JTAG (1)
220 // 0x00000100 [8] CLK_SYS_IO (1)
221 // 0x00000080 [7] CLK_SYS_I2C1 (1)
222 // 0x00000040 [6] CLK_SYS_I2C0 (1)
223 // 0x00000020 [5] CLK_SYS_DMA (1)
224 // 0x00000010 [4] CLK_SYS_BUSFABRIC (1)
225 // 0x00000008 [3] CLK_SYS_BUSCTRL (1)
226 // 0x00000004 [2] CLK_SYS_ADC0 (1)
227 // 0x00000002 [1] CLK_ADC_ADC0 (1)
228 // 0x00000001 [0] CLK_SYS_CLOCKS_BANK_DEFAULT (1)
229 io_rw_32 wake_en0;
230
231 _REG_(CLOCKS_WAKE_EN1_OFFSET) // CLOCKS_WAKE_EN1
232 // enable clock in wake mode
233 // 0x00004000 [14] CLK_SYS_XOSC (1)
234 // 0x00002000 [13] CLK_SYS_XIP (1)
235 // 0x00001000 [12] CLK_SYS_WATCHDOG (1)
236 // 0x00000800 [11] CLK_USB_USBCTRL (1)
237 // 0x00000400 [10] CLK_SYS_USBCTRL (1)
238 // 0x00000200 [9] CLK_SYS_UART1 (1)
239 // 0x00000100 [8] CLK_PERI_UART1 (1)
240 // 0x00000080 [7] CLK_SYS_UART0 (1)
241 // 0x00000040 [6] CLK_PERI_UART0 (1)
242 // 0x00000020 [5] CLK_SYS_TIMER (1)
243 // 0x00000010 [4] CLK_SYS_TBMAN (1)
244 // 0x00000008 [3] CLK_SYS_SYSINFO (1)
245 // 0x00000004 [2] CLK_SYS_SYSCFG (1)
246 // 0x00000002 [1] CLK_SYS_SRAM5 (1)
247 // 0x00000001 [0] CLK_SYS_SRAM4 (1)
248 io_rw_32 wake_en1;
249 };
250 // (Description copied from array index 0 register CLOCKS_WAKE_EN0 applies similarly to other array indexes)
251 _REG_(CLOCKS_WAKE_EN0_OFFSET) // CLOCKS_WAKE_EN0
252 // enable clock in wake mode
253 // 0x80000000 [31] CLK_SYS_SRAM3 (1)
254 // 0x40000000 [30] CLK_SYS_SRAM2 (1)
255 // 0x20000000 [29] CLK_SYS_SRAM1 (1)
256 // 0x10000000 [28] CLK_SYS_SRAM0 (1)
257 // 0x08000000 [27] CLK_SYS_SPI1 (1)
258 // 0x04000000 [26] CLK_PERI_SPI1 (1)
259 // 0x02000000 [25] CLK_SYS_SPI0 (1)
260 // 0x01000000 [24] CLK_PERI_SPI0 (1)
261 // 0x00800000 [23] CLK_SYS_SIO (1)
262 // 0x00400000 [22] CLK_SYS_RTC (1)
263 // 0x00200000 [21] CLK_RTC_RTC (1)
264 // 0x00100000 [20] CLK_SYS_ROSC (1)
265 // 0x00080000 [19] CLK_SYS_ROM (1)
266 // 0x00040000 [18] CLK_SYS_RESETS (1)
267 // 0x00020000 [17] CLK_SYS_PWM (1)
268 // 0x00010000 [16] CLK_SYS_PSM (1)
269 // 0x00008000 [15] CLK_SYS_PLL_USB (1)
270 // 0x00004000 [14] CLK_SYS_PLL_SYS (1)
271 // 0x00002000 [13] CLK_SYS_PIO1 (1)
272 // 0x00001000 [12] CLK_SYS_PIO0 (1)
273 // 0x00000800 [11] CLK_SYS_PADS (1)
274 // 0x00000400 [10] CLK_SYS_VREG_AND_CHIP_RESET (1)
275 // 0x00000200 [9] CLK_SYS_JTAG (1)
276 // 0x00000100 [8] CLK_SYS_IO (1)
277 // 0x00000080 [7] CLK_SYS_I2C1 (1)
278 // 0x00000040 [6] CLK_SYS_I2C0 (1)
279 // 0x00000020 [5] CLK_SYS_DMA (1)
280 // 0x00000010 [4] CLK_SYS_BUSFABRIC (1)
281 // 0x00000008 [3] CLK_SYS_BUSCTRL (1)
282 // 0x00000004 [2] CLK_SYS_ADC (1)
283 // 0x00000002 [1] CLK_ADC_ADC (1)
284 // 0x00000001 [0] CLK_SYS_CLOCKS (1)
285 io_rw_32 wake_en[2];
286 };
287
288 union {
289 struct {
290 _REG_(CLOCKS_SLEEP_EN0_OFFSET) // CLOCKS_SLEEP_EN0
291 // enable clock in sleep mode
292 // 0x80000000 [31] CLK_SYS_SRAM3 (1)
293 // 0x40000000 [30] CLK_SYS_SRAM2 (1)
294 // 0x20000000 [29] CLK_SYS_SRAM1 (1)
295 // 0x10000000 [28] CLK_SYS_SRAM0 (1)
296 // 0x08000000 [27] CLK_SYS_SPI1 (1)
297 // 0x04000000 [26] CLK_PERI_SPI1 (1)
298 // 0x02000000 [25] CLK_SYS_SPI0 (1)
299 // 0x01000000 [24] CLK_PERI_SPI0 (1)
300 // 0x00800000 [23] CLK_SYS_SIO (1)
301 // 0x00400000 [22] CLK_SYS_RTC (1)
302 // 0x00200000 [21] CLK_RTC_RTC (1)
303 // 0x00100000 [20] CLK_SYS_ROSC (1)
304 // 0x00080000 [19] CLK_SYS_ROM (1)
305 // 0x00040000 [18] CLK_SYS_RESETS (1)
306 // 0x00020000 [17] CLK_SYS_PWM (1)
307 // 0x00010000 [16] CLK_SYS_POWER (1)
308 // 0x00008000 [15] CLK_SYS_PLL_USB (1)
309 // 0x00004000 [14] CLK_SYS_PLL_SYS (1)
310 // 0x00002000 [13] CLK_SYS_PIO1 (1)
311 // 0x00001000 [12] CLK_SYS_PIO0 (1)
312 // 0x00000800 [11] CLK_SYS_PADS (1)
313 // 0x00000400 [10] CLK_SYS_LDO_POR (1)
314 // 0x00000200 [9] CLK_SYS_JTAG (1)
315 // 0x00000100 [8] CLK_SYS_IO (1)
316 // 0x00000080 [7] CLK_SYS_I2C1 (1)
317 // 0x00000040 [6] CLK_SYS_I2C0 (1)
318 // 0x00000020 [5] CLK_SYS_DMA (1)
319 // 0x00000010 [4] CLK_SYS_BUSFABRIC (1)
320 // 0x00000008 [3] CLK_SYS_BUSCTRL (1)
321 // 0x00000004 [2] CLK_SYS_ADC0 (1)
322 // 0x00000002 [1] CLK_ADC_ADC0 (1)
323 // 0x00000001 [0] CLK_SYS_CLOCKS_BANK_DEFAULT (1)
324 io_rw_32 sleep_en0;
325
326 _REG_(CLOCKS_SLEEP_EN1_OFFSET) // CLOCKS_SLEEP_EN1
327 // enable clock in sleep mode
328 // 0x00004000 [14] CLK_SYS_XOSC (1)
329 // 0x00002000 [13] CLK_SYS_XIP (1)
330 // 0x00001000 [12] CLK_SYS_WATCHDOG (1)
331 // 0x00000800 [11] CLK_USB_USBCTRL (1)
332 // 0x00000400 [10] CLK_SYS_USBCTRL (1)
333 // 0x00000200 [9] CLK_SYS_UART1 (1)
334 // 0x00000100 [8] CLK_PERI_UART1 (1)
335 // 0x00000080 [7] CLK_SYS_UART0 (1)
336 // 0x00000040 [6] CLK_PERI_UART0 (1)
337 // 0x00000020 [5] CLK_SYS_TIMER (1)
338 // 0x00000010 [4] CLK_SYS_TBMAN (1)
339 // 0x00000008 [3] CLK_SYS_SYSINFO (1)
340 // 0x00000004 [2] CLK_SYS_SYSCFG (1)
341 // 0x00000002 [1] CLK_SYS_SRAM5 (1)
342 // 0x00000001 [0] CLK_SYS_SRAM4 (1)
343 io_rw_32 sleep_en1;
344 };
345 // (Description copied from array index 0 register CLOCKS_SLEEP_EN0 applies similarly to other array indexes)
346 _REG_(CLOCKS_SLEEP_EN0_OFFSET) // CLOCKS_SLEEP_EN0
347 // enable clock in sleep mode
348 // 0x80000000 [31] CLK_SYS_SRAM3 (1)
349 // 0x40000000 [30] CLK_SYS_SRAM2 (1)
350 // 0x20000000 [29] CLK_SYS_SRAM1 (1)
351 // 0x10000000 [28] CLK_SYS_SRAM0 (1)
352 // 0x08000000 [27] CLK_SYS_SPI1 (1)
353 // 0x04000000 [26] CLK_PERI_SPI1 (1)
354 // 0x02000000 [25] CLK_SYS_SPI0 (1)
355 // 0x01000000 [24] CLK_PERI_SPI0 (1)
356 // 0x00800000 [23] CLK_SYS_SIO (1)
357 // 0x00400000 [22] CLK_SYS_RTC (1)
358 // 0x00200000 [21] CLK_RTC_RTC (1)
359 // 0x00100000 [20] CLK_SYS_ROSC (1)
360 // 0x00080000 [19] CLK_SYS_ROM (1)
361 // 0x00040000 [18] CLK_SYS_RESETS (1)
362 // 0x00020000 [17] CLK_SYS_PWM (1)
363 // 0x00010000 [16] CLK_SYS_PSM (1)
364 // 0x00008000 [15] CLK_SYS_PLL_USB (1)
365 // 0x00004000 [14] CLK_SYS_PLL_SYS (1)
366 // 0x00002000 [13] CLK_SYS_PIO1 (1)
367 // 0x00001000 [12] CLK_SYS_PIO0 (1)
368 // 0x00000800 [11] CLK_SYS_PADS (1)
369 // 0x00000400 [10] CLK_SYS_VREG_AND_CHIP_RESET (1)
370 // 0x00000200 [9] CLK_SYS_JTAG (1)
371 // 0x00000100 [8] CLK_SYS_IO (1)
372 // 0x00000080 [7] CLK_SYS_I2C1 (1)
373 // 0x00000040 [6] CLK_SYS_I2C0 (1)
374 // 0x00000020 [5] CLK_SYS_DMA (1)
375 // 0x00000010 [4] CLK_SYS_BUSFABRIC (1)
376 // 0x00000008 [3] CLK_SYS_BUSCTRL (1)
377 // 0x00000004 [2] CLK_SYS_ADC (1)
378 // 0x00000002 [1] CLK_ADC_ADC (1)
379 // 0x00000001 [0] CLK_SYS_CLOCKS (1)
380 io_rw_32 sleep_en[2];
381 };
382
383 union {
384 struct {
385 _REG_(CLOCKS_ENABLED0_OFFSET) // CLOCKS_ENABLED0
386 // indicates the state of the clock enable
387 // 0x80000000 [31] CLK_SYS_SRAM3 (0)
388 // 0x40000000 [30] CLK_SYS_SRAM2 (0)
389 // 0x20000000 [29] CLK_SYS_SRAM1 (0)
390 // 0x10000000 [28] CLK_SYS_SRAM0 (0)
391 // 0x08000000 [27] CLK_SYS_SPI1 (0)
392 // 0x04000000 [26] CLK_PERI_SPI1 (0)
393 // 0x02000000 [25] CLK_SYS_SPI0 (0)
394 // 0x01000000 [24] CLK_PERI_SPI0 (0)
395 // 0x00800000 [23] CLK_SYS_SIO (0)
396 // 0x00400000 [22] CLK_SYS_RTC (0)
397 // 0x00200000 [21] CLK_RTC_RTC (0)
398 // 0x00100000 [20] CLK_SYS_ROSC (0)
399 // 0x00080000 [19] CLK_SYS_ROM (0)
400 // 0x00040000 [18] CLK_SYS_RESETS (0)
401 // 0x00020000 [17] CLK_SYS_PWM (0)
402 // 0x00010000 [16] CLK_SYS_POWER (0)
403 // 0x00008000 [15] CLK_SYS_PLL_USB (0)
404 // 0x00004000 [14] CLK_SYS_PLL_SYS (0)
405 // 0x00002000 [13] CLK_SYS_PIO1 (0)
406 // 0x00001000 [12] CLK_SYS_PIO0 (0)
407 // 0x00000800 [11] CLK_SYS_PADS (0)
408 // 0x00000400 [10] CLK_SYS_LDO_POR (0)
409 // 0x00000200 [9] CLK_SYS_JTAG (0)
410 // 0x00000100 [8] CLK_SYS_IO (0)
411 // 0x00000080 [7] CLK_SYS_I2C1 (0)
412 // 0x00000040 [6] CLK_SYS_I2C0 (0)
413 // 0x00000020 [5] CLK_SYS_DMA (0)
414 // 0x00000010 [4] CLK_SYS_BUSFABRIC (0)
415 // 0x00000008 [3] CLK_SYS_BUSCTRL (0)
416 // 0x00000004 [2] CLK_SYS_ADC0 (0)
417 // 0x00000002 [1] CLK_ADC_ADC0 (0)
418 // 0x00000001 [0] CLK_SYS_CLOCKS_BANK_DEFAULT (0)
419 io_ro_32 enabled0;
420
421 _REG_(CLOCKS_ENABLED1_OFFSET) // CLOCKS_ENABLED1
422 // indicates the state of the clock enable
423 // 0x00004000 [14] CLK_SYS_XOSC (0)
424 // 0x00002000 [13] CLK_SYS_XIP (0)
425 // 0x00001000 [12] CLK_SYS_WATCHDOG (0)
426 // 0x00000800 [11] CLK_USB_USBCTRL (0)
427 // 0x00000400 [10] CLK_SYS_USBCTRL (0)
428 // 0x00000200 [9] CLK_SYS_UART1 (0)
429 // 0x00000100 [8] CLK_PERI_UART1 (0)
430 // 0x00000080 [7] CLK_SYS_UART0 (0)
431 // 0x00000040 [6] CLK_PERI_UART0 (0)
432 // 0x00000020 [5] CLK_SYS_TIMER (0)
433 // 0x00000010 [4] CLK_SYS_TBMAN (0)
434 // 0x00000008 [3] CLK_SYS_SYSINFO (0)
435 // 0x00000004 [2] CLK_SYS_SYSCFG (0)
436 // 0x00000002 [1] CLK_SYS_SRAM5 (0)
437 // 0x00000001 [0] CLK_SYS_SRAM4 (0)
438 io_ro_32 enabled1;
439 };
440 // (Description copied from array index 0 register CLOCKS_ENABLED0 applies similarly to other array indexes)
441 _REG_(CLOCKS_ENABLED0_OFFSET) // CLOCKS_ENABLED0
442 // indicates the state of the clock enable
443 // 0x80000000 [31] CLK_SYS_SRAM3 (0)
444 // 0x40000000 [30] CLK_SYS_SRAM2 (0)
445 // 0x20000000 [29] CLK_SYS_SRAM1 (0)
446 // 0x10000000 [28] CLK_SYS_SRAM0 (0)
447 // 0x08000000 [27] CLK_SYS_SPI1 (0)
448 // 0x04000000 [26] CLK_PERI_SPI1 (0)
449 // 0x02000000 [25] CLK_SYS_SPI0 (0)
450 // 0x01000000 [24] CLK_PERI_SPI0 (0)
451 // 0x00800000 [23] CLK_SYS_SIO (0)
452 // 0x00400000 [22] CLK_SYS_RTC (0)
453 // 0x00200000 [21] CLK_RTC_RTC (0)
454 // 0x00100000 [20] CLK_SYS_ROSC (0)
455 // 0x00080000 [19] CLK_SYS_ROM (0)
456 // 0x00040000 [18] CLK_SYS_RESETS (0)
457 // 0x00020000 [17] CLK_SYS_PWM (0)
458 // 0x00010000 [16] CLK_SYS_PSM (0)
459 // 0x00008000 [15] CLK_SYS_PLL_USB (0)
460 // 0x00004000 [14] CLK_SYS_PLL_SYS (0)
461 // 0x00002000 [13] CLK_SYS_PIO1 (0)
462 // 0x00001000 [12] CLK_SYS_PIO0 (0)
463 // 0x00000800 [11] CLK_SYS_PADS (0)
464 // 0x00000400 [10] CLK_SYS_VREG_AND_CHIP_RESET (0)
465 // 0x00000200 [9] CLK_SYS_JTAG (0)
466 // 0x00000100 [8] CLK_SYS_IO (0)
467 // 0x00000080 [7] CLK_SYS_I2C1 (0)
468 // 0x00000040 [6] CLK_SYS_I2C0 (0)
469 // 0x00000020 [5] CLK_SYS_DMA (0)
470 // 0x00000010 [4] CLK_SYS_BUSFABRIC (0)
471 // 0x00000008 [3] CLK_SYS_BUSCTRL (0)
472 // 0x00000004 [2] CLK_SYS_ADC (0)
473 // 0x00000002 [1] CLK_ADC_ADC (0)
474 // 0x00000001 [0] CLK_SYS_CLOCKS (0)
475 io_ro_32 enabled[2];
476 };
477
478 _REG_(CLOCKS_INTR_OFFSET) // CLOCKS_INTR
479 // Raw Interrupts
480 // 0x00000001 [0] CLK_SYS_RESUS (0)
481 io_ro_32 intr;
482
483 _REG_(CLOCKS_INTE_OFFSET) // CLOCKS_INTE
484 // Interrupt Enable
485 // 0x00000001 [0] CLK_SYS_RESUS (0)
486 io_rw_32 inte;
487
488 _REG_(CLOCKS_INTF_OFFSET) // CLOCKS_INTF
489 // Interrupt Force
490 // 0x00000001 [0] CLK_SYS_RESUS (0)
491 io_rw_32 intf;
492
493 _REG_(CLOCKS_INTS_OFFSET) // CLOCKS_INTS
494 // Interrupt status after masking & forcing
495 // 0x00000001 [0] CLK_SYS_RESUS (0)
496 io_ro_32 ints;
498
499#define clocks_hw ((clocks_hw_t *)CLOCKS_BASE)
500static_assert(sizeof (clocks_hw_t) == 0x00c8, "");
501
502#endif // _HARDWARE_STRUCTS_CLOCKS_H
clock_dest_num_rp2040
Clock destination numbers on RP2040 (used as typedef clock_dest_num_t).
Definition clocks.h:47
enum clock_dest_num_rp2040 clock_dest_num_t
Clock destination numbers on RP2040 (used as typedef clock_dest_num_t).
clock_num_rp2040
Clock numbers on RP2040 (used as typedef clock_num_t).
Definition clocks.h:29
enum clock_num_rp2040 clock_num_t
Clock numbers on RP2040 (used as typedef clock_num_t).
@ CLK_DEST_SYS_BUSCTRL
Select SYS_BUSCTRL as clock destination.
Definition clocks.h:51
@ CLK_DEST_SYS_PIO1
Select SYS_PIO1 as clock destination.
Definition clocks.h:61
@ CLK_DEST_SYS_SIO
Select SYS_SIO as clock destination.
Definition clocks.h:71
@ CLK_DEST_SYS_PSM
Select SYS_PSM as clock destination.
Definition clocks.h:64
@ CLK_DEST_SYS_UART0
Select SYS_UART0 as clock destination.
Definition clocks.h:87
@ CLK_DEST_SYS_TBMAN
Select SYS_TBMAN as clock destination.
Definition clocks.h:84
@ CLK_DEST_SYS_PLL_USB
Select SYS_PLL_USB as clock destination.
Definition clocks.h:63
@ CLK_DEST_SYS_USBCTRL
Select SYS_USBCTRL as clock destination.
Definition clocks.h:90
@ CLK_DEST_PERI_UART0
Select PERI_UART0 as clock destination.
Definition clocks.h:86
@ CLK_DEST_SYS_I2C1
Select SYS_I2C1 as clock destination.
Definition clocks.h:55
@ CLK_DEST_SYS_PADS
Select SYS_PADS as clock destination.
Definition clocks.h:59
@ CLK_DEST_SYS_XIP
Select SYS_XIP as clock destination.
Definition clocks.h:93
@ CLK_DEST_SYS_SRAM1
Select SYS_SRAM1 as clock destination.
Definition clocks.h:77
@ CLK_DEST_SYS_SRAM4
Select SYS_SRAM4 as clock destination.
Definition clocks.h:80
@ CLK_DEST_PERI_UART1
Select PERI_UART1 as clock destination.
Definition clocks.h:88
@ CLK_DEST_SYS_WATCHDOG
Select SYS_WATCHDOG as clock destination.
Definition clocks.h:92
@ CLK_DEST_SYS_ROSC
Select SYS_ROSC as clock destination.
Definition clocks.h:68
@ CLK_DEST_SYS_PIO0
Select SYS_PIO0 as clock destination.
Definition clocks.h:60
@ CLK_DEST_SYS_SRAM2
Select SYS_SRAM2 as clock destination.
Definition clocks.h:78
@ CLK_DEST_SYS_SRAM5
Select SYS_SRAM5 as clock destination.
Definition clocks.h:81
@ CLK_DEST_SYS_SPI1
Select SYS_SPI1 as clock destination.
Definition clocks.h:75
@ CLK_DEST_ADC_ADC
Select ADC_ADC as clock destination.
Definition clocks.h:49
@ CLK_DEST_RTC_RTC
Select RTC_RTC as clock destination.
Definition clocks.h:69
@ CLK_DEST_SYS_JTAG
Select SYS_JTAG as clock destination.
Definition clocks.h:57
@ CLK_DEST_SYS_IO
Select SYS_IO as clock destination.
Definition clocks.h:56
@ CLK_DEST_SYS_SYSINFO
Select SYS_SYSINFO as clock destination.
Definition clocks.h:83
@ CLK_DEST_PERI_SPI0
Select PERI_SPI0 as clock destination.
Definition clocks.h:72
@ CLK_DEST_SYS_VREG_AND_CHIP_RESET
Select SYS_VREG_AND_CHIP_RESET as clock destination.
Definition clocks.h:58
@ CLK_DEST_SYS_SYSCFG
Select SYS_SYSCFG as clock destination.
Definition clocks.h:82
@ CLK_DEST_SYS_PWM
Select SYS_PWM as clock destination.
Definition clocks.h:65
@ CLK_DEST_SYS_TIMER
Select SYS_TIMER as clock destination.
Definition clocks.h:85
@ CLK_DEST_SYS_SRAM0
Select SYS_SRAM0 as clock destination.
Definition clocks.h:76
@ CLK_DEST_SYS_CLOCKS
Select SYS_CLOCKS as clock destination.
Definition clocks.h:48
@ CLK_DEST_SYS_UART1
Select SYS_UART1 as clock destination.
Definition clocks.h:89
@ CLK_DEST_SYS_SPI0
Select SYS_SPI0 as clock destination.
Definition clocks.h:73
@ CLK_DEST_SYS_PLL_SYS
Select SYS_PLL_SYS as clock destination.
Definition clocks.h:62
@ CLK_DEST_SYS_BUSFABRIC
Select SYS_BUSFABRIC as clock destination.
Definition clocks.h:52
@ CLK_DEST_SYS_DMA
Select SYS_DMA as clock destination.
Definition clocks.h:53
@ CLK_DEST_PERI_SPI1
Select PERI_SPI1 as clock destination.
Definition clocks.h:74
@ CLK_DEST_USB_USBCTRL
Select USB_USBCTRL as clock destination.
Definition clocks.h:91
@ CLK_DEST_SYS_I2C0
Select SYS_I2C0 as clock destination.
Definition clocks.h:54
@ CLK_DEST_SYS_RESETS
Select SYS_RESETS as clock destination.
Definition clocks.h:66
@ CLK_DEST_SYS_SRAM3
Select SYS_SRAM3 as clock destination.
Definition clocks.h:79
@ CLK_DEST_SYS_ADC
Select SYS_ADC as clock destination.
Definition clocks.h:50
@ CLK_DEST_SYS_ROM
Select SYS_ROM as clock destination.
Definition clocks.h:67
@ CLK_DEST_SYS_RTC
Select SYS_RTC as clock destination.
Definition clocks.h:70
@ CLK_DEST_SYS_XOSC
Select SYS_XOSC as clock destination.
Definition clocks.h:94
@ clk_rtc
Select CLK_RTC as clock source.
Definition clocks.h:39
@ clk_gpout0
Select CLK_GPOUT0 as clock source.
Definition clocks.h:30
@ clk_gpout2
Select CLK_GPOUT2 as clock source.
Definition clocks.h:32
@ clk_peri
Select CLK_PERI as clock source.
Definition clocks.h:36
@ clk_gpout1
Select CLK_GPOUT1 as clock source.
Definition clocks.h:31
@ clk_ref
Select CLK_REF as clock source.
Definition clocks.h:34
@ clk_sys
Select CLK_SYS as clock source.
Definition clocks.h:35
@ clk_usb
Select CLK_USB as clock source.
Definition clocks.h:37
@ clk_gpout3
Select CLK_GPOUT3 as clock source.
Definition clocks.h:33
@ clk_adc
Select CLK_ADC as clock source.
Definition clocks.h:38
Definition clocks.h:99
Definition clocks.h:123
Definition clocks.h:186
Definition clocks.h:136