aboutsummaryrefslogtreecommitdiffstats
path: root/lib/pico-sdk/rp2040/hardware/regs/timer.h
blob: 7cdcbb3041826a63a401181556a479dd4a233b52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT

/**
 * Copyright (c) 2024 Raspberry Pi Ltd.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */
// =============================================================================
// Register block : TIMER
// Version        : 1
// Bus type       : apb
// Description    : Controls time and alarms
//                  time is a 64 bit value indicating the time in usec since
//                  power-on
//                  timeh is the top 32 bits of time & timel is the bottom 32
//                  bits
//                  to change time write to timelw before timehw
//                  to read time read from timelr before timehr
//                  An alarm is set by setting alarm_enable and writing to the
//                  corresponding alarm register
//                  When an alarm is pending, the corresponding alarm_running
//                  signal will be high
//                  An alarm can be cancelled before it has finished by clearing
//                  the alarm_enable
//                  When an alarm fires, the corresponding alarm_irq is set and
//                  alarm_running is cleared
//                  To clear the interrupt write a 1 to the corresponding
//                  alarm_irq
// =============================================================================
#ifndef _HARDWARE_REGS_TIMER_H
#define _HARDWARE_REGS_TIMER_H
// =============================================================================
// Register    : TIMER_TIMEHW
// Description : Write to bits 63:32 of time
//               always write timelw before timehw
#define TIMER_TIMEHW_OFFSET _u(0x00000000)
#define TIMER_TIMEHW_BITS   _u(0xffffffff)
#define TIMER_TIMEHW_RESET  _u(0x00000000)
#define TIMER_TIMEHW_MSB    _u(31)
#define TIMER_TIMEHW_LSB    _u(0)
#define TIMER_TIMEHW_ACCESS "WF"
// =============================================================================
// Register    : TIMER_TIMELW
// Description : Write to bits 31:0 of time
//               writes do not get copied to time until timehw is written
#define TIMER_TIMELW_OFFSET _u(0x00000004)
#define TIMER_TIMELW_BITS   _u(0xffffffff)
#define TIMER_TIMELW_RESET  _u(0x00000000)
#define TIMER_TIMELW_MSB    _u(31)
#define TIMER_TIMELW_LSB    _u(0)
#define TIMER_TIMELW_ACCESS "WF"
// =============================================================================
// Register    : TIMER_TIMEHR
// Description : Read from bits 63:32 of time
//               always read timelr before timehr
#define TIMER_TIMEHR_OFFSET _u(0x00000008)
#define TIMER_TIMEHR_BITS   _u(0xffffffff)
#define TIMER_TIMEHR_RESET  _u(0x00000000)
#define TIMER_TIMEHR_MSB    _u(31)
#define TIMER_TIMEHR_LSB    _u(0)
#define TIMER_TIMEHR_ACCESS "RO"
// =============================================================================
// Register    : TIMER_TIMELR
// Description : Read from bits 31:0 of time
#define TIMER_TIMELR_OFFSET _u(0x0000000c)
#define TIMER_TIMELR_BITS   _u(0xffffffff)
#define TIMER_TIMELR_RESET  _u(0x00000000)
#define TIMER_TIMELR_MSB    _u(31)
#define TIMER_TIMELR_LSB    _u(0)
#define TIMER_TIMELR_ACCESS "RO"
// =============================================================================
// Register    : TIMER_ALARM0
// Description : Arm alarm 0, and configure the time it will fire.
//               Once armed, the alarm fires when TIMER_ALARM0 == TIMELR.
//               The alarm will disarm itself once it fires, and can
//               be disarmed early using the ARMED status register.
#define TIMER_ALARM0_OFFSET _u(0x00000010)
#define TIMER_ALARM0_BITS   _u(0xffffffff)
#define TIMER_ALARM0_RESET  _u(0x00000000)
#define TIMER_ALARM0_MSB    _u(31)
#define TIMER_ALARM0_LSB    _u(0)
#define TIMER_ALARM0_ACCESS "RW"
// =============================================================================
// Register    : TIMER_ALARM1
// Description : Arm alarm 1, and configure the time it will fire.
//               Once armed, the alarm fires when TIMER_ALARM1 == TIMELR.
//               The alarm will disarm itself once it fires, and can
//               be disarmed early using the ARMED status register.
#define TIMER_ALARM1_OFFSET _u(0x00000014)
#define TIMER_ALARM1_BITS   _u(0xffffffff)
#define TIMER_ALARM1_RESET  _u(0x00000000)
#define TIMER_ALARM1_MSB    _u(31)
#define TIMER_ALARM1_LSB    _u(0)
#define TIMER_ALARM1_ACCESS "RW"
// =============================================================================
// Register    : TIMER_ALARM2
// Description : Arm alarm 2, and configure the time it will fire.
//               Once armed, the alarm fires when TIMER_ALARM2 == TIMELR.
//               The alarm will disarm itself once it fires, and can
//               be disarmed early using the ARMED status register.
#define TIMER_ALARM2_OFFSET _u(0x00000018)
#define TIMER_ALARM2_BITS   _u(0xffffffff)
#define TIMER_ALARM2_RESET  _u(0x00000000)
#define TIMER_ALARM2_MSB    _u(31)
#define TIMER_ALARM2_LSB    _u(0)
#define TIMER_ALARM2_ACCESS "RW"
// =============================================================================
// Register    : TIMER_ALARM3
// Description : Arm alarm 3, and configure the time it will fire.
//               Once armed, the alarm fires when TIMER_ALARM3 == TIMELR.
//               The alarm will disarm itself once it fires, and can
//               be disarmed early using the ARMED status register.
#define TIMER_ALARM3_OFFSET _u(0x0000001c)
#define TIMER_ALARM3_BITS   _u(0xffffffff)
#define TIMER_ALARM3_RESET  _u(0x00000000)
#define TIMER_ALARM3_MSB    _u(31)
#define TIMER_ALARM3_LSB    _u(0)
#define TIMER_ALARM3_ACCESS "RW"
// =============================================================================
// Register    : TIMER_ARMED
// Description : Indicates the armed/disarmed status of each alarm.
//               A write to the corresponding ALARMx register arms the alarm.
//               Alarms automatically disarm upon firing, but writing ones here
//               will disarm immediately without waiting to fire.
#define TIMER_ARMED_OFFSET _u(0x00000020)
#define TIMER_ARMED_BITS   _u(0x0000000f)
#define TIMER_ARMED_RESET  _u(0x00000000)
#define TIMER_ARMED_MSB    _u(3)
#define TIMER_ARMED_LSB    _u(0)
#define TIMER_ARMED_ACCESS "WC"
// =============================================================================
// Register    : TIMER_TIMERAWH
// Description : Raw read from bits 63:32 of time (no side effects)
#define TIMER_TIMERAWH_OFFSET _u(0x00000024)
#define TIMER_TIMERAWH_BITS   _u(0xffffffff)
#define TIMER_TIMERAWH_RESET  _u(0x00000000)
#define TIMER_TIMERAWH_MSB    _u(31)
#define TIMER_TIMERAWH_LSB    _u(0)
#define TIMER_TIMERAWH_ACCESS "RO"
// =============================================================================
// Register    : TIMER_TIMERAWL
// Description : Raw read from bits 31:0 of time (no side effects)
#define TIMER_TIMERAWL_OFFSET _u(0x00000028)
#define TIMER_TIMERAWL_BITS   _u(0xffffffff)
#define TIMER_TIMERAWL_RESET  _u(0x00000000)
#define TIMER_TIMERAWL_MSB    _u(31)
#define TIMER_TIMERAWL_LSB    _u(0)
#define TIMER_TIMERAWL_ACCESS "RO"
// =============================================================================
// Register    : TIMER_DBGPAUSE
// Description : Set bits high to enable pause when the corresponding debug
//               ports are active
#define TIMER_DBGPAUSE_OFFSET _u(0x0000002c)
#define TIMER_DBGPAUSE_BITS   _u(0x00000006)
#define TIMER_DBGPAUSE_RESET  _u(0x00000007)
// -----------------------------------------------------------------------------
// Field       : TIMER_DBGPAUSE_DBG1
// Description : Pause when processor 1 is in debug mode
#define TIMER_DBGPAUSE_DBG1_RESET  _u(0x1)
#define TIMER_DBGPAUSE_DBG1_BITS   _u(0x00000004)
#define TIMER_DBGPAUSE_DBG1_MSB    _u(2)
#define TIMER_DBGPAUSE_DBG1_LSB    _u(2)
#define TIMER_DBGPAUSE_DBG1_ACCESS "RW"
// -----------------------------------------------------------------------------
// Field       : TIMER_DBGPAUSE_DBG0
// Description : Pause when processor 0 is in debug mode
#define TIMER_DBGPAUSE_DBG0_RESET  _u(0x1)
#define TIMER_DBGPAUSE_DBG0_BITS   _u(0x00000002)
#define TIMER_DBGPAUSE_DBG0_MSB    _u(1)
#define TIMER_DBGPAUSE_DBG0_LSB    _u(1)
#define TIMER_DBGPAUSE_DBG0_ACCESS "RW"
// =============================================================================
// Register    : TIMER_PAUSE
// Description : Set high to pause the timer
#define TIMER_PAUSE_OFFSET _u(0x00000030)
#define TIMER_PAUSE_BITS   _u(0x00000001)
#define TIMER_PAUSE_RESET  _u(0x00000000)
#define TIMER_PAUSE_MSB    _u(0)
#define TIMER_PAUSE_LSB    _u(0)
#define TIMER_PAUSE_ACCESS "RW"
// =============================================================================
// Register    : TIMER_INTR
// Description : Raw Interrupts
#define TIMER_INTR_OFFSET _u(0x00000034)
#define TIMER_INTR_BITS   _u(0x0000000f)
#define TIMER_INTR_RESET  _u(0x00000000)
// -----------------------------------------------------------------------------
// Field       : TIMER_INTR_ALARM_3
#define TIMER_INTR_ALARM_3_RESET  _u(0x0)
#define TIMER_INTR_ALARM_3_BITS   _u(0x00000008)
#define TIMER_INTR_ALARM_3_MSB    _u(3)
#define TIMER_INTR_ALARM_3_LSB    _u(3)
#define TIMER_INTR_ALARM_3_ACCESS "WC"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTR_ALARM_2
#define TIMER_INTR_ALARM_2_RESET  _u(0x0)
#define TIMER_INTR_ALARM_2_BITS   _u(0x00000004)
#define TIMER_INTR_ALARM_2_MSB    _u(2)
#define TIMER_INTR_ALARM_2_LSB    _u(2)
#define TIMER_INTR_ALARM_2_ACCESS "WC"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTR_ALARM_1
#define TIMER_INTR_ALARM_1_RESET  _u(0x0)
#define TIMER_INTR_ALARM_1_BITS   _u(0x00000002)
#define TIMER_INTR_ALARM_1_MSB    _u(1)
#define TIMER_INTR_ALARM_1_LSB    _u(1)
#define TIMER_INTR_ALARM_1_ACCESS "WC"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTR_ALARM_0
#define TIMER_INTR_ALARM_0_RESET  _u(0x0)
#define TIMER_INTR_ALARM_0_BITS   _u(0x00000001)
#define TIMER_INTR_ALARM_0_MSB    _u(0)
#define TIMER_INTR_ALARM_0_LSB    _u(0)
#define TIMER_INTR_ALARM_0_ACCESS "WC"
// =============================================================================
// Register    : TIMER_INTE
// Description : Interrupt Enable
#define TIMER_INTE_OFFSET _u(0x00000038)
#define TIMER_INTE_BITS   _u(0x0000000f)
#define TIMER_INTE_RESET  _u(0x00000000)
// -----------------------------------------------------------------------------
// Field       : TIMER_INTE_ALARM_3
#define TIMER_INTE_ALARM_3_RESET  _u(0x0)
#define TIMER_INTE_ALARM_3_BITS   _u(0x00000008)
#define TIMER_INTE_ALARM_3_MSB    _u(3)
#define TIMER_INTE_ALARM_3_LSB    _u(3)
#define TIMER_INTE_ALARM_3_ACCESS "RW"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTE_ALARM_2
#define TIMER_INTE_ALARM_2_RESET  _u(0x0)
#define TIMER_INTE_ALARM_2_BITS   _u(0x00000004)
#define TIMER_INTE_ALARM_2_MSB    _u(2)
#define TIMER_INTE_ALARM_2_LSB    _u(2)
#define TIMER_INTE_ALARM_2_ACCESS "RW"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTE_ALARM_1
#define TIMER_INTE_ALARM_1_RESET  _u(0x0)
#define TIMER_INTE_ALARM_1_BITS   _u(0x00000002)
#define TIMER_INTE_ALARM_1_MSB    _u(1)
#define TIMER_INTE_ALARM_1_LSB    _u(1)
#define TIMER_INTE_ALARM_1_ACCESS "RW"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTE_ALARM_0
#define TIMER_INTE_ALARM_0_RESET  _u(0x0)
#define TIMER_INTE_ALARM_0_BITS   _u(0x00000001)
#define TIMER_INTE_ALARM_0_MSB    _u(0)
#define TIMER_INTE_ALARM_0_LSB    _u(0)
#define TIMER_INTE_ALARM_0_ACCESS "RW"
// =============================================================================
// Register    : TIMER_INTF
// Description : Interrupt Force
#define TIMER_INTF_OFFSET _u(0x0000003c)
#define TIMER_INTF_BITS   _u(0x0000000f)
#define TIMER_INTF_RESET  _u(0x00000000)
// -----------------------------------------------------------------------------
// Field       : TIMER_INTF_ALARM_3
#define TIMER_INTF_ALARM_3_RESET  _u(0x0)
#define TIMER_INTF_ALARM_3_BITS   _u(0x00000008)
#define TIMER_INTF_ALARM_3_MSB    _u(3)
#define TIMER_INTF_ALARM_3_LSB    _u(3)
#define TIMER_INTF_ALARM_3_ACCESS "RW"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTF_ALARM_2
#define TIMER_INTF_ALARM_2_RESET  _u(0x0)
#define TIMER_INTF_ALARM_2_BITS   _u(0x00000004)
#define TIMER_INTF_ALARM_2_MSB    _u(2)
#define TIMER_INTF_ALARM_2_LSB    _u(2)
#define TIMER_INTF_ALARM_2_ACCESS "RW"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTF_ALARM_1
#define TIMER_INTF_ALARM_1_RESET  _u(0x0)
#define TIMER_INTF_ALARM_1_BITS   _u(0x00000002)
#define TIMER_INTF_ALARM_1_MSB    _u(1)
#define TIMER_INTF_ALARM_1_LSB    _u(1)
#define TIMER_INTF_ALARM_1_ACCESS "RW"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTF_ALARM_0
#define TIMER_INTF_ALARM_0_RESET  _u(0x0)
#define TIMER_INTF_ALARM_0_BITS   _u(0x00000001)
#define TIMER_INTF_ALARM_0_MSB    _u(0)
#define TIMER_INTF_ALARM_0_LSB    _u(0)
#define TIMER_INTF_ALARM_0_ACCESS "RW"
// =============================================================================
// Register    : TIMER_INTS
// Description : Interrupt status after masking & forcing
#define TIMER_INTS_OFFSET _u(0x00000040)
#define TIMER_INTS_BITS   _u(0x0000000f)
#define TIMER_INTS_RESET  _u(0x00000000)
// -----------------------------------------------------------------------------
// Field       : TIMER_INTS_ALARM_3
#define TIMER_INTS_ALARM_3_RESET  _u(0x0)
#define TIMER_INTS_ALARM_3_BITS   _u(0x00000008)
#define TIMER_INTS_ALARM_3_MSB    _u(3)
#define TIMER_INTS_ALARM_3_LSB    _u(3)
#define TIMER_INTS_ALARM_3_ACCESS "RO"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTS_ALARM_2
#define TIMER_INTS_ALARM_2_RESET  _u(0x0)
#define TIMER_INTS_ALARM_2_BITS   _u(0x00000004)
#define TIMER_INTS_ALARM_2_MSB    _u(2)
#define TIMER_INTS_ALARM_2_LSB    _u(2)
#define TIMER_INTS_ALARM_2_ACCESS "RO"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTS_ALARM_1
#define TIMER_INTS_ALARM_1_RESET  _u(0x0)
#define TIMER_INTS_ALARM_1_BITS   _u(0x00000002)
#define TIMER_INTS_ALARM_1_MSB    _u(1)
#define TIMER_INTS_ALARM_1_LSB    _u(1)
#define TIMER_INTS_ALARM_1_ACCESS "RO"
// -----------------------------------------------------------------------------
// Field       : TIMER_INTS_ALARM_0
#define TIMER_INTS_ALARM_0_RESET  _u(0x0)
#define TIMER_INTS_ALARM_0_BITS   _u(0x00000001)
#define TIMER_INTS_ALARM_0_MSB    _u(0)
#define TIMER_INTS_ALARM_0_LSB    _u(0)
#define TIMER_INTS_ALARM_0_ACCESS "RO"
// =============================================================================
#endif // _HARDWARE_REGS_TIMER_H