1 // THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT
2 
3 /**
4  * Copyright (c) 2024 Raspberry Pi Ltd.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  */
8 #ifndef _HARDWARE_STRUCTS_ACCESSCTRL_H
9 #define _HARDWARE_STRUCTS_ACCESSCTRL_H
10 
11 /**
12  * \file rp2350/accessctrl.h
13  */
14 
15 #include "hardware/address_mapped.h"
16 #include "hardware/regs/accessctrl.h"
17 
18 // Reference to datasheet: https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf#tab-registerlist_accessctrl
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/accessctrl.h.
22 //
23 // Bit-field descriptions are of the form:
24 // BITMASK [BITRANGE] FIELDNAME (RESETVALUE) DESCRIPTION
25 
26 typedef struct {
27     _REG_(ACCESSCTRL_LOCK_OFFSET) // ACCESSCTRL_LOCK
28     // Once a LOCK bit is written to 1, ACCESSCTRL silently ignores writes from that master
29     // 0x00000008 [3]     DEBUG        (0)
30     // 0x00000004 [2]     DMA          (1)
31     // 0x00000002 [1]     CORE1        (0)
32     // 0x00000001 [0]     CORE0        (0)
33     io_rw_32 lock;
34 
35     _REG_(ACCESSCTRL_FORCE_CORE_NS_OFFSET) // ACCESSCTRL_FORCE_CORE_NS
36     // Force core 1's bus accesses to always be Non-secure, no matter the core's internal state
37     // 0x00000002 [1]     CORE1        (0)
38     io_rw_32 force_core_ns;
39 
40     _REG_(ACCESSCTRL_CFGRESET_OFFSET) // ACCESSCTRL_CFGRESET
41     // Write 1 to reset all ACCESSCTRL configuration, except for the LOCK and FORCE_CORE_NS registers
42     // 0x00000001 [0]     CFGRESET     (0)
43     io_wo_32 cfgreset;
44 
45     // (Description copied from array index 0 register ACCESSCTRL_GPIO_NSMASK0 applies similarly to other array indexes)
46     _REG_(ACCESSCTRL_GPIO_NSMASK0_OFFSET) // ACCESSCTRL_GPIO_NSMASK0
47     // Control whether GPIO0
48     // 0xffffffff [31:0]  GPIO_NSMASK0 (0x00000000)
49     io_rw_32 gpio_nsmask[2];
50 
51     _REG_(ACCESSCTRL_ROM_OFFSET) // ACCESSCTRL_ROM
52     // Control access to ROM. Defaults to fully open access.
53     // 0x00000080 [7]     DBG          (1) If 1, ROM can be accessed by the debugger, at...
54     // 0x00000040 [6]     DMA          (1) If 1, ROM can be accessed by the DMA, at...
55     // 0x00000020 [5]     CORE1        (1) If 1, ROM can be accessed by core 1, at...
56     // 0x00000010 [4]     CORE0        (1) If 1, ROM can be accessed by core 0, at...
57     // 0x00000008 [3]     SP           (1) If 1, ROM can be accessed from a Secure, Privileged context
58     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, ROM can be accessed from a...
59     // 0x00000002 [1]     NSP          (1) If 1, ROM can be accessed from a Non-secure, Privileged context
60     // 0x00000001 [0]     NSU          (1) If 1, and NSP is also set, ROM can be accessed from a...
61     io_rw_32 rom;
62 
63     _REG_(ACCESSCTRL_XIP_MAIN_OFFSET) // ACCESSCTRL_XIP_MAIN
64     // Control access to XIP_MAIN. Defaults to fully open access.
65     // 0x00000080 [7]     DBG          (1) If 1, XIP_MAIN can be accessed by the debugger, at...
66     // 0x00000040 [6]     DMA          (1) If 1, XIP_MAIN can be accessed by the DMA, at...
67     // 0x00000020 [5]     CORE1        (1) If 1, XIP_MAIN can be accessed by core 1, at...
68     // 0x00000010 [4]     CORE0        (1) If 1, XIP_MAIN can be accessed by core 0, at...
69     // 0x00000008 [3]     SP           (1) If 1, XIP_MAIN can be accessed from a Secure, Privileged context
70     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, XIP_MAIN can be accessed from...
71     // 0x00000002 [1]     NSP          (1) If 1, XIP_MAIN can be accessed from a Non-secure,...
72     // 0x00000001 [0]     NSU          (1) If 1, and NSP is also set, XIP_MAIN can be accessed from...
73     io_rw_32 xip_main;
74 
75     // (Description copied from array index 0 register ACCESSCTRL_SRAM0 applies similarly to other array indexes)
76     _REG_(ACCESSCTRL_SRAM0_OFFSET) // ACCESSCTRL_SRAM0
77     // Control access to SRAM0. Defaults to fully open access.
78     // 0x00000080 [7]     DBG          (1) If 1, SRAM0 can be accessed by the debugger, at...
79     // 0x00000040 [6]     DMA          (1) If 1, SRAM0 can be accessed by the DMA, at...
80     // 0x00000020 [5]     CORE1        (1) If 1, SRAM0 can be accessed by core 1, at...
81     // 0x00000010 [4]     CORE0        (1) If 1, SRAM0 can be accessed by core 0, at...
82     // 0x00000008 [3]     SP           (1) If 1, SRAM0 can be accessed from a Secure, Privileged context
83     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, SRAM0 can be accessed from a...
84     // 0x00000002 [1]     NSP          (1) If 1, SRAM0 can be accessed from a Non-secure, Privileged context
85     // 0x00000001 [0]     NSU          (1) If 1, and NSP is also set, SRAM0 can be accessed from a...
86     io_rw_32 sram[10];
87 
88     _REG_(ACCESSCTRL_DMA_OFFSET) // ACCESSCTRL_DMA
89     // Control access to DMA. Defaults to Secure access from any master.
90     // 0x00000080 [7]     DBG          (1) If 1, DMA can be accessed by the debugger, at...
91     // 0x00000040 [6]     DMA          (1) If 1, DMA can be accessed by the DMA, at...
92     // 0x00000020 [5]     CORE1        (1) If 1, DMA can be accessed by core 1, at...
93     // 0x00000010 [4]     CORE0        (1) If 1, DMA can be accessed by core 0, at...
94     // 0x00000008 [3]     SP           (1) If 1, DMA can be accessed from a Secure, Privileged context
95     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, DMA can be accessed from a...
96     // 0x00000002 [1]     NSP          (0) If 1, DMA can be accessed from a Non-secure, Privileged context
97     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, DMA can be accessed from a...
98     io_rw_32 dma;
99 
100     _REG_(ACCESSCTRL_USBCTRL_OFFSET) // ACCESSCTRL_USBCTRL
101     // Control access to USBCTRL. Defaults to Secure access from any master.
102     // 0x00000080 [7]     DBG          (1) If 1, USBCTRL can be accessed by the debugger, at...
103     // 0x00000040 [6]     DMA          (1) If 1, USBCTRL can be accessed by the DMA, at...
104     // 0x00000020 [5]     CORE1        (1) If 1, USBCTRL can be accessed by core 1, at...
105     // 0x00000010 [4]     CORE0        (1) If 1, USBCTRL can be accessed by core 0, at...
106     // 0x00000008 [3]     SP           (1) If 1, USBCTRL can be accessed from a Secure, Privileged context
107     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, USBCTRL can be accessed from a...
108     // 0x00000002 [1]     NSP          (0) If 1, USBCTRL can be accessed from a Non-secure,...
109     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, USBCTRL can be accessed from...
110     io_rw_32 usbctrl;
111 
112     // (Description copied from array index 0 register ACCESSCTRL_PIO0 applies similarly to other array indexes)
113     _REG_(ACCESSCTRL_PIO0_OFFSET) // ACCESSCTRL_PIO0
114     // Control access to PIO0. Defaults to Secure access from any master.
115     // 0x00000080 [7]     DBG          (1) If 1, PIO0 can be accessed by the debugger, at...
116     // 0x00000040 [6]     DMA          (1) If 1, PIO0 can be accessed by the DMA, at...
117     // 0x00000020 [5]     CORE1        (1) If 1, PIO0 can be accessed by core 1, at...
118     // 0x00000010 [4]     CORE0        (1) If 1, PIO0 can be accessed by core 0, at...
119     // 0x00000008 [3]     SP           (1) If 1, PIO0 can be accessed from a Secure, Privileged context
120     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, PIO0 can be accessed from a...
121     // 0x00000002 [1]     NSP          (0) If 1, PIO0 can be accessed from a Non-secure, Privileged context
122     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, PIO0 can be accessed from a...
123     io_rw_32 pio[3];
124 
125     _REG_(ACCESSCTRL_CORESIGHT_TRACE_OFFSET) // ACCESSCTRL_CORESIGHT_TRACE
126     // Control access to CORESIGHT_TRACE. Defaults to Secure, Privileged processor or debug access only.
127     // 0x00000080 [7]     DBG          (1) If 1, CORESIGHT_TRACE can be accessed by the debugger,...
128     // 0x00000040 [6]     DMA          (0) If 1, CORESIGHT_TRACE can be accessed by the DMA, at...
129     // 0x00000020 [5]     CORE1        (1) If 1, CORESIGHT_TRACE can be accessed by core 1, at...
130     // 0x00000010 [4]     CORE0        (1) If 1, CORESIGHT_TRACE can be accessed by core 0, at...
131     // 0x00000008 [3]     SP           (1) If 1, CORESIGHT_TRACE can be accessed from a Secure,...
132     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, CORESIGHT_TRACE can be...
133     // 0x00000002 [1]     NSP          (0) If 1, CORESIGHT_TRACE can be accessed from a Non-secure,...
134     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, CORESIGHT_TRACE can be...
135     io_rw_32 coresight_trace;
136 
137     _REG_(ACCESSCTRL_CORESIGHT_PERIPH_OFFSET) // ACCESSCTRL_CORESIGHT_PERIPH
138     // Control access to CORESIGHT_PERIPH. Defaults to Secure, Privileged processor or debug access only.
139     // 0x00000080 [7]     DBG          (1) If 1, CORESIGHT_PERIPH can be accessed by the debugger,...
140     // 0x00000040 [6]     DMA          (0) If 1, CORESIGHT_PERIPH can be accessed by the DMA, at...
141     // 0x00000020 [5]     CORE1        (1) If 1, CORESIGHT_PERIPH can be accessed by core 1, at...
142     // 0x00000010 [4]     CORE0        (1) If 1, CORESIGHT_PERIPH can be accessed by core 0, at...
143     // 0x00000008 [3]     SP           (1) If 1, CORESIGHT_PERIPH can be accessed from a Secure,...
144     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, CORESIGHT_PERIPH can be...
145     // 0x00000002 [1]     NSP          (0) If 1, CORESIGHT_PERIPH can be accessed from a...
146     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, CORESIGHT_PERIPH can be...
147     io_rw_32 coresight_periph;
148 
149     _REG_(ACCESSCTRL_SYSINFO_OFFSET) // ACCESSCTRL_SYSINFO
150     // Control access to SYSINFO. Defaults to fully open access.
151     // 0x00000080 [7]     DBG          (1) If 1, SYSINFO can be accessed by the debugger, at...
152     // 0x00000040 [6]     DMA          (1) If 1, SYSINFO can be accessed by the DMA, at...
153     // 0x00000020 [5]     CORE1        (1) If 1, SYSINFO can be accessed by core 1, at...
154     // 0x00000010 [4]     CORE0        (1) If 1, SYSINFO can be accessed by core 0, at...
155     // 0x00000008 [3]     SP           (1) If 1, SYSINFO can be accessed from a Secure, Privileged context
156     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, SYSINFO can be accessed from a...
157     // 0x00000002 [1]     NSP          (1) If 1, SYSINFO can be accessed from a Non-secure,...
158     // 0x00000001 [0]     NSU          (1) If 1, and NSP is also set, SYSINFO can be accessed from...
159     io_rw_32 sysinfo;
160 
161     _REG_(ACCESSCTRL_RESETS_OFFSET) // ACCESSCTRL_RESETS
162     // Control access to RESETS. Defaults to Secure access from any master.
163     // 0x00000080 [7]     DBG          (1) If 1, RESETS can be accessed by the debugger, at...
164     // 0x00000040 [6]     DMA          (1) If 1, RESETS can be accessed by the DMA, at...
165     // 0x00000020 [5]     CORE1        (1) If 1, RESETS can be accessed by core 1, at...
166     // 0x00000010 [4]     CORE0        (1) If 1, RESETS can be accessed by core 0, at...
167     // 0x00000008 [3]     SP           (1) If 1, RESETS can be accessed from a Secure, Privileged context
168     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, RESETS can be accessed from a...
169     // 0x00000002 [1]     NSP          (0) If 1, RESETS can be accessed from a Non-secure,...
170     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, RESETS can be accessed from a...
171     io_rw_32 resets;
172 
173     // (Description copied from array index 0 register ACCESSCTRL_IO_BANK0 applies similarly to other array indexes)
174     _REG_(ACCESSCTRL_IO_BANK0_OFFSET) // ACCESSCTRL_IO_BANK0
175     // Control access to IO_BANK0. Defaults to Secure access from any master.
176     // 0x00000080 [7]     DBG          (1) If 1, IO_BANK0 can be accessed by the debugger, at...
177     // 0x00000040 [6]     DMA          (1) If 1, IO_BANK0 can be accessed by the DMA, at...
178     // 0x00000020 [5]     CORE1        (1) If 1, IO_BANK0 can be accessed by core 1, at...
179     // 0x00000010 [4]     CORE0        (1) If 1, IO_BANK0 can be accessed by core 0, at...
180     // 0x00000008 [3]     SP           (1) If 1, IO_BANK0 can be accessed from a Secure, Privileged context
181     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, IO_BANK0 can be accessed from...
182     // 0x00000002 [1]     NSP          (0) If 1, IO_BANK0 can be accessed from a Non-secure,...
183     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, IO_BANK0 can be accessed from...
184     io_rw_32 io_bank[2];
185 
186     _REG_(ACCESSCTRL_PADS_BANK0_OFFSET) // ACCESSCTRL_PADS_BANK0
187     // Control access to PADS_BANK0. Defaults to Secure access from any master.
188     // 0x00000080 [7]     DBG          (1) If 1, PADS_BANK0 can be accessed by the debugger, at...
189     // 0x00000040 [6]     DMA          (1) If 1, PADS_BANK0 can be accessed by the DMA, at...
190     // 0x00000020 [5]     CORE1        (1) If 1, PADS_BANK0 can be accessed by core 1, at...
191     // 0x00000010 [4]     CORE0        (1) If 1, PADS_BANK0 can be accessed by core 0, at...
192     // 0x00000008 [3]     SP           (1) If 1, PADS_BANK0 can be accessed from a Secure,...
193     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, PADS_BANK0 can be accessed...
194     // 0x00000002 [1]     NSP          (0) If 1, PADS_BANK0 can be accessed from a Non-secure,...
195     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, PADS_BANK0 can be accessed...
196     io_rw_32 pads_bank0;
197 
198     _REG_(ACCESSCTRL_PADS_QSPI_OFFSET) // ACCESSCTRL_PADS_QSPI
199     // Control access to PADS_QSPI. Defaults to Secure access from any master.
200     // 0x00000080 [7]     DBG          (1) If 1, PADS_QSPI can be accessed by the debugger, at...
201     // 0x00000040 [6]     DMA          (1) If 1, PADS_QSPI can be accessed by the DMA, at...
202     // 0x00000020 [5]     CORE1        (1) If 1, PADS_QSPI can be accessed by core 1, at...
203     // 0x00000010 [4]     CORE0        (1) If 1, PADS_QSPI can be accessed by core 0, at...
204     // 0x00000008 [3]     SP           (1) If 1, PADS_QSPI can be accessed from a Secure, Privileged context
205     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, PADS_QSPI can be accessed from...
206     // 0x00000002 [1]     NSP          (0) If 1, PADS_QSPI can be accessed from a Non-secure,...
207     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, PADS_QSPI can be accessed...
208     io_rw_32 pads_qspi;
209 
210     _REG_(ACCESSCTRL_BUSCTRL_OFFSET) // ACCESSCTRL_BUSCTRL
211     // Control access to BUSCTRL. Defaults to Secure access from any master.
212     // 0x00000080 [7]     DBG          (1) If 1, BUSCTRL can be accessed by the debugger, at...
213     // 0x00000040 [6]     DMA          (1) If 1, BUSCTRL can be accessed by the DMA, at...
214     // 0x00000020 [5]     CORE1        (1) If 1, BUSCTRL can be accessed by core 1, at...
215     // 0x00000010 [4]     CORE0        (1) If 1, BUSCTRL can be accessed by core 0, at...
216     // 0x00000008 [3]     SP           (1) If 1, BUSCTRL can be accessed from a Secure, Privileged context
217     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, BUSCTRL can be accessed from a...
218     // 0x00000002 [1]     NSP          (0) If 1, BUSCTRL can be accessed from a Non-secure,...
219     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, BUSCTRL can be accessed from...
220     io_rw_32 busctrl;
221 
222     _REG_(ACCESSCTRL_ADC0_OFFSET) // ACCESSCTRL_ADC0
223     // Control access to ADC0. Defaults to Secure access from any master.
224     // 0x00000080 [7]     DBG          (1) If 1, ADC0 can be accessed by the debugger, at...
225     // 0x00000040 [6]     DMA          (1) If 1, ADC0 can be accessed by the DMA, at...
226     // 0x00000020 [5]     CORE1        (1) If 1, ADC0 can be accessed by core 1, at...
227     // 0x00000010 [4]     CORE0        (1) If 1, ADC0 can be accessed by core 0, at...
228     // 0x00000008 [3]     SP           (1) If 1, ADC0 can be accessed from a Secure, Privileged context
229     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, ADC0 can be accessed from a...
230     // 0x00000002 [1]     NSP          (0) If 1, ADC0 can be accessed from a Non-secure, Privileged context
231     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, ADC0 can be accessed from a...
232     io_rw_32 adc0;
233 
234     _REG_(ACCESSCTRL_HSTX_OFFSET) // ACCESSCTRL_HSTX
235     // Control access to HSTX. Defaults to Secure access from any master.
236     // 0x00000080 [7]     DBG          (1) If 1, HSTX can be accessed by the debugger, at...
237     // 0x00000040 [6]     DMA          (1) If 1, HSTX can be accessed by the DMA, at...
238     // 0x00000020 [5]     CORE1        (1) If 1, HSTX can be accessed by core 1, at...
239     // 0x00000010 [4]     CORE0        (1) If 1, HSTX can be accessed by core 0, at...
240     // 0x00000008 [3]     SP           (1) If 1, HSTX can be accessed from a Secure, Privileged context
241     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, HSTX can be accessed from a...
242     // 0x00000002 [1]     NSP          (0) If 1, HSTX can be accessed from a Non-secure, Privileged context
243     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, HSTX can be accessed from a...
244     io_rw_32 hstx;
245 
246     // (Description copied from array index 0 register ACCESSCTRL_I2C0 applies similarly to other array indexes)
247     _REG_(ACCESSCTRL_I2C0_OFFSET) // ACCESSCTRL_I2C0
248     // Control access to I2C0. Defaults to Secure access from any master.
249     // 0x00000080 [7]     DBG          (1) If 1, I2C0 can be accessed by the debugger, at...
250     // 0x00000040 [6]     DMA          (1) If 1, I2C0 can be accessed by the DMA, at...
251     // 0x00000020 [5]     CORE1        (1) If 1, I2C0 can be accessed by core 1, at...
252     // 0x00000010 [4]     CORE0        (1) If 1, I2C0 can be accessed by core 0, at...
253     // 0x00000008 [3]     SP           (1) If 1, I2C0 can be accessed from a Secure, Privileged context
254     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, I2C0 can be accessed from a...
255     // 0x00000002 [1]     NSP          (0) If 1, I2C0 can be accessed from a Non-secure, Privileged context
256     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, I2C0 can be accessed from a...
257     io_rw_32 i2c[2];
258 
259     _REG_(ACCESSCTRL_PWM_OFFSET) // ACCESSCTRL_PWM
260     // Control access to PWM. Defaults to Secure access from any master.
261     // 0x00000080 [7]     DBG          (1) If 1, PWM can be accessed by the debugger, at...
262     // 0x00000040 [6]     DMA          (1) If 1, PWM can be accessed by the DMA, at...
263     // 0x00000020 [5]     CORE1        (1) If 1, PWM can be accessed by core 1, at...
264     // 0x00000010 [4]     CORE0        (1) If 1, PWM can be accessed by core 0, at...
265     // 0x00000008 [3]     SP           (1) If 1, PWM can be accessed from a Secure, Privileged context
266     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, PWM can be accessed from a...
267     // 0x00000002 [1]     NSP          (0) If 1, PWM can be accessed from a Non-secure, Privileged context
268     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, PWM can be accessed from a...
269     io_rw_32 pwm;
270 
271     // (Description copied from array index 0 register ACCESSCTRL_SPI0 applies similarly to other array indexes)
272     _REG_(ACCESSCTRL_SPI0_OFFSET) // ACCESSCTRL_SPI0
273     // Control access to SPI0. Defaults to Secure access from any master.
274     // 0x00000080 [7]     DBG          (1) If 1, SPI0 can be accessed by the debugger, at...
275     // 0x00000040 [6]     DMA          (1) If 1, SPI0 can be accessed by the DMA, at...
276     // 0x00000020 [5]     CORE1        (1) If 1, SPI0 can be accessed by core 1, at...
277     // 0x00000010 [4]     CORE0        (1) If 1, SPI0 can be accessed by core 0, at...
278     // 0x00000008 [3]     SP           (1) If 1, SPI0 can be accessed from a Secure, Privileged context
279     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, SPI0 can be accessed from a...
280     // 0x00000002 [1]     NSP          (0) If 1, SPI0 can be accessed from a Non-secure, Privileged context
281     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, SPI0 can be accessed from a...
282     io_rw_32 spi[2];
283 
284     // (Description copied from array index 0 register ACCESSCTRL_TIMER0 applies similarly to other array indexes)
285     _REG_(ACCESSCTRL_TIMER0_OFFSET) // ACCESSCTRL_TIMER0
286     // Control access to TIMER0. Defaults to Secure access from any master.
287     // 0x00000080 [7]     DBG          (1) If 1, TIMER0 can be accessed by the debugger, at...
288     // 0x00000040 [6]     DMA          (1) If 1, TIMER0 can be accessed by the DMA, at...
289     // 0x00000020 [5]     CORE1        (1) If 1, TIMER0 can be accessed by core 1, at...
290     // 0x00000010 [4]     CORE0        (1) If 1, TIMER0 can be accessed by core 0, at...
291     // 0x00000008 [3]     SP           (1) If 1, TIMER0 can be accessed from a Secure, Privileged context
292     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, TIMER0 can be accessed from a...
293     // 0x00000002 [1]     NSP          (0) If 1, TIMER0 can be accessed from a Non-secure,...
294     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, TIMER0 can be accessed from a...
295     io_rw_32 timer[2];
296 
297     // (Description copied from array index 0 register ACCESSCTRL_UART0 applies similarly to other array indexes)
298     _REG_(ACCESSCTRL_UART0_OFFSET) // ACCESSCTRL_UART0
299     // Control access to UART0. Defaults to Secure access from any master.
300     // 0x00000080 [7]     DBG          (1) If 1, UART0 can be accessed by the debugger, at...
301     // 0x00000040 [6]     DMA          (1) If 1, UART0 can be accessed by the DMA, at...
302     // 0x00000020 [5]     CORE1        (1) If 1, UART0 can be accessed by core 1, at...
303     // 0x00000010 [4]     CORE0        (1) If 1, UART0 can be accessed by core 0, at...
304     // 0x00000008 [3]     SP           (1) If 1, UART0 can be accessed from a Secure, Privileged context
305     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, UART0 can be accessed from a...
306     // 0x00000002 [1]     NSP          (0) If 1, UART0 can be accessed from a Non-secure, Privileged context
307     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, UART0 can be accessed from a...
308     io_rw_32 uart[2];
309 
310     _REG_(ACCESSCTRL_OTP_OFFSET) // ACCESSCTRL_OTP
311     // Control access to OTP. Defaults to Secure access from any master.
312     // 0x00000080 [7]     DBG          (1) If 1, OTP can be accessed by the debugger, at...
313     // 0x00000040 [6]     DMA          (1) If 1, OTP can be accessed by the DMA, at...
314     // 0x00000020 [5]     CORE1        (1) If 1, OTP can be accessed by core 1, at...
315     // 0x00000010 [4]     CORE0        (1) If 1, OTP can be accessed by core 0, at...
316     // 0x00000008 [3]     SP           (1) If 1, OTP can be accessed from a Secure, Privileged context
317     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, OTP can be accessed from a...
318     // 0x00000002 [1]     NSP          (0) If 1, OTP can be accessed from a Non-secure, Privileged context
319     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, OTP can be accessed from a...
320     io_rw_32 otp;
321 
322     _REG_(ACCESSCTRL_TBMAN_OFFSET) // ACCESSCTRL_TBMAN
323     // Control access to TBMAN. Defaults to Secure access from any master.
324     // 0x00000080 [7]     DBG          (1) If 1, TBMAN can be accessed by the debugger, at...
325     // 0x00000040 [6]     DMA          (1) If 1, TBMAN can be accessed by the DMA, at...
326     // 0x00000020 [5]     CORE1        (1) If 1, TBMAN can be accessed by core 1, at...
327     // 0x00000010 [4]     CORE0        (1) If 1, TBMAN can be accessed by core 0, at...
328     // 0x00000008 [3]     SP           (1) If 1, TBMAN can be accessed from a Secure, Privileged context
329     // 0x00000004 [2]     SU           (1) If 1, and SP is also set, TBMAN can be accessed from a...
330     // 0x00000002 [1]     NSP          (0) If 1, TBMAN can be accessed from a Non-secure, Privileged context
331     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, TBMAN can be accessed from a...
332     io_rw_32 tbman;
333 
334     _REG_(ACCESSCTRL_POWMAN_OFFSET) // ACCESSCTRL_POWMAN
335     // Control access to POWMAN. Defaults to Secure, Privileged processor or debug access only.
336     // 0x00000080 [7]     DBG          (1) If 1, POWMAN can be accessed by the debugger, at...
337     // 0x00000040 [6]     DMA          (0) If 1, POWMAN can be accessed by the DMA, at...
338     // 0x00000020 [5]     CORE1        (1) If 1, POWMAN can be accessed by core 1, at...
339     // 0x00000010 [4]     CORE0        (1) If 1, POWMAN can be accessed by core 0, at...
340     // 0x00000008 [3]     SP           (1) If 1, POWMAN can be accessed from a Secure, Privileged context
341     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, POWMAN can be accessed from a...
342     // 0x00000002 [1]     NSP          (0) If 1, POWMAN can be accessed from a Non-secure,...
343     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, POWMAN can be accessed from a...
344     io_rw_32 powman;
345 
346     _REG_(ACCESSCTRL_TRNG_OFFSET) // ACCESSCTRL_TRNG
347     // Control access to TRNG. Defaults to Secure, Privileged processor or debug access only.
348     // 0x00000080 [7]     DBG          (1) If 1, TRNG can be accessed by the debugger, at...
349     // 0x00000040 [6]     DMA          (0) If 1, TRNG can be accessed by the DMA, at...
350     // 0x00000020 [5]     CORE1        (1) If 1, TRNG can be accessed by core 1, at...
351     // 0x00000010 [4]     CORE0        (1) If 1, TRNG can be accessed by core 0, at...
352     // 0x00000008 [3]     SP           (1) If 1, TRNG can be accessed from a Secure, Privileged context
353     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, TRNG can be accessed from a...
354     // 0x00000002 [1]     NSP          (0) If 1, TRNG can be accessed from a Non-secure, Privileged context
355     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, TRNG can be accessed from a...
356     io_rw_32 trng;
357 
358     _REG_(ACCESSCTRL_SHA256_OFFSET) // ACCESSCTRL_SHA256
359     // Control access to SHA256. Defaults to Secure, Privileged access only.
360     // 0x00000080 [7]     DBG          (1) If 1, SHA256 can be accessed by the debugger, at...
361     // 0x00000040 [6]     DMA          (1) If 1, SHA256 can be accessed by the DMA, at...
362     // 0x00000020 [5]     CORE1        (1) If 1, SHA256 can be accessed by core 1, at...
363     // 0x00000010 [4]     CORE0        (1) If 1, SHA256 can be accessed by core 0, at...
364     // 0x00000008 [3]     SP           (1) If 1, SHA256 can be accessed from a Secure, Privileged context
365     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, SHA256 can be accessed from a...
366     // 0x00000002 [1]     NSP          (0) If 1, SHA256 can be accessed from a Non-secure,...
367     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, SHA256 can be accessed from a...
368     io_rw_32 sha256;
369 
370     _REG_(ACCESSCTRL_SYSCFG_OFFSET) // ACCESSCTRL_SYSCFG
371     // Control access to SYSCFG. Defaults to Secure, Privileged processor or debug access only.
372     // 0x00000080 [7]     DBG          (1) If 1, SYSCFG can be accessed by the debugger, at...
373     // 0x00000040 [6]     DMA          (0) If 1, SYSCFG can be accessed by the DMA, at...
374     // 0x00000020 [5]     CORE1        (1) If 1, SYSCFG can be accessed by core 1, at...
375     // 0x00000010 [4]     CORE0        (1) If 1, SYSCFG can be accessed by core 0, at...
376     // 0x00000008 [3]     SP           (1) If 1, SYSCFG can be accessed from a Secure, Privileged context
377     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, SYSCFG can be accessed from a...
378     // 0x00000002 [1]     NSP          (0) If 1, SYSCFG can be accessed from a Non-secure,...
379     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, SYSCFG can be accessed from a...
380     io_rw_32 syscfg;
381 
382     _REG_(ACCESSCTRL_CLOCKS_OFFSET) // ACCESSCTRL_CLOCKS
383     // Control access to CLOCKS. Defaults to Secure, Privileged processor or debug access only.
384     // 0x00000080 [7]     DBG          (1) If 1, CLOCKS can be accessed by the debugger, at...
385     // 0x00000040 [6]     DMA          (0) If 1, CLOCKS can be accessed by the DMA, at...
386     // 0x00000020 [5]     CORE1        (1) If 1, CLOCKS can be accessed by core 1, at...
387     // 0x00000010 [4]     CORE0        (1) If 1, CLOCKS can be accessed by core 0, at...
388     // 0x00000008 [3]     SP           (1) If 1, CLOCKS can be accessed from a Secure, Privileged context
389     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, CLOCKS can be accessed from a...
390     // 0x00000002 [1]     NSP          (0) If 1, CLOCKS can be accessed from a Non-secure,...
391     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, CLOCKS can be accessed from a...
392     io_rw_32 clocks;
393 
394     _REG_(ACCESSCTRL_XOSC_OFFSET) // ACCESSCTRL_XOSC
395     // Control access to XOSC. Defaults to Secure, Privileged processor or debug access only.
396     // 0x00000080 [7]     DBG          (1) If 1, XOSC can be accessed by the debugger, at...
397     // 0x00000040 [6]     DMA          (0) If 1, XOSC can be accessed by the DMA, at...
398     // 0x00000020 [5]     CORE1        (1) If 1, XOSC can be accessed by core 1, at...
399     // 0x00000010 [4]     CORE0        (1) If 1, XOSC can be accessed by core 0, at...
400     // 0x00000008 [3]     SP           (1) If 1, XOSC can be accessed from a Secure, Privileged context
401     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, XOSC can be accessed from a...
402     // 0x00000002 [1]     NSP          (0) If 1, XOSC can be accessed from a Non-secure, Privileged context
403     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, XOSC can be accessed from a...
404     io_rw_32 xosc;
405 
406     _REG_(ACCESSCTRL_ROSC_OFFSET) // ACCESSCTRL_ROSC
407     // Control access to ROSC. Defaults to Secure, Privileged processor or debug access only.
408     // 0x00000080 [7]     DBG          (1) If 1, ROSC can be accessed by the debugger, at...
409     // 0x00000040 [6]     DMA          (0) If 1, ROSC can be accessed by the DMA, at...
410     // 0x00000020 [5]     CORE1        (1) If 1, ROSC can be accessed by core 1, at...
411     // 0x00000010 [4]     CORE0        (1) If 1, ROSC can be accessed by core 0, at...
412     // 0x00000008 [3]     SP           (1) If 1, ROSC can be accessed from a Secure, Privileged context
413     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, ROSC can be accessed from a...
414     // 0x00000002 [1]     NSP          (0) If 1, ROSC can be accessed from a Non-secure, Privileged context
415     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, ROSC can be accessed from a...
416     io_rw_32 rosc;
417 
418     _REG_(ACCESSCTRL_PLL_SYS_OFFSET) // ACCESSCTRL_PLL_SYS
419     // Control access to PLL_SYS. Defaults to Secure, Privileged processor or debug access only.
420     // 0x00000080 [7]     DBG          (1) If 1, PLL_SYS can be accessed by the debugger, at...
421     // 0x00000040 [6]     DMA          (0) If 1, PLL_SYS can be accessed by the DMA, at...
422     // 0x00000020 [5]     CORE1        (1) If 1, PLL_SYS can be accessed by core 1, at...
423     // 0x00000010 [4]     CORE0        (1) If 1, PLL_SYS can be accessed by core 0, at...
424     // 0x00000008 [3]     SP           (1) If 1, PLL_SYS can be accessed from a Secure, Privileged context
425     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, PLL_SYS can be accessed from a...
426     // 0x00000002 [1]     NSP          (0) If 1, PLL_SYS can be accessed from a Non-secure,...
427     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, PLL_SYS can be accessed from...
428     io_rw_32 pll_sys;
429 
430     _REG_(ACCESSCTRL_PLL_USB_OFFSET) // ACCESSCTRL_PLL_USB
431     // Control access to PLL_USB. Defaults to Secure, Privileged processor or debug access only.
432     // 0x00000080 [7]     DBG          (1) If 1, PLL_USB can be accessed by the debugger, at...
433     // 0x00000040 [6]     DMA          (0) If 1, PLL_USB can be accessed by the DMA, at...
434     // 0x00000020 [5]     CORE1        (1) If 1, PLL_USB can be accessed by core 1, at...
435     // 0x00000010 [4]     CORE0        (1) If 1, PLL_USB can be accessed by core 0, at...
436     // 0x00000008 [3]     SP           (1) If 1, PLL_USB can be accessed from a Secure, Privileged context
437     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, PLL_USB can be accessed from a...
438     // 0x00000002 [1]     NSP          (0) If 1, PLL_USB can be accessed from a Non-secure,...
439     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, PLL_USB can be accessed from...
440     io_rw_32 pll_usb;
441 
442     _REG_(ACCESSCTRL_TICKS_OFFSET) // ACCESSCTRL_TICKS
443     // Control access to TICKS. Defaults to Secure, Privileged processor or debug access only.
444     // 0x00000080 [7]     DBG          (1) If 1, TICKS can be accessed by the debugger, at...
445     // 0x00000040 [6]     DMA          (0) If 1, TICKS can be accessed by the DMA, at...
446     // 0x00000020 [5]     CORE1        (1) If 1, TICKS can be accessed by core 1, at...
447     // 0x00000010 [4]     CORE0        (1) If 1, TICKS can be accessed by core 0, at...
448     // 0x00000008 [3]     SP           (1) If 1, TICKS can be accessed from a Secure, Privileged context
449     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, TICKS can be accessed from a...
450     // 0x00000002 [1]     NSP          (0) If 1, TICKS can be accessed from a Non-secure, Privileged context
451     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, TICKS can be accessed from a...
452     io_rw_32 ticks;
453 
454     _REG_(ACCESSCTRL_WATCHDOG_OFFSET) // ACCESSCTRL_WATCHDOG
455     // Control access to WATCHDOG. Defaults to Secure, Privileged processor or debug access only.
456     // 0x00000080 [7]     DBG          (1) If 1, WATCHDOG can be accessed by the debugger, at...
457     // 0x00000040 [6]     DMA          (0) If 1, WATCHDOG can be accessed by the DMA, at...
458     // 0x00000020 [5]     CORE1        (1) If 1, WATCHDOG can be accessed by core 1, at...
459     // 0x00000010 [4]     CORE0        (1) If 1, WATCHDOG can be accessed by core 0, at...
460     // 0x00000008 [3]     SP           (1) If 1, WATCHDOG can be accessed from a Secure, Privileged context
461     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, WATCHDOG can be accessed from...
462     // 0x00000002 [1]     NSP          (0) If 1, WATCHDOG can be accessed from a Non-secure,...
463     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, WATCHDOG can be accessed from...
464     io_rw_32 watchdog;
465 
466     _REG_(ACCESSCTRL_RSM_OFFSET) // ACCESSCTRL_RSM
467     // Control access to RSM. Defaults to Secure, Privileged processor or debug access only.
468     // 0x00000080 [7]     DBG          (1) If 1, RSM can be accessed by the debugger, at...
469     // 0x00000040 [6]     DMA          (0) If 1, RSM can be accessed by the DMA, at...
470     // 0x00000020 [5]     CORE1        (1) If 1, RSM can be accessed by core 1, at...
471     // 0x00000010 [4]     CORE0        (1) If 1, RSM can be accessed by core 0, at...
472     // 0x00000008 [3]     SP           (1) If 1, RSM can be accessed from a Secure, Privileged context
473     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, RSM can be accessed from a...
474     // 0x00000002 [1]     NSP          (0) If 1, RSM can be accessed from a Non-secure, Privileged context
475     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, RSM can be accessed from a...
476     io_rw_32 rsm;
477 
478     _REG_(ACCESSCTRL_XIP_CTRL_OFFSET) // ACCESSCTRL_XIP_CTRL
479     // Control access to XIP_CTRL. Defaults to Secure, Privileged processor or debug access only.
480     // 0x00000080 [7]     DBG          (1) If 1, XIP_CTRL can be accessed by the debugger, at...
481     // 0x00000040 [6]     DMA          (0) If 1, XIP_CTRL can be accessed by the DMA, at...
482     // 0x00000020 [5]     CORE1        (1) If 1, XIP_CTRL can be accessed by core 1, at...
483     // 0x00000010 [4]     CORE0        (1) If 1, XIP_CTRL can be accessed by core 0, at...
484     // 0x00000008 [3]     SP           (1) If 1, XIP_CTRL can be accessed from a Secure, Privileged context
485     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, XIP_CTRL can be accessed from...
486     // 0x00000002 [1]     NSP          (0) If 1, XIP_CTRL can be accessed from a Non-secure,...
487     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, XIP_CTRL can be accessed from...
488     io_rw_32 xip_ctrl;
489 
490     _REG_(ACCESSCTRL_XIP_QMI_OFFSET) // ACCESSCTRL_XIP_QMI
491     // Control access to XIP_QMI. Defaults to Secure, Privileged processor or debug access only.
492     // 0x00000080 [7]     DBG          (1) If 1, XIP_QMI can be accessed by the debugger, at...
493     // 0x00000040 [6]     DMA          (0) If 1, XIP_QMI can be accessed by the DMA, at...
494     // 0x00000020 [5]     CORE1        (1) If 1, XIP_QMI can be accessed by core 1, at...
495     // 0x00000010 [4]     CORE0        (1) If 1, XIP_QMI can be accessed by core 0, at...
496     // 0x00000008 [3]     SP           (1) If 1, XIP_QMI can be accessed from a Secure, Privileged context
497     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, XIP_QMI can be accessed from a...
498     // 0x00000002 [1]     NSP          (0) If 1, XIP_QMI can be accessed from a Non-secure,...
499     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, XIP_QMI can be accessed from...
500     io_rw_32 xip_qmi;
501 
502     _REG_(ACCESSCTRL_XIP_AUX_OFFSET) // ACCESSCTRL_XIP_AUX
503     // Control access to XIP_AUX. Defaults to Secure, Privileged access only.
504     // 0x00000080 [7]     DBG          (1) If 1, XIP_AUX can be accessed by the debugger, at...
505     // 0x00000040 [6]     DMA          (1) If 1, XIP_AUX can be accessed by the DMA, at...
506     // 0x00000020 [5]     CORE1        (1) If 1, XIP_AUX can be accessed by core 1, at...
507     // 0x00000010 [4]     CORE0        (1) If 1, XIP_AUX can be accessed by core 0, at...
508     // 0x00000008 [3]     SP           (1) If 1, XIP_AUX can be accessed from a Secure, Privileged context
509     // 0x00000004 [2]     SU           (0) If 1, and SP is also set, XIP_AUX can be accessed from a...
510     // 0x00000002 [1]     NSP          (0) If 1, XIP_AUX can be accessed from a Non-secure,...
511     // 0x00000001 [0]     NSU          (0) If 1, and NSP is also set, XIP_AUX can be accessed from...
512     io_rw_32 xip_aux;
513 } accessctrl_hw_t;
514 
515 #define accessctrl_hw ((accessctrl_hw_t *)ACCESSCTRL_BASE)
516 static_assert(sizeof (accessctrl_hw_t) == 0x00ec, "");
517 
518 #endif // _HARDWARE_STRUCTS_ACCESSCTRL_H
519 
520