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 NRF54L20_ENGA_FLPR_H 36 #define NRF54L20_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 SERIAL00_IRQn = 77, /*!< 77 SERIAL00 */ 91 RRAMC_IRQn = 78, /*!< 78 RRAMC */ 92 CTRLAP_IRQn = 82, /*!< 82 CTRLAP */ 93 CM33SS_IRQn = 84, /*!< 84 CM33SS */ 94 TIMER00_IRQn = 85, /*!< 85 TIMER00 */ 95 EGU00_IRQn = 88, /*!< 88 EGU00 */ 96 CRACEN_IRQn = 89, /*!< 89 CRACEN */ 97 USBHS_IRQn = 90, /*!< 90 USBHS */ 98 SPU10_IRQn = 128, /*!< 128 SPU10 */ 99 TIMER10_IRQn = 133, /*!< 133 TIMER10 */ 100 EGU10_IRQn = 135, /*!< 135 EGU10 */ 101 RADIO_0_IRQn = 138, /*!< 138 RADIO_0 */ 102 RADIO_1_IRQn = 139, /*!< 139 RADIO_1 */ 103 SPU20_IRQn = 192, /*!< 192 SPU20 */ 104 SERIAL20_IRQn = 198, /*!< 198 SERIAL20 */ 105 SERIAL21_IRQn = 199, /*!< 199 SERIAL21 */ 106 SERIAL22_IRQn = 200, /*!< 200 SERIAL22 */ 107 EGU20_IRQn = 201, /*!< 201 EGU20 */ 108 TIMER20_IRQn = 202, /*!< 202 TIMER20 */ 109 TIMER21_IRQn = 203, /*!< 203 TIMER21 */ 110 TIMER22_IRQn = 204, /*!< 204 TIMER22 */ 111 TIMER23_IRQn = 205, /*!< 205 TIMER23 */ 112 TIMER24_IRQn = 206, /*!< 206 TIMER24 */ 113 PDM20_IRQn = 208, /*!< 208 PDM20 */ 114 PDM21_IRQn = 209, /*!< 209 PDM21 */ 115 PWM20_IRQn = 210, /*!< 210 PWM20 */ 116 PWM21_IRQn = 211, /*!< 211 PWM21 */ 117 PWM22_IRQn = 212, /*!< 212 PWM22 */ 118 SAADC_IRQn = 213, /*!< 213 SAADC */ 119 NFCT_IRQn = 214, /*!< 214 NFCT */ 120 TEMP_IRQn = 215, /*!< 215 TEMP */ 121 GPIOTE20_0_IRQn = 218, /*!< 218 GPIOTE20_0 */ 122 GPIOTE20_1_IRQn = 219, /*!< 219 GPIOTE20_1 */ 123 QDEC20_IRQn = 224, /*!< 224 QDEC20 */ 124 QDEC21_IRQn = 225, /*!< 225 QDEC21 */ 125 GRTC_0_IRQn = 226, /*!< 226 GRTC_0 */ 126 GRTC_1_IRQn = 227, /*!< 227 GRTC_1 */ 127 GRTC_2_IRQn = 228, /*!< 228 GRTC_2 */ 128 GRTC_3_IRQn = 229, /*!< 229 GRTC_3 */ 129 TDM_IRQn = 232, /*!< 232 TDM */ 130 SERIAL23_IRQn = 237, /*!< 237 SERIAL23 */ 131 SERIAL24_IRQn = 238, /*!< 238 SERIAL24 */ 132 TAMPC_IRQn = 239, /*!< 239 TAMPC */ 133 SPU30_IRQn = 256, /*!< 256 SPU30 */ 134 SERIAL30_IRQn = 260, /*!< 260 SERIAL30 */ 135 COMP_LPCOMP_IRQn = 262, /*!< 262 COMP_LPCOMP */ 136 WDT30_IRQn = 264, /*!< 264 WDT30 */ 137 WDT31_IRQn = 265, /*!< 265 WDT31 */ 138 GPIOTE30_0_IRQn = 268, /*!< 268 GPIOTE30_0 */ 139 GPIOTE30_1_IRQn = 269, /*!< 269 GPIOTE30_1 */ 140 CLOCK_POWER_IRQn = 270, /*!< 270 CLOCK_POWER */ 141 VREGUSB_IRQn = 289, /*!< 289 VREGUSB */ 142 } IRQn_Type; 143 144 /* ==================================================== Interrupt Aliases ==================================================== */ 145 #define AAR00_IRQn AAR00_CCM00_IRQn 146 #define AAR00_IRQHandler AAR00_CCM00_IRQHandler 147 #define CCM00_IRQn AAR00_CCM00_IRQn 148 #define CCM00_IRQHandler AAR00_CCM00_IRQHandler 149 #define SPIM00_IRQn SERIAL00_IRQn 150 #define SPIM00_IRQHandler SERIAL00_IRQHandler 151 #define SPIS00_IRQn SERIAL00_IRQn 152 #define SPIS00_IRQHandler SERIAL00_IRQHandler 153 #define UARTE00_IRQn SERIAL00_IRQn 154 #define UARTE00_IRQHandler SERIAL00_IRQHandler 155 #define CPUC_IRQn CM33SS_IRQn 156 #define CPUC_IRQHandler CM33SS_IRQHandler 157 #define SPIM20_IRQn SERIAL20_IRQn 158 #define SPIM20_IRQHandler SERIAL20_IRQHandler 159 #define SPIS20_IRQn SERIAL20_IRQn 160 #define SPIS20_IRQHandler SERIAL20_IRQHandler 161 #define TWIM20_IRQn SERIAL20_IRQn 162 #define TWIM20_IRQHandler SERIAL20_IRQHandler 163 #define TWIS20_IRQn SERIAL20_IRQn 164 #define TWIS20_IRQHandler SERIAL20_IRQHandler 165 #define UARTE20_IRQn SERIAL20_IRQn 166 #define UARTE20_IRQHandler SERIAL20_IRQHandler 167 #define SPIM21_IRQn SERIAL21_IRQn 168 #define SPIM21_IRQHandler SERIAL21_IRQHandler 169 #define SPIS21_IRQn SERIAL21_IRQn 170 #define SPIS21_IRQHandler SERIAL21_IRQHandler 171 #define TWIM21_IRQn SERIAL21_IRQn 172 #define TWIM21_IRQHandler SERIAL21_IRQHandler 173 #define TWIS21_IRQn SERIAL21_IRQn 174 #define TWIS21_IRQHandler SERIAL21_IRQHandler 175 #define UARTE21_IRQn SERIAL21_IRQn 176 #define UARTE21_IRQHandler SERIAL21_IRQHandler 177 #define SPIM22_IRQn SERIAL22_IRQn 178 #define SPIM22_IRQHandler SERIAL22_IRQHandler 179 #define SPIS22_IRQn SERIAL22_IRQn 180 #define SPIS22_IRQHandler SERIAL22_IRQHandler 181 #define TWIM22_IRQn SERIAL22_IRQn 182 #define TWIM22_IRQHandler SERIAL22_IRQHandler 183 #define TWIS22_IRQn SERIAL22_IRQn 184 #define TWIS22_IRQHandler SERIAL22_IRQHandler 185 #define UARTE22_IRQn SERIAL22_IRQn 186 #define UARTE22_IRQHandler SERIAL22_IRQHandler 187 #define SPIM23_IRQn SERIAL23_IRQn 188 #define SPIM23_IRQHandler SERIAL23_IRQHandler 189 #define SPIS23_IRQn SERIAL23_IRQn 190 #define SPIS23_IRQHandler SERIAL23_IRQHandler 191 #define TWIM23_IRQn SERIAL23_IRQn 192 #define TWIM23_IRQHandler SERIAL23_IRQHandler 193 #define TWIS23_IRQn SERIAL23_IRQn 194 #define TWIS23_IRQHandler SERIAL23_IRQHandler 195 #define UARTE23_IRQn SERIAL23_IRQn 196 #define UARTE23_IRQHandler SERIAL23_IRQHandler 197 #define SPIM24_IRQn SERIAL24_IRQn 198 #define SPIM24_IRQHandler SERIAL24_IRQHandler 199 #define SPIS24_IRQn SERIAL24_IRQn 200 #define SPIS24_IRQHandler SERIAL24_IRQHandler 201 #define TWIM24_IRQn SERIAL24_IRQn 202 #define TWIM24_IRQHandler SERIAL24_IRQHandler 203 #define TWIS24_IRQn SERIAL24_IRQn 204 #define TWIS24_IRQHandler SERIAL24_IRQHandler 205 #define UARTE24_IRQn SERIAL24_IRQn 206 #define UARTE24_IRQHandler SERIAL24_IRQHandler 207 #define SPIM30_IRQn SERIAL30_IRQn 208 #define SPIM30_IRQHandler SERIAL30_IRQHandler 209 #define SPIS30_IRQn SERIAL30_IRQn 210 #define SPIS30_IRQHandler SERIAL30_IRQHandler 211 #define TWIM30_IRQn SERIAL30_IRQn 212 #define TWIM30_IRQHandler SERIAL30_IRQHandler 213 #define TWIS30_IRQn SERIAL30_IRQn 214 #define TWIS30_IRQHandler SERIAL30_IRQHandler 215 #define UARTE30_IRQn SERIAL30_IRQn 216 #define UARTE30_IRQHandler SERIAL30_IRQHandler 217 #define COMP_IRQn COMP_LPCOMP_IRQn 218 #define COMP_IRQHandler COMP_LPCOMP_IRQHandler 219 #define LPCOMP_IRQn COMP_LPCOMP_IRQn 220 #define LPCOMP_IRQHandler COMP_LPCOMP_IRQHandler 221 #define CLOCK_IRQn CLOCK_POWER_IRQn 222 #define CLOCK_IRQHandler CLOCK_POWER_IRQHandler 223 #define POWER_IRQn CLOCK_POWER_IRQn 224 #define POWER_IRQHandler CLOCK_POWER_IRQHandler 225 226 /* =========================================================================================================================== */ 227 /* ================ Processor and Core Peripheral Section ================ */ 228 /* =========================================================================================================================== */ 229 230 /* ====================== Configuration of the Nordic Semiconductor VPR Processor and Core Peripherals ======================= */ 231 #define __VPR_REV 1.4.1 /*!< VPR Core Revision */ 232 #define __VPR_REV_MAJOR 1 /*!< VPR Core Major Revision */ 233 #define __VPR_REV_MINOR 4 /*!< VPR Core Minor Revision */ 234 #define __VPR_REV_PATCH 1 /*!< VPR Core Patch Revision */ 235 #define __DSP_PRESENT 0 /*!< DSP present or not */ 236 #define __CLIC_PRIO_BITS 2 /*!< Number of Bits used for Priority Levels */ 237 #define __MTVT_PRESENT 1 /*!< CPU supports alternate Vector Table address */ 238 #define __MPU_PRESENT 1 /*!< MPU present */ 239 #define __FPU_PRESENT 0 /*!< FPU present */ 240 #define __FPU_DP 0 /*!< Double Precision FPU */ 241 #define __INTERRUPTS_MAX 270 /*!< Size of interrupt vector table */ 242 243 #define NRF_VPR NRF_VPR00 /*!< VPR instance name */ 244 #include "core_vpr.h" /*!< Nordic Semiconductor VPR processor and core peripherals */ 245 #include "system_nrf.h" /*!< nrf54l20_enga_flpr System Library */ 246 247 #endif /*!< NRF_FLPR */ 248 249 250 #ifdef NRF_FLPR 251 252 #define NRF_DOMAIN NRF_DOMAIN_NONE 253 #define NRF_PROCESSOR NRF_PROCESSOR_VPR 254 255 #endif /*!< NRF_FLPR */ 256 257 258 /* ========================================= Start of section using anonymous unions ========================================= */ 259 260 #include "compiler_abstraction.h" 261 262 #if defined (__CC_ARM) 263 #pragma push 264 #pragma anon_unions 265 #elif defined (__ICCARM__) 266 #pragma language=extended 267 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 268 #pragma clang diagnostic push 269 #pragma clang diagnostic ignored "-Wc11-extensions" 270 #pragma clang diagnostic ignored "-Wreserved-id-macro" 271 #pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 272 #pragma clang diagnostic ignored "-Wnested-anon-types" 273 #elif defined (__GNUC__) 274 /* anonymous unions are enabled by default */ 275 #elif defined (__TMS470__) 276 /* anonymous unions are enabled by default */ 277 #elif defined (__TASKING__) 278 #pragma warning 586 279 #elif defined (__CSMC__) 280 /* anonymous unions are enabled by default */ 281 #else 282 #warning Unsupported compiler type 283 #endif 284 285 /* =========================================================================================================================== */ 286 /* ================ Peripheral Address Map ================ */ 287 /* =========================================================================================================================== */ 288 289 #define NRF_FLPR_VPRCLIC_NS_BASE 0xF0000000UL 290 291 /* =========================================================================================================================== */ 292 /* ================ Peripheral Declaration ================ */ 293 /* =========================================================================================================================== */ 294 295 #define NRF_FLPR_VPRCLIC_NS ((NRF_CLIC_Type*) NRF_FLPR_VPRCLIC_NS_BASE) 296 297 /* =========================================================================================================================== */ 298 /* ================ TrustZone Remapping ================ */ 299 /* =========================================================================================================================== */ 300 301 #ifdef NRF_TRUSTZONE_NONSECURE /*!< Remap NRF_X_NS instances to NRF_X symbol for ease of use. */ 302 #define NRF_FLPR_VPRCLIC NRF_FLPR_VPRCLIC_NS 303 #else /*!< Remap NRF_X_S instances to NRF_X symbol for ease of use. */ 304 #define NRF_FLPR_VPRCLIC NRF_FLPR_VPRCLIC_NS 305 #endif /*!< NRF_TRUSTZONE_NONSECURE */ 306 307 /* =========================================================================================================================== */ 308 /* ================ Local Domain Remapping ================ */ 309 /* =========================================================================================================================== */ 310 311 #ifdef NRF_FLPR /*!< Remap NRF_DOMAIN_X instances to NRF_X symbol for ease of use. */ 312 #ifdef NRF_TRUSTZONE_NONSECURE /*!< Remap only nonsecure instances. */ 313 #define NRF_VPRCLIC NRF_FLPR_VPRCLIC 314 #else /*!< Remap all instances. */ 315 #define NRF_VPRCLIC NRF_FLPR_VPRCLIC 316 #endif /*!< NRF_TRUSTZONE_NONSECURE */ 317 #endif /*!< NRF_FLPR */ 318 319 /* ========================================== End of section using anonymous unions ========================================== */ 320 321 #if defined (__CC_ARM) 322 #pragma pop 323 #elif defined (__ICCARM__) 324 /* leave anonymous unions enabled */ 325 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 326 #pragma clang diagnostic pop 327 #elif defined (__GNUC__) 328 /* anonymous unions are enabled by default */ 329 #elif defined (__TMS470__) 330 /* anonymous unions are enabled by default */ 331 #elif defined (__TASKING__) 332 #pragma warning restore 333 #elif defined (__CSMC__) 334 /* anonymous unions are enabled by default */ 335 #endif 336 337 338 #ifdef __cplusplus 339 } 340 #endif 341 #endif /* NRF54L20_ENGA_FLPR_H */ 342 343