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 NRF54L09_ENGA_FLPR_H
36 #define NRF54L09_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_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   SPU00_IRQn                             = 64,       /*!< 64 SPU00                                                             */
86   MPC00_IRQn                             = 65,       /*!< 65 MPC00                                                             */
87   AAR00_CCM00_IRQn                       = 74,       /*!< 74 AAR00_CCM00                                                       */
88   ECB00_IRQn                             = 75,       /*!< 75 ECB00                                                             */
89   VPR00_IRQn                             = 76,       /*!< 76 VPR00                                                             */
90   RRAMC_IRQn                             = 78,       /*!< 78 RRAMC                                                             */
91   CTRLAP_IRQn                            = 82,       /*!< 82 CTRLAP                                                            */
92   CM33SS_IRQn                            = 84,       /*!< 84 CM33SS                                                            */
93   TIMER00_IRQn                           = 85,       /*!< 85 TIMER00                                                           */
94   EGU00_IRQn                             = 88,       /*!< 88 EGU00                                                             */
95   CRACEN_IRQn                            = 89,       /*!< 89 CRACEN                                                            */
96   SPU10_IRQn                             = 128,      /*!< 128 SPU10                                                            */
97   TIMER10_IRQn                           = 133,      /*!< 133 TIMER10                                                          */
98   EGU10_IRQn                             = 135,      /*!< 135 EGU10                                                            */
99   RADIO_0_IRQn                           = 138,      /*!< 138 RADIO_0                                                          */
100   RADIO_1_IRQn                           = 139,      /*!< 139 RADIO_1                                                          */
101   SPU20_IRQn                             = 192,      /*!< 192 SPU20                                                            */
102   SERIAL20_IRQn                          = 198,      /*!< 198 SERIAL20                                                         */
103   SERIAL21_IRQn                          = 199,      /*!< 199 SERIAL21                                                         */
104   EGU20_IRQn                             = 201,      /*!< 201 EGU20                                                            */
105   TIMER20_IRQn                           = 202,      /*!< 202 TIMER20                                                          */
106   TIMER21_IRQn                           = 203,      /*!< 203 TIMER21                                                          */
107   TIMER22_IRQn                           = 204,      /*!< 204 TIMER22                                                          */
108   TIMER23_IRQn                           = 205,      /*!< 205 TIMER23                                                          */
109   TIMER24_IRQn                           = 206,      /*!< 206 TIMER24                                                          */
110   SAADC_IRQn                             = 213,      /*!< 213 SAADC                                                            */
111   TEMP_IRQn                              = 215,      /*!< 215 TEMP                                                             */
112   GPIOTE20_0_IRQn                        = 218,      /*!< 218 GPIOTE20_0                                                       */
113   GPIOTE20_1_IRQn                        = 219,      /*!< 219 GPIOTE20_1                                                       */
114   GRTC_0_IRQn                            = 226,      /*!< 226 GRTC_0                                                           */
115   GRTC_1_IRQn                            = 227,      /*!< 227 GRTC_1                                                           */
116   GRTC_2_IRQn                            = 228,      /*!< 228 GRTC_2                                                           */
117   GRTC_3_IRQn                            = 229,      /*!< 229 GRTC_3                                                           */
118   TAMPC_IRQn                             = 239,      /*!< 239 TAMPC                                                            */
119   SPU30_IRQn                             = 256,      /*!< 256 SPU30                                                            */
120   SERIAL30_IRQn                          = 260,      /*!< 260 SERIAL30                                                         */
121   COMP_LPCOMP_IRQn                       = 262,      /*!< 262 COMP_LPCOMP                                                      */
122   WDT30_IRQn                             = 264,      /*!< 264 WDT30                                                            */
123   WDT31_IRQn                             = 265,      /*!< 265 WDT31                                                            */
124   GPIOTE30_0_IRQn                        = 268,      /*!< 268 GPIOTE30_0                                                       */
125   GPIOTE30_1_IRQn                        = 269,      /*!< 269 GPIOTE30_1                                                       */
126   CLOCK_POWER_IRQn                       = 270,      /*!< 270 CLOCK_POWER                                                      */
127 } IRQn_Type;
128 
129 /* ==================================================== Interrupt Aliases ==================================================== */
130 #define AAR00_IRQn                    AAR00_CCM00_IRQn
131 #define AAR00_IRQHandler              AAR00_CCM00_IRQHandler
132 #define CCM00_IRQn                    AAR00_CCM00_IRQn
133 #define CCM00_IRQHandler              AAR00_CCM00_IRQHandler
134 #define CPUC_IRQn                     CM33SS_IRQn
135 #define CPUC_IRQHandler               CM33SS_IRQHandler
136 #define SPIM20_IRQn                   SERIAL20_IRQn
137 #define SPIM20_IRQHandler             SERIAL20_IRQHandler
138 #define SPIS20_IRQn                   SERIAL20_IRQn
139 #define SPIS20_IRQHandler             SERIAL20_IRQHandler
140 #define TWIM20_IRQn                   SERIAL20_IRQn
141 #define TWIM20_IRQHandler             SERIAL20_IRQHandler
142 #define TWIS20_IRQn                   SERIAL20_IRQn
143 #define TWIS20_IRQHandler             SERIAL20_IRQHandler
144 #define UARTE20_IRQn                  SERIAL20_IRQn
145 #define UARTE20_IRQHandler            SERIAL20_IRQHandler
146 #define SPIM21_IRQn                   SERIAL21_IRQn
147 #define SPIM21_IRQHandler             SERIAL21_IRQHandler
148 #define SPIS21_IRQn                   SERIAL21_IRQn
149 #define SPIS21_IRQHandler             SERIAL21_IRQHandler
150 #define TWIM21_IRQn                   SERIAL21_IRQn
151 #define TWIM21_IRQHandler             SERIAL21_IRQHandler
152 #define TWIS21_IRQn                   SERIAL21_IRQn
153 #define TWIS21_IRQHandler             SERIAL21_IRQHandler
154 #define UARTE21_IRQn                  SERIAL21_IRQn
155 #define UARTE21_IRQHandler            SERIAL21_IRQHandler
156 #define SPIM30_IRQn                   SERIAL30_IRQn
157 #define SPIM30_IRQHandler             SERIAL30_IRQHandler
158 #define SPIS30_IRQn                   SERIAL30_IRQn
159 #define SPIS30_IRQHandler             SERIAL30_IRQHandler
160 #define TWIM30_IRQn                   SERIAL30_IRQn
161 #define TWIM30_IRQHandler             SERIAL30_IRQHandler
162 #define TWIS30_IRQn                   SERIAL30_IRQn
163 #define TWIS30_IRQHandler             SERIAL30_IRQHandler
164 #define UARTE30_IRQn                  SERIAL30_IRQn
165 #define UARTE30_IRQHandler            SERIAL30_IRQHandler
166 #define COMP_IRQn                     COMP_LPCOMP_IRQn
167 #define COMP_IRQHandler               COMP_LPCOMP_IRQHandler
168 #define LPCOMP_IRQn                   COMP_LPCOMP_IRQn
169 #define LPCOMP_IRQHandler             COMP_LPCOMP_IRQHandler
170 #define CLOCK_IRQn                    CLOCK_POWER_IRQn
171 #define CLOCK_IRQHandler              CLOCK_POWER_IRQHandler
172 #define POWER_IRQn                    CLOCK_POWER_IRQn
173 #define POWER_IRQHandler              CLOCK_POWER_IRQHandler
174 
175 /* =========================================================================================================================== */
176 /* ================                           Processor and Core Peripheral Section                           ================ */
177 /* =========================================================================================================================== */
178 
179 /* ====================== Configuration of the Nordic Semiconductor VPR Processor and Core Peripherals ======================= */
180 #define __VPR_REV                  1.4.1             /*!< VPR Core Revision                                                    */
181 #define __VPR_REV_MAJOR                1             /*!< VPR Core Major Revision                                              */
182 #define __VPR_REV_MINOR                4             /*!< VPR Core Minor Revision                                              */
183 #define __VPR_REV_PATCH                1             /*!< VPR Core Patch Revision                                              */
184 #define __DSP_PRESENT                  0             /*!< DSP present or not                                                   */
185 #define __CLIC_PRIO_BITS               2             /*!< Number of Bits used for Priority Levels                              */
186 #define __MTVT_PRESENT                 1             /*!< CPU supports alternate Vector Table address                          */
187 #define __MPU_PRESENT                  1             /*!< MPU present                                                          */
188 #define __FPU_PRESENT                  0             /*!< FPU present                                                          */
189 #define __FPU_DP                       0             /*!< Double Precision FPU                                                 */
190 #define __INTERRUPTS_MAX             270             /*!< Size of interrupt vector table                                       */
191 
192 #define NRF_VPR                NRF_VPR00             /*!< VPR instance name                                                    */
193 #include "core_vpr.h"                                /*!< Nordic Semiconductor VPR processor and core peripherals              */
194 #include "system_nrf.h"                              /*!< nrf54l09_enga_flpr System Library                                    */
195 
196 #endif                                               /*!< NRF_FLPR                                                             */
197 
198 
199 #ifdef NRF_FLPR
200 
201   #define NRF_DOMAIN                    NRF_DOMAIN_NONE
202   #define NRF_PROCESSOR                 NRF_PROCESSOR_VPR
203 
204 #endif                                               /*!< NRF_FLPR                                                             */
205 
206 
207 /* ========================================= Start of section using anonymous unions ========================================= */
208 
209 #include "compiler_abstraction.h"
210 
211 #if defined (__CC_ARM)
212   #pragma push
213   #pragma anon_unions
214 #elif defined (__ICCARM__)
215   #pragma language=extended
216 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
217   #pragma clang diagnostic push
218   #pragma clang diagnostic ignored "-Wc11-extensions"
219   #pragma clang diagnostic ignored "-Wreserved-id-macro"
220   #pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
221   #pragma clang diagnostic ignored "-Wnested-anon-types"
222 #elif defined (__GNUC__)
223   /* anonymous unions are enabled by default */
224 #elif defined (__TMS470__)
225   /* anonymous unions are enabled by default */
226 #elif defined (__TASKING__)
227   #pragma warning 586
228 #elif defined (__CSMC__)
229   /* anonymous unions are enabled by default */
230 #else
231   #warning Unsupported compiler type
232 #endif
233 
234 /* =========================================================================================================================== */
235 /* ================                                  Peripheral Address Map                                  ================ */
236 /* =========================================================================================================================== */
237 
238 #define NRF_FLPR_VPRCLIC_NS_BASE          0xF0000000UL
239 
240 /* =========================================================================================================================== */
241 /* ================                                  Peripheral Declaration                                  ================ */
242 /* =========================================================================================================================== */
243 
244 #define NRF_FLPR_VPRCLIC_NS               ((NRF_CLIC_Type*)                     NRF_FLPR_VPRCLIC_NS_BASE)
245 
246 /* =========================================================================================================================== */
247 /* ================                                    TrustZone Remapping                                    ================ */
248 /* =========================================================================================================================== */
249 
250 #ifdef NRF_TRUSTZONE_NONSECURE                       /*!< Remap NRF_X_NS instances to NRF_X symbol for ease of use.            */
251   #define NRF_FLPR_VPRCLIC                        NRF_FLPR_VPRCLIC_NS
252 #else                                                /*!< Remap NRF_X_S instances to NRF_X symbol for ease of use.             */
253   #define NRF_FLPR_VPRCLIC                        NRF_FLPR_VPRCLIC_NS
254 #endif                                               /*!< NRF_TRUSTZONE_NONSECURE                                              */
255 
256 /* =========================================================================================================================== */
257 /* ================                                  Local Domain Remapping                                  ================ */
258 /* =========================================================================================================================== */
259 
260 #ifdef NRF_FLPR                                      /*!< Remap NRF_DOMAIN_X instances to NRF_X symbol for ease of use.        */
261   #ifdef NRF_TRUSTZONE_NONSECURE                     /*!< Remap only nonsecure instances.                                      */
262     #define NRF_VPRCLIC                           NRF_FLPR_VPRCLIC
263   #else                                              /*!< Remap all instances.                                                 */
264     #define NRF_VPRCLIC                           NRF_FLPR_VPRCLIC
265   #endif                                             /*!< NRF_TRUSTZONE_NONSECURE                                              */
266 #endif                                               /*!< NRF_FLPR                                                             */
267 
268 /* ========================================== End of section using anonymous unions ========================================== */
269 
270 #if defined (__CC_ARM)
271   #pragma pop
272 #elif defined (__ICCARM__)
273   /* leave anonymous unions enabled */
274 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
275   #pragma clang diagnostic pop
276 #elif defined (__GNUC__)
277   /* anonymous unions are enabled by default */
278 #elif defined (__TMS470__)
279   /* anonymous unions are enabled by default */
280 #elif defined (__TASKING__)
281   #pragma warning restore
282 #elif defined (__CSMC__)
283   /* anonymous unions are enabled by default */
284 #endif
285 
286 
287 #ifdef __cplusplus
288 }
289 #endif
290 #endif /* NRF54L09_ENGA_FLPR_H */
291 
292