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 NRF54H20_FLPR_H
36 #define NRF54H20_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_0_IRQn                         = 0,        /*!< 0 VPRCLIC_0                                                          */
54   VPRCLIC_1_IRQn                         = 1,        /*!< 1 VPRCLIC_1                                                          */
55   VPRCLIC_2_IRQn                         = 2,        /*!< 2 VPRCLIC_2                                                          */
56   VPRCLIC_3_IRQn                         = 3,        /*!< 3 VPRCLIC_3                                                          */
57   VPRCLIC_4_IRQn                         = 4,        /*!< 4 VPRCLIC_4                                                          */
58   VPRCLIC_5_IRQn                         = 5,        /*!< 5 VPRCLIC_5                                                          */
59   VPRCLIC_6_IRQn                         = 6,        /*!< 6 VPRCLIC_6                                                          */
60   VPRCLIC_7_IRQn                         = 7,        /*!< 7 VPRCLIC_7                                                          */
61   VPRCLIC_8_IRQn                         = 8,        /*!< 8 VPRCLIC_8                                                          */
62   VPRCLIC_9_IRQn                         = 9,        /*!< 9 VPRCLIC_9                                                          */
63   VPRCLIC_10_IRQn                        = 10,       /*!< 10 VPRCLIC_10                                                        */
64   VPRCLIC_11_IRQn                        = 11,       /*!< 11 VPRCLIC_11                                                        */
65   VPRCLIC_12_IRQn                        = 12,       /*!< 12 VPRCLIC_12                                                        */
66   VPRCLIC_13_IRQn                        = 13,       /*!< 13 VPRCLIC_13                                                        */
67   VPRCLIC_14_IRQn                        = 14,       /*!< 14 VPRCLIC_14                                                        */
68   VPRCLIC_15_IRQn                        = 15,       /*!< 15 VPRCLIC_15                                                        */
69   VPRCLIC_16_IRQn                        = 16,       /*!< 16 VPRCLIC_16                                                        */
70   VPRCLIC_17_IRQn                        = 17,       /*!< 17 VPRCLIC_17                                                        */
71   VPRCLIC_18_IRQn                        = 18,       /*!< 18 VPRCLIC_18                                                        */
72   VPRCLIC_19_IRQn                        = 19,       /*!< 19 VPRCLIC_19                                                        */
73   VPRCLIC_20_IRQn                        = 20,       /*!< 20 VPRCLIC_20                                                        */
74   VPRCLIC_21_IRQn                        = 21,       /*!< 21 VPRCLIC_21                                                        */
75   VPRCLIC_22_IRQn                        = 22,       /*!< 22 VPRCLIC_22                                                        */
76   VPRCLIC_23_IRQn                        = 23,       /*!< 23 VPRCLIC_23                                                        */
77   VPRCLIC_24_IRQn                        = 24,       /*!< 24 VPRCLIC_24                                                        */
78   VPRCLIC_25_IRQn                        = 25,       /*!< 25 VPRCLIC_25                                                        */
79   VPRCLIC_26_IRQn                        = 26,       /*!< 26 VPRCLIC_26                                                        */
80   VPRCLIC_27_IRQn                        = 27,       /*!< 27 VPRCLIC_27                                                        */
81   VPRCLIC_28_IRQn                        = 28,       /*!< 28 VPRCLIC_28                                                        */
82   VPRCLIC_29_IRQn                        = 29,       /*!< 29 VPRCLIC_29                                                        */
83   VPRCLIC_30_IRQn                        = 30,       /*!< 30 VPRCLIC_30                                                        */
84   VPRCLIC_31_IRQn                        = 31,       /*!< 31 VPRCLIC_31                                                        */
85   VPRTIM_IRQn                            = 32,       /*!< 32 VPRTIM                                                            */
86   GPIOTE130_0_IRQn                       = 104,      /*!< 104 GPIOTE130_0                                                      */
87   GPIOTE130_1_IRQn                       = 105,      /*!< 105 GPIOTE130_1                                                      */
88   GRTC_0_IRQn                            = 108,      /*!< 108 GRTC_0                                                           */
89   GRTC_1_IRQn                            = 109,      /*!< 109 GRTC_1                                                           */
90   GRTC_2_IRQn                            = 110,      /*!< 110 GRTC_2                                                           */
91   TBM_IRQn                               = 127,      /*!< 127 TBM                                                              */
92   USBHS_IRQn                             = 134,      /*!< 134 USBHS                                                            */
93   EXMIF_IRQn                             = 149,      /*!< 149 EXMIF                                                            */
94   IPCT120_0_IRQn                         = 209,      /*!< 209 IPCT120_0                                                        */
95   I3C120_IRQn                            = 211,      /*!< 211 I3C120                                                           */
96   VPR121_IRQn                            = 212,      /*!< 212 VPR121                                                           */
97   CAN120_IRQn                            = 216,      /*!< 216 CAN120                                                           */
98   MVDMA120_IRQn                          = 217,      /*!< 217 MVDMA120                                                         */
99   I3C121_IRQn                            = 222,      /*!< 222 I3C121                                                           */
100   TIMER120_IRQn                          = 226,      /*!< 226 TIMER120                                                         */
101   TIMER121_IRQn                          = 227,      /*!< 227 TIMER121                                                         */
102   PWM120_IRQn                            = 228,      /*!< 228 PWM120                                                           */
103   SPIS120_IRQn                           = 229,      /*!< 229 SPIS120                                                          */
104   SPIM120_UARTE120_IRQn                  = 230,      /*!< 230 SPIM120_UARTE120                                                 */
105   SPIM121_IRQn                           = 231,      /*!< 231 SPIM121                                                          */
106   VPR130_IRQn                            = 264,      /*!< 264 VPR130                                                           */
107   IPCT130_0_IRQn                         = 289,      /*!< 289 IPCT130_0                                                        */
108   RTC130_IRQn                            = 296,      /*!< 296 RTC130                                                           */
109   RTC131_IRQn                            = 297,      /*!< 297 RTC131                                                           */
110   WDT131_IRQn                            = 299,      /*!< 299 WDT131                                                           */
111   WDT132_IRQn                            = 300,      /*!< 300 WDT132                                                           */
112   EGU130_IRQn                            = 301,      /*!< 301 EGU130                                                           */
113   SAADC_IRQn                             = 386,      /*!< 386 SAADC                                                            */
114   COMP_LPCOMP_IRQn                       = 387,      /*!< 387 COMP_LPCOMP                                                      */
115   TEMP_IRQn                              = 388,      /*!< 388 TEMP                                                             */
116   NFCT_IRQn                              = 389,      /*!< 389 NFCT                                                             */
117   TDM130_IRQn                            = 402,      /*!< 402 TDM130                                                           */
118   PDM_IRQn                               = 403,      /*!< 403 PDM                                                              */
119   QDEC130_IRQn                           = 404,      /*!< 404 QDEC130                                                          */
120   QDEC131_IRQn                           = 405,      /*!< 405 QDEC131                                                          */
121   TDM131_IRQn                            = 407,      /*!< 407 TDM131                                                           */
122   TIMER130_IRQn                          = 418,      /*!< 418 TIMER130                                                         */
123   TIMER131_IRQn                          = 419,      /*!< 419 TIMER131                                                         */
124   PWM130_IRQn                            = 420,      /*!< 420 PWM130                                                           */
125   SERIAL0_IRQn                           = 421,      /*!< 421 SERIAL0                                                          */
126   SERIAL1_IRQn                           = 422,      /*!< 422 SERIAL1                                                          */
127   TIMER132_IRQn                          = 434,      /*!< 434 TIMER132                                                         */
128   TIMER133_IRQn                          = 435,      /*!< 435 TIMER133                                                         */
129   PWM131_IRQn                            = 436,      /*!< 436 PWM131                                                           */
130   SERIAL2_IRQn                           = 437,      /*!< 437 SERIAL2                                                          */
131   SERIAL3_IRQn                           = 438,      /*!< 438 SERIAL3                                                          */
132   TIMER134_IRQn                          = 450,      /*!< 450 TIMER134                                                         */
133   TIMER135_IRQn                          = 451,      /*!< 451 TIMER135                                                         */
134   PWM132_IRQn                            = 452,      /*!< 452 PWM132                                                           */
135   SERIAL4_IRQn                           = 453,      /*!< 453 SERIAL4                                                          */
136   SERIAL5_IRQn                           = 454,      /*!< 454 SERIAL5                                                          */
137   TIMER136_IRQn                          = 466,      /*!< 466 TIMER136                                                         */
138   TIMER137_IRQn                          = 467,      /*!< 467 TIMER137                                                         */
139   PWM133_IRQn                            = 468,      /*!< 468 PWM133                                                           */
140   SERIAL6_IRQn                           = 469,      /*!< 469 SERIAL6                                                          */
141   SERIAL7_IRQn                           = 470,      /*!< 470 SERIAL7                                                          */
142 } IRQn_Type;
143 
144 /* ==================================================== Interrupt Aliases ==================================================== */
145 #define SPIM120_IRQn                  SPIM120_UARTE120_IRQn
146 #define SPIM120_IRQHandler            SPIM120_UARTE120_IRQHandler
147 #define UARTE120_IRQn                 SPIM120_UARTE120_IRQn
148 #define UARTE120_IRQHandler           SPIM120_UARTE120_IRQHandler
149 #define COMP_IRQn                     COMP_LPCOMP_IRQn
150 #define COMP_IRQHandler               COMP_LPCOMP_IRQHandler
151 #define LPCOMP_IRQn                   COMP_LPCOMP_IRQn
152 #define LPCOMP_IRQHandler             COMP_LPCOMP_IRQHandler
153 #define SPIM130_IRQn                  SERIAL0_IRQn
154 #define SPIM130_IRQHandler            SERIAL0_IRQHandler
155 #define SPIS130_IRQn                  SERIAL0_IRQn
156 #define SPIS130_IRQHandler            SERIAL0_IRQHandler
157 #define TWIM130_IRQn                  SERIAL0_IRQn
158 #define TWIM130_IRQHandler            SERIAL0_IRQHandler
159 #define TWIS130_IRQn                  SERIAL0_IRQn
160 #define TWIS130_IRQHandler            SERIAL0_IRQHandler
161 #define UARTE130_IRQn                 SERIAL0_IRQn
162 #define UARTE130_IRQHandler           SERIAL0_IRQHandler
163 #define SPIM131_IRQn                  SERIAL1_IRQn
164 #define SPIM131_IRQHandler            SERIAL1_IRQHandler
165 #define SPIS131_IRQn                  SERIAL1_IRQn
166 #define SPIS131_IRQHandler            SERIAL1_IRQHandler
167 #define TWIM131_IRQn                  SERIAL1_IRQn
168 #define TWIM131_IRQHandler            SERIAL1_IRQHandler
169 #define TWIS131_IRQn                  SERIAL1_IRQn
170 #define TWIS131_IRQHandler            SERIAL1_IRQHandler
171 #define UARTE131_IRQn                 SERIAL1_IRQn
172 #define UARTE131_IRQHandler           SERIAL1_IRQHandler
173 #define SPIM132_IRQn                  SERIAL2_IRQn
174 #define SPIM132_IRQHandler            SERIAL2_IRQHandler
175 #define SPIS132_IRQn                  SERIAL2_IRQn
176 #define SPIS132_IRQHandler            SERIAL2_IRQHandler
177 #define TWIM132_IRQn                  SERIAL2_IRQn
178 #define TWIM132_IRQHandler            SERIAL2_IRQHandler
179 #define TWIS132_IRQn                  SERIAL2_IRQn
180 #define TWIS132_IRQHandler            SERIAL2_IRQHandler
181 #define UARTE132_IRQn                 SERIAL2_IRQn
182 #define UARTE132_IRQHandler           SERIAL2_IRQHandler
183 #define SPIM133_IRQn                  SERIAL3_IRQn
184 #define SPIM133_IRQHandler            SERIAL3_IRQHandler
185 #define SPIS133_IRQn                  SERIAL3_IRQn
186 #define SPIS133_IRQHandler            SERIAL3_IRQHandler
187 #define TWIM133_IRQn                  SERIAL3_IRQn
188 #define TWIM133_IRQHandler            SERIAL3_IRQHandler
189 #define TWIS133_IRQn                  SERIAL3_IRQn
190 #define TWIS133_IRQHandler            SERIAL3_IRQHandler
191 #define UARTE133_IRQn                 SERIAL3_IRQn
192 #define UARTE133_IRQHandler           SERIAL3_IRQHandler
193 #define SPIM134_IRQn                  SERIAL4_IRQn
194 #define SPIM134_IRQHandler            SERIAL4_IRQHandler
195 #define SPIS134_IRQn                  SERIAL4_IRQn
196 #define SPIS134_IRQHandler            SERIAL4_IRQHandler
197 #define TWIM134_IRQn                  SERIAL4_IRQn
198 #define TWIM134_IRQHandler            SERIAL4_IRQHandler
199 #define TWIS134_IRQn                  SERIAL4_IRQn
200 #define TWIS134_IRQHandler            SERIAL4_IRQHandler
201 #define UARTE134_IRQn                 SERIAL4_IRQn
202 #define UARTE134_IRQHandler           SERIAL4_IRQHandler
203 #define SPIM135_IRQn                  SERIAL5_IRQn
204 #define SPIM135_IRQHandler            SERIAL5_IRQHandler
205 #define SPIS135_IRQn                  SERIAL5_IRQn
206 #define SPIS135_IRQHandler            SERIAL5_IRQHandler
207 #define TWIM135_IRQn                  SERIAL5_IRQn
208 #define TWIM135_IRQHandler            SERIAL5_IRQHandler
209 #define TWIS135_IRQn                  SERIAL5_IRQn
210 #define TWIS135_IRQHandler            SERIAL5_IRQHandler
211 #define UARTE135_IRQn                 SERIAL5_IRQn
212 #define UARTE135_IRQHandler           SERIAL5_IRQHandler
213 #define SPIM136_IRQn                  SERIAL6_IRQn
214 #define SPIM136_IRQHandler            SERIAL6_IRQHandler
215 #define SPIS136_IRQn                  SERIAL6_IRQn
216 #define SPIS136_IRQHandler            SERIAL6_IRQHandler
217 #define TWIM136_IRQn                  SERIAL6_IRQn
218 #define TWIM136_IRQHandler            SERIAL6_IRQHandler
219 #define TWIS136_IRQn                  SERIAL6_IRQn
220 #define TWIS136_IRQHandler            SERIAL6_IRQHandler
221 #define UARTE136_IRQn                 SERIAL6_IRQn
222 #define UARTE136_IRQHandler           SERIAL6_IRQHandler
223 #define SPIM137_IRQn                  SERIAL7_IRQn
224 #define SPIM137_IRQHandler            SERIAL7_IRQHandler
225 #define SPIS137_IRQn                  SERIAL7_IRQn
226 #define SPIS137_IRQHandler            SERIAL7_IRQHandler
227 #define TWIM137_IRQn                  SERIAL7_IRQn
228 #define TWIM137_IRQHandler            SERIAL7_IRQHandler
229 #define TWIS137_IRQn                  SERIAL7_IRQn
230 #define TWIS137_IRQHandler            SERIAL7_IRQHandler
231 #define UARTE137_IRQn                 SERIAL7_IRQn
232 #define UARTE137_IRQHandler           SERIAL7_IRQHandler
233 
234 /* =========================================================================================================================== */
235 /* ================                           Processor and Core Peripheral Section                           ================ */
236 /* =========================================================================================================================== */
237 
238 /* ====================== Configuration of the Nordic Semiconductor VPR Processor and Core Peripherals ======================= */
239 #define __VPR_REV                    1.1             /*!< VPR Core Revision                                                    */
240 #define __VPR_REV_MAJOR                1             /*!< VPR Core Major Revision                                              */
241 #define __VPR_REV_MINOR                1             /*!< VPR Core Minor Revision                                              */
242 #define __VPR_REV_PATCH                0             /*!< VPR Core Patch Revision                                              */
243 #define __DSP_PRESENT                  0             /*!< DSP present or not                                                   */
244 #define __CLIC_PRIO_BITS               3             /*!< Number of Bits used for Priority Levels                              */
245 #define __MTVT_PRESENT                 1             /*!< CPU supports alternate Vector Table address                          */
246 #define __MPU_PRESENT                  1             /*!< MPU present                                                          */
247 #define __FPU_PRESENT                  0             /*!< FPU present                                                          */
248 #define __FPU_DP                       0             /*!< Double Precision FPU                                                 */
249 #define __INTERRUPTS_MAX             480             /*!< Size of interrupt vector table                                       */
250 
251 #define NRF_VPR               NRF_VPR121             /*!< VPR instance name                                                    */
252 #include "core_vpr.h"                                /*!< Nordic Semiconductor VPR processor and core peripherals              */
253 #include "system_nrf.h"                              /*!< nrf54h20_flpr System Library                                         */
254 
255 #endif                                               /*!< NRF_FLPR                                                             */
256 
257 
258 #ifdef NRF_FLPR
259 
260   #define NRF_DOMAIN                    NRF_DOMAIN_GLOBALFAST
261   #define NRF_PROCESSOR                 NRF_PROCESSOR_FLPR
262   #ifndef NRF_OWNER
263     #define NRF_OWNER                   NRF_OWNER_APPLICATION
264   #endif
265 
266 #endif                                               /*!< NRF_FLPR                                                             */
267 
268 
269 /* ========================================= Start of section using anonymous unions ========================================= */
270 
271 #include "compiler_abstraction.h"
272 
273 #if defined (__CC_ARM)
274   #pragma push
275   #pragma anon_unions
276 #elif defined (__ICCARM__)
277   #pragma language=extended
278 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
279   #pragma clang diagnostic push
280   #pragma clang diagnostic ignored "-Wc11-extensions"
281   #pragma clang diagnostic ignored "-Wreserved-id-macro"
282   #pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
283   #pragma clang diagnostic ignored "-Wnested-anon-types"
284 #elif defined (__GNUC__)
285   /* anonymous unions are enabled by default */
286 #elif defined (__TMS470__)
287   /* anonymous unions are enabled by default */
288 #elif defined (__TASKING__)
289   #pragma warning 586
290 #elif defined (__CSMC__)
291   /* anonymous unions are enabled by default */
292 #else
293   #warning Unsupported compiler type
294 #endif
295 
296 /* =========================================================================================================================== */
297 /* ================                                  Peripheral Address Map                                  ================ */
298 /* =========================================================================================================================== */
299 
300 #define NRF_FLPR_VPRCLIC_BASE             0xF0000000UL
301 
302 /* =========================================================================================================================== */
303 /* ================                                  Peripheral Declaration                                  ================ */
304 /* =========================================================================================================================== */
305 
306 #define NRF_FLPR_VPRCLIC                  ((NRF_CLIC_Type*)                     NRF_FLPR_VPRCLIC_BASE)
307 
308 /* =========================================================================================================================== */
309 /* ================                                  Local Domain Remapping                                  ================ */
310 /* =========================================================================================================================== */
311 
312 #ifdef NRF_FLPR                                      /*!< Remap NRF_DOMAIN_X instances to NRF_X symbol for ease of use.        */
313   #define NRF_VPRCLIC                             NRF_FLPR_VPRCLIC
314 #endif                                               /*!< NRF_FLPR                                                             */
315 
316 /* ========================================== End of section using anonymous unions ========================================== */
317 
318 #if defined (__CC_ARM)
319   #pragma pop
320 #elif defined (__ICCARM__)
321   /* leave anonymous unions enabled */
322 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
323   #pragma clang diagnostic pop
324 #elif defined (__GNUC__)
325   /* anonymous unions are enabled by default */
326 #elif defined (__TMS470__)
327   /* anonymous unions are enabled by default */
328 #elif defined (__TASKING__)
329   #pragma warning restore
330 #elif defined (__CSMC__)
331   /* anonymous unions are enabled by default */
332 #endif
333 
334 
335 #ifdef __cplusplus
336 }
337 #endif
338 #endif /* NRF54H20_FLPR_H */
339 
340