1 /*
2 
3 Copyright (c) 2010 - 2025, Nordic Semiconductor ASA All rights reserved.
4 
5 SPDX-License-Identifier: BSD-3-Clause
6 
7 Redistribution and use in source and binary forms, with or without
8 modification, are permitted provided that the following conditions are met:
9 
10 1. Redistributions of source code must retain the above copyright notice, this
11    list of conditions and the following disclaimer.
12 
13 2. Redistributions in binary form must reproduce the above copyright
14    notice, this list of conditions and the following disclaimer in the
15    documentation and/or other materials provided with the distribution.
16 
17 3. Neither the name of Nordic Semiconductor ASA nor the names of its
18    contributors may be used to endorse or promote products derived from this
19    software without specific prior written permission.
20 
21 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 IMPLIED WARRANTIES OF MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE
24 ARE DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
25 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 POSSIBILITY OF SUCH DAMAGE.
32 
33 */
34 
35 #ifndef NRF7120_ENGA_FLPR_H
36 #define NRF7120_ENGA_FLPR_H
37 
38 #ifdef __cplusplus
39     extern "C" {
40 #endif
41 
42 
43 #ifdef NRF_FLPR                                      /*!< Processor information is domain local.                               */
44 
45 
46 /* =========================================================================================================================== */
47 /* ================                                Interrupt Number Definition                                ================ */
48 /* =========================================================================================================================== */
49 
50 typedef enum {
51 /* ===================================================== Core Interrupts ===================================================== */
52 /* ============================================== Processor Specific Interrupts ============================================== */
53   VPRCLIC_16_IRQn                        = 16,       /*!< 16 VPRCLIC_16                                                        */
54   VPRCLIC_17_IRQn                        = 17,       /*!< 17 VPRCLIC_17                                                        */
55   VPRCLIC_18_IRQn                        = 18,       /*!< 18 VPRCLIC_18                                                        */
56   VPRCLIC_19_IRQn                        = 19,       /*!< 19 VPRCLIC_19                                                        */
57   VPRCLIC_20_IRQn                        = 20,       /*!< 20 VPRCLIC_20                                                        */
58   VPRCLIC_21_IRQn                        = 21,       /*!< 21 VPRCLIC_21                                                        */
59   VPRCLIC_22_IRQn                        = 22,       /*!< 22 VPRCLIC_22                                                        */
60   SPU00_IRQn                             = 64,       /*!< 64 SPU00                                                             */
61   MPC00_IRQn                             = 65,       /*!< 65 MPC00                                                             */
62   AAR00_CCM00_IRQn                       = 74,       /*!< 74 AAR00_CCM00                                                       */
63   ECB00_IRQn                             = 75,       /*!< 75 ECB00                                                             */
64   VPR00_IRQn                             = 76,       /*!< 76 VPR00                                                             */
65   SERIAL00_IRQn                          = 77,       /*!< 77 SERIAL00                                                          */
66   MRAMC_IRQn                             = 78,       /*!< 78 MRAMC                                                             */
67   CTRLAP_IRQn                            = 82,       /*!< 82 CTRLAP                                                            */
68   CM33SS_IRQn                            = 84,       /*!< 84 CM33SS                                                            */
69   TIMER00_IRQn                           = 85,       /*!< 85 TIMER00                                                           */
70   EGU00_IRQn                             = 88,       /*!< 88 EGU00                                                             */
71   CRACEN_IRQn                            = 89,       /*!< 89 CRACEN                                                            */
72   USBHS_IRQn                             = 90,       /*!< 90 USBHS                                                             */
73   QSPI00_IRQn                            = 91,       /*!< 91 QSPI00                                                            */
74   QSPI01_IRQn                            = 92,       /*!< 92 QSPI01                                                            */
75   SERIAL01_IRQn                          = 93,       /*!< 93 SERIAL01                                                          */
76   SPU10_IRQn                             = 128,      /*!< 128 SPU10                                                            */
77   TIMER10_IRQn                           = 133,      /*!< 133 TIMER10                                                          */
78   EGU10_IRQn                             = 135,      /*!< 135 EGU10                                                            */
79   RADIO_0_IRQn                           = 138,      /*!< 138 RADIO_0                                                          */
80   RADIO_1_IRQn                           = 139,      /*!< 139 RADIO_1                                                          */
81   IPCT10_0_IRQn                          = 141,      /*!< 141 IPCT10_0                                                         */
82   IPCT10_1_IRQn                          = 142,      /*!< 142 IPCT10_1                                                         */
83   IPCT10_2_IRQn                          = 143,      /*!< 143 IPCT10_2                                                         */
84   IPCT10_3_IRQn                          = 144,      /*!< 144 IPCT10_3                                                         */
85   SPU20_IRQn                             = 192,      /*!< 192 SPU20                                                            */
86   SERIAL20_IRQn                          = 198,      /*!< 198 SERIAL20                                                         */
87   SERIAL21_IRQn                          = 199,      /*!< 199 SERIAL21                                                         */
88   SERIAL22_IRQn                          = 200,      /*!< 200 SERIAL22                                                         */
89   EGU20_IRQn                             = 201,      /*!< 201 EGU20                                                            */
90   TIMER20_IRQn                           = 202,      /*!< 202 TIMER20                                                          */
91   TIMER21_IRQn                           = 203,      /*!< 203 TIMER21                                                          */
92   TIMER22_IRQn                           = 204,      /*!< 204 TIMER22                                                          */
93   TIMER23_IRQn                           = 205,      /*!< 205 TIMER23                                                          */
94   TIMER24_IRQn                           = 206,      /*!< 206 TIMER24                                                          */
95   PDM20_IRQn                             = 208,      /*!< 208 PDM20                                                            */
96   PDM21_IRQn                             = 209,      /*!< 209 PDM21                                                            */
97   PWM20_IRQn                             = 210,      /*!< 210 PWM20                                                            */
98   PWM21_IRQn                             = 211,      /*!< 211 PWM21                                                            */
99   PWM22_IRQn                             = 212,      /*!< 212 PWM22                                                            */
100   SAADC_IRQn                             = 213,      /*!< 213 SAADC                                                            */
101   NFCT_IRQn                              = 214,      /*!< 214 NFCT                                                             */
102   TEMP_IRQn                              = 215,      /*!< 215 TEMP                                                             */
103   GPIOTE20_0_IRQn                        = 218,      /*!< 218 GPIOTE20_0                                                       */
104   GPIOTE20_1_IRQn                        = 219,      /*!< 219 GPIOTE20_1                                                       */
105   QDEC20_IRQn                            = 224,      /*!< 224 QDEC20                                                           */
106   QDEC21_IRQn                            = 225,      /*!< 225 QDEC21                                                           */
107   GRTC_0_IRQn                            = 226,      /*!< 226 GRTC_0                                                           */
108   GRTC_1_IRQn                            = 227,      /*!< 227 GRTC_1                                                           */
109   GRTC_2_IRQn                            = 228,      /*!< 228 GRTC_2                                                           */
110   GRTC_3_IRQn                            = 229,      /*!< 229 GRTC_3                                                           */
111   GRTC_4_IRQn                            = 230,      /*!< 230 GRTC_4                                                           */
112   GRTC_5_IRQn                            = 231,      /*!< 231 GRTC_5                                                           */
113   TDM_IRQn                               = 232,      /*!< 232 TDM                                                              */
114   AUXPLL_AUXPM_IRQn                      = 235,      /*!< 235 AUXPLL_AUXPM                                                     */
115   SERIAL23_IRQn                          = 237,      /*!< 237 SERIAL23                                                         */
116   SERIAL24_IRQn                          = 238,      /*!< 238 SERIAL24                                                         */
117   TAMPC_IRQn                             = 239,      /*!< 239 TAMPC                                                            */
118   SPU30_IRQn                             = 256,      /*!< 256 SPU30                                                            */
119   SERIAL30_IRQn                          = 260,      /*!< 260 SERIAL30                                                         */
120   COMP_LPCOMP_IRQn                       = 262,      /*!< 262 COMP_LPCOMP                                                      */
121   WDT30_IRQn                             = 264,      /*!< 264 WDT30                                                            */
122   WDT31_IRQn                             = 265,      /*!< 265 WDT31                                                            */
123   GPIOTE30_0_IRQn                        = 268,      /*!< 268 GPIOTE30_0                                                       */
124   GPIOTE30_1_IRQn                        = 269,      /*!< 269 GPIOTE30_1                                                       */
125   CLOCK_POWER_IRQn                       = 270,      /*!< 270 CLOCK_POWER                                                      */
126   LFXO_IRQn                              = 290,      /*!< 290 LFXO                                                             */
127   LFRC_IRQn                              = 291,      /*!< 291 LFRC                                                             */
128   HFXO64M_IRQn                           = 292,      /*!< 292 HFXO64M                                                          */
129 } IRQn_Type;
130 
131 /* ==================================================== Interrupt Aliases ==================================================== */
132 #define AAR00_IRQn                    AAR00_CCM00_IRQn
133 #define AAR00_IRQHandler              AAR00_CCM00_IRQHandler
134 #define CCM00_IRQn                    AAR00_CCM00_IRQn
135 #define CCM00_IRQHandler              AAR00_CCM00_IRQHandler
136 #define SPIM00_IRQn                   SERIAL00_IRQn
137 #define SPIM00_IRQHandler             SERIAL00_IRQHandler
138 #define UARTE00_IRQn                  SERIAL00_IRQn
139 #define UARTE00_IRQHandler            SERIAL00_IRQHandler
140 #define CPUC_IRQn                     CM33SS_IRQn
141 #define CPUC_IRQHandler               CM33SS_IRQHandler
142 #define SPIM01_IRQn                   SERIAL01_IRQn
143 #define SPIM01_IRQHandler             SERIAL01_IRQHandler
144 #define SPIM20_IRQn                   SERIAL20_IRQn
145 #define SPIM20_IRQHandler             SERIAL20_IRQHandler
146 #define SPIS20_IRQn                   SERIAL20_IRQn
147 #define SPIS20_IRQHandler             SERIAL20_IRQHandler
148 #define TWIM20_IRQn                   SERIAL20_IRQn
149 #define TWIM20_IRQHandler             SERIAL20_IRQHandler
150 #define TWIS20_IRQn                   SERIAL20_IRQn
151 #define TWIS20_IRQHandler             SERIAL20_IRQHandler
152 #define UARTE20_IRQn                  SERIAL20_IRQn
153 #define UARTE20_IRQHandler            SERIAL20_IRQHandler
154 #define SPIM21_IRQn                   SERIAL21_IRQn
155 #define SPIM21_IRQHandler             SERIAL21_IRQHandler
156 #define SPIS21_IRQn                   SERIAL21_IRQn
157 #define SPIS21_IRQHandler             SERIAL21_IRQHandler
158 #define TWIM21_IRQn                   SERIAL21_IRQn
159 #define TWIM21_IRQHandler             SERIAL21_IRQHandler
160 #define TWIS21_IRQn                   SERIAL21_IRQn
161 #define TWIS21_IRQHandler             SERIAL21_IRQHandler
162 #define UARTE21_IRQn                  SERIAL21_IRQn
163 #define UARTE21_IRQHandler            SERIAL21_IRQHandler
164 #define SPIM22_IRQn                   SERIAL22_IRQn
165 #define SPIM22_IRQHandler             SERIAL22_IRQHandler
166 #define SPIS22_IRQn                   SERIAL22_IRQn
167 #define SPIS22_IRQHandler             SERIAL22_IRQHandler
168 #define TWIM22_IRQn                   SERIAL22_IRQn
169 #define TWIM22_IRQHandler             SERIAL22_IRQHandler
170 #define TWIS22_IRQn                   SERIAL22_IRQn
171 #define TWIS22_IRQHandler             SERIAL22_IRQHandler
172 #define UARTE22_IRQn                  SERIAL22_IRQn
173 #define UARTE22_IRQHandler            SERIAL22_IRQHandler
174 #define AUXPLL_IRQn                   AUXPLL_AUXPM_IRQn
175 #define AUXPLL_IRQHandler             AUXPLL_AUXPM_IRQHandler
176 #define AUXPM_IRQn                    AUXPLL_AUXPM_IRQn
177 #define AUXPM_IRQHandler              AUXPLL_AUXPM_IRQHandler
178 #define SPIM23_IRQn                   SERIAL23_IRQn
179 #define SPIM23_IRQHandler             SERIAL23_IRQHandler
180 #define SPIS23_IRQn                   SERIAL23_IRQn
181 #define SPIS23_IRQHandler             SERIAL23_IRQHandler
182 #define TWIM23_IRQn                   SERIAL23_IRQn
183 #define TWIM23_IRQHandler             SERIAL23_IRQHandler
184 #define TWIS23_IRQn                   SERIAL23_IRQn
185 #define TWIS23_IRQHandler             SERIAL23_IRQHandler
186 #define UARTE23_IRQn                  SERIAL23_IRQn
187 #define UARTE23_IRQHandler            SERIAL23_IRQHandler
188 #define SPIM24_IRQn                   SERIAL24_IRQn
189 #define SPIM24_IRQHandler             SERIAL24_IRQHandler
190 #define SPIS24_IRQn                   SERIAL24_IRQn
191 #define SPIS24_IRQHandler             SERIAL24_IRQHandler
192 #define TWIM24_IRQn                   SERIAL24_IRQn
193 #define TWIM24_IRQHandler             SERIAL24_IRQHandler
194 #define TWIS24_IRQn                   SERIAL24_IRQn
195 #define TWIS24_IRQHandler             SERIAL24_IRQHandler
196 #define UARTE24_IRQn                  SERIAL24_IRQn
197 #define UARTE24_IRQHandler            SERIAL24_IRQHandler
198 #define SPIM30_IRQn                   SERIAL30_IRQn
199 #define SPIM30_IRQHandler             SERIAL30_IRQHandler
200 #define SPIS30_IRQn                   SERIAL30_IRQn
201 #define SPIS30_IRQHandler             SERIAL30_IRQHandler
202 #define TWIM30_IRQn                   SERIAL30_IRQn
203 #define TWIM30_IRQHandler             SERIAL30_IRQHandler
204 #define TWIS30_IRQn                   SERIAL30_IRQn
205 #define TWIS30_IRQHandler             SERIAL30_IRQHandler
206 #define UARTE30_IRQn                  SERIAL30_IRQn
207 #define UARTE30_IRQHandler            SERIAL30_IRQHandler
208 #define COMP_IRQn                     COMP_LPCOMP_IRQn
209 #define COMP_IRQHandler               COMP_LPCOMP_IRQHandler
210 #define LPCOMP_IRQn                   COMP_LPCOMP_IRQn
211 #define LPCOMP_IRQHandler             COMP_LPCOMP_IRQHandler
212 #define CLOCK_IRQn                    CLOCK_POWER_IRQn
213 #define CLOCK_IRQHandler              CLOCK_POWER_IRQHandler
214 #define POWER_IRQn                    CLOCK_POWER_IRQn
215 #define POWER_IRQHandler              CLOCK_POWER_IRQHandler
216 
217 /* =========================================================================================================================== */
218 /* ================                           Processor and Core Peripheral Section                           ================ */
219 /* =========================================================================================================================== */
220 
221 /* ====================== Configuration of the Nordic Semiconductor VPR Processor and Core Peripherals ======================= */
222 #define __VPR_REV                  1.4.1             /*!< VPR Core Revision                                                    */
223 #define __VPR_REV_MAJOR                1             /*!< VPR Core Major Revision                                              */
224 #define __VPR_REV_MINOR                4             /*!< VPR Core Minor Revision                                              */
225 #define __VPR_REV_PATCH                1             /*!< VPR Core Patch Revision                                              */
226 #define __DSP_PRESENT                  0             /*!< DSP present or not                                                   */
227 #define __CLIC_PRIO_BITS               2             /*!< Number of Bits used for Priority Levels                              */
228 #define __MTVT_PRESENT                 1             /*!< CPU supports alternate Vector Table address                          */
229 #define __MPU_PRESENT                  1             /*!< MPU present                                                          */
230 #define __FPU_PRESENT                  0             /*!< FPU present                                                          */
231 #define __FPU_DP                       0             /*!< Double Precision FPU                                                 */
232 #define __INTERRUPTS_MAX             270             /*!< Size of interrupt vector table                                       */
233 
234 #define NRF_VPR                NRF_VPR00             /*!< VPR instance name                                                    */
235 #include "core_vpr.h"                                /*!< Nordic Semiconductor VPR processor and core peripherals              */
236 #include "system_nrf.h"                              /*!< nrf7120_enga_flpr System Library                                     */
237 
238 #endif                                               /*!< NRF_FLPR                                                             */
239 
240 
241 #ifdef NRF_FLPR
242 
243   #define NRF_DOMAIN                    NRF_DOMAIN_SYSTEM
244   #define NRF_PROCESSOR                 NRF_PROCESSOR_VPR
245 
246 #endif                                               /*!< NRF_FLPR                                                             */
247 
248 
249 /* ========================================= Start of section using anonymous unions ========================================= */
250 
251 #include "compiler_abstraction.h"
252 
253 #if defined (__CC_ARM)
254   #pragma push
255   #pragma anon_unions
256 #elif defined (__ICCARM__)
257   #pragma language=extended
258 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
259   #pragma clang diagnostic push
260   #pragma clang diagnostic ignored "-Wc11-extensions"
261   #pragma clang diagnostic ignored "-Wreserved-id-macro"
262   #pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
263   #pragma clang diagnostic ignored "-Wnested-anon-types"
264 #elif defined (__GNUC__)
265   /* anonymous unions are enabled by default */
266 #elif defined (__TMS470__)
267   /* anonymous unions are enabled by default */
268 #elif defined (__TASKING__)
269   #pragma warning 586
270 #elif defined (__CSMC__)
271   /* anonymous unions are enabled by default */
272 #else
273   #warning Unsupported compiler type
274 #endif
275 
276 /* =========================================================================================================================== */
277 /* ================                                  Peripheral Address Map                                  ================ */
278 /* =========================================================================================================================== */
279 
280 #define NRF_FLPR_VPRCLIC_NS_BASE          0xF0000000UL
281 
282 /* =========================================================================================================================== */
283 /* ================                                  Peripheral Declaration                                  ================ */
284 /* =========================================================================================================================== */
285 
286 #define NRF_FLPR_VPRCLIC_NS               ((NRF_CLIC_Type*)                     NRF_FLPR_VPRCLIC_NS_BASE)
287 
288 /* =========================================================================================================================== */
289 /* ================                                    TrustZone Remapping                                    ================ */
290 /* =========================================================================================================================== */
291 
292 #ifdef NRF_TRUSTZONE_NONSECURE                       /*!< Remap NRF_X_NS instances to NRF_X symbol for ease of use.            */
293   #define NRF_FLPR_VPRCLIC                        NRF_FLPR_VPRCLIC_NS
294 #else                                                /*!< Remap NRF_X_S instances to NRF_X symbol for ease of use.             */
295   #define NRF_FLPR_VPRCLIC                        NRF_FLPR_VPRCLIC_NS
296 #endif                                               /*!< NRF_TRUSTZONE_NONSECURE                                              */
297 
298 /* =========================================================================================================================== */
299 /* ================                                  Local Domain Remapping                                  ================ */
300 /* =========================================================================================================================== */
301 
302 #ifdef NRF_FLPR                                      /*!< Remap NRF_DOMAIN_X instances to NRF_X symbol for ease of use.        */
303   #ifdef NRF_TRUSTZONE_NONSECURE                     /*!< Remap only nonsecure instances.                                      */
304     #define NRF_VPRCLIC                           NRF_FLPR_VPRCLIC
305   #else                                              /*!< Remap all instances.                                                 */
306     #define NRF_VPRCLIC                           NRF_FLPR_VPRCLIC
307   #endif                                             /*!< NRF_TRUSTZONE_NONSECURE                                              */
308 #endif                                               /*!< NRF_FLPR                                                             */
309 
310 /* ========================================== End of section using anonymous unions ========================================== */
311 
312 #if defined (__CC_ARM)
313   #pragma pop
314 #elif defined (__ICCARM__)
315   /* leave anonymous unions enabled */
316 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
317   #pragma clang diagnostic pop
318 #elif defined (__GNUC__)
319   /* anonymous unions are enabled by default */
320 #elif defined (__TMS470__)
321   /* anonymous unions are enabled by default */
322 #elif defined (__TASKING__)
323   #pragma warning restore
324 #elif defined (__CSMC__)
325   /* anonymous unions are enabled by default */
326 #endif
327 
328 
329 #ifdef __cplusplus
330 }
331 #endif
332 #endif /* NRF7120_ENGA_FLPR_H */
333 
334