1 /* 2 3 Copyright (c) 2010 - 2024, 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_ENGA_FLPR_H 36 #define NRF54H20_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 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 TBM_IRQn = 127, /*!< 127 TBM */ 91 USBHS_IRQn = 134, /*!< 134 USBHS */ 92 EXMIF_IRQn = 149, /*!< 149 EXMIF */ 93 IPCT120_0_IRQn = 209, /*!< 209 IPCT120_0 */ 94 I3C120_IRQn = 211, /*!< 211 I3C120 */ 95 VPR121_IRQn = 212, /*!< 212 VPR121 */ 96 CAN_IRQn = 216, /*!< 216 CAN */ 97 I3C121_IRQn = 222, /*!< 222 I3C121 */ 98 TIMER120_IRQn = 226, /*!< 226 TIMER120 */ 99 TIMER121_IRQn = 227, /*!< 227 TIMER121 */ 100 PWM120_IRQn = 228, /*!< 228 PWM120 */ 101 SPIS120_UARTE120_IRQn = 229, /*!< 229 SPIS120_UARTE120 */ 102 SPIM120_IRQn = 230, /*!< 230 SPIM120 */ 103 SPIM121_IRQn = 231, /*!< 231 SPIM121 */ 104 VPR130_IRQn = 264, /*!< 264 VPR130 */ 105 IPCT130_0_IRQn = 289, /*!< 289 IPCT130_0 */ 106 RTC130_IRQn = 296, /*!< 296 RTC130 */ 107 RTC131_IRQn = 297, /*!< 297 RTC131 */ 108 WDT131_IRQn = 299, /*!< 299 WDT131 */ 109 WDT132_IRQn = 300, /*!< 300 WDT132 */ 110 SAADC_IRQn = 386, /*!< 386 SAADC */ 111 COMP_LPCOMP_IRQn = 387, /*!< 387 COMP_LPCOMP */ 112 TEMP_IRQn = 388, /*!< 388 TEMP */ 113 NFCT_IRQn = 389, /*!< 389 NFCT */ 114 I2S130_IRQn = 402, /*!< 402 I2S130 */ 115 PDM_IRQn = 403, /*!< 403 PDM */ 116 QDEC130_IRQn = 404, /*!< 404 QDEC130 */ 117 QDEC131_IRQn = 405, /*!< 405 QDEC131 */ 118 I2S131_IRQn = 407, /*!< 407 I2S131 */ 119 TIMER130_IRQn = 418, /*!< 418 TIMER130 */ 120 TIMER131_IRQn = 419, /*!< 419 TIMER131 */ 121 PWM130_IRQn = 420, /*!< 420 PWM130 */ 122 SERIAL0_IRQn = 421, /*!< 421 SERIAL0 */ 123 SERIAL1_IRQn = 422, /*!< 422 SERIAL1 */ 124 TIMER132_IRQn = 434, /*!< 434 TIMER132 */ 125 TIMER133_IRQn = 435, /*!< 435 TIMER133 */ 126 PWM131_IRQn = 436, /*!< 436 PWM131 */ 127 SERIAL2_IRQn = 437, /*!< 437 SERIAL2 */ 128 SERIAL3_IRQn = 438, /*!< 438 SERIAL3 */ 129 TIMER134_IRQn = 450, /*!< 450 TIMER134 */ 130 TIMER135_IRQn = 451, /*!< 451 TIMER135 */ 131 PWM132_IRQn = 452, /*!< 452 PWM132 */ 132 SERIAL4_IRQn = 453, /*!< 453 SERIAL4 */ 133 SERIAL5_IRQn = 454, /*!< 454 SERIAL5 */ 134 TIMER136_IRQn = 466, /*!< 466 TIMER136 */ 135 TIMER137_IRQn = 467, /*!< 467 TIMER137 */ 136 PWM133_IRQn = 468, /*!< 468 PWM133 */ 137 SERIAL6_IRQn = 469, /*!< 469 SERIAL6 */ 138 SERIAL7_IRQn = 470, /*!< 470 SERIAL7 */ 139 } IRQn_Type; 140 141 /* ==================================================== Interrupt Aliases ==================================================== */ 142 #define SPIS120_IRQn SPIS120_UARTE120_IRQn 143 #define SPIS120_IRQHandler SPIS120_UARTE120_IRQHandler 144 #define UARTE120_IRQn SPIS120_UARTE120_IRQn 145 #define UARTE120_IRQHandler SPIS120_UARTE120_IRQHandler 146 #define COMP_IRQn COMP_LPCOMP_IRQn 147 #define COMP_IRQHandler COMP_LPCOMP_IRQHandler 148 #define LPCOMP_IRQn COMP_LPCOMP_IRQn 149 #define LPCOMP_IRQHandler COMP_LPCOMP_IRQHandler 150 #define SPIM130_IRQn SERIAL0_IRQn 151 #define SPIM130_IRQHandler SERIAL0_IRQHandler 152 #define SPIS130_IRQn SERIAL0_IRQn 153 #define SPIS130_IRQHandler SERIAL0_IRQHandler 154 #define TWIM130_IRQn SERIAL0_IRQn 155 #define TWIM130_IRQHandler SERIAL0_IRQHandler 156 #define TWIS130_IRQn SERIAL0_IRQn 157 #define TWIS130_IRQHandler SERIAL0_IRQHandler 158 #define UARTE130_IRQn SERIAL0_IRQn 159 #define UARTE130_IRQHandler SERIAL0_IRQHandler 160 #define SPIM131_IRQn SERIAL1_IRQn 161 #define SPIM131_IRQHandler SERIAL1_IRQHandler 162 #define SPIS131_IRQn SERIAL1_IRQn 163 #define SPIS131_IRQHandler SERIAL1_IRQHandler 164 #define TWIM131_IRQn SERIAL1_IRQn 165 #define TWIM131_IRQHandler SERIAL1_IRQHandler 166 #define TWIS131_IRQn SERIAL1_IRQn 167 #define TWIS131_IRQHandler SERIAL1_IRQHandler 168 #define UARTE131_IRQn SERIAL1_IRQn 169 #define UARTE131_IRQHandler SERIAL1_IRQHandler 170 #define SPIM132_IRQn SERIAL2_IRQn 171 #define SPIM132_IRQHandler SERIAL2_IRQHandler 172 #define SPIS132_IRQn SERIAL2_IRQn 173 #define SPIS132_IRQHandler SERIAL2_IRQHandler 174 #define TWIM132_IRQn SERIAL2_IRQn 175 #define TWIM132_IRQHandler SERIAL2_IRQHandler 176 #define TWIS132_IRQn SERIAL2_IRQn 177 #define TWIS132_IRQHandler SERIAL2_IRQHandler 178 #define UARTE132_IRQn SERIAL2_IRQn 179 #define UARTE132_IRQHandler SERIAL2_IRQHandler 180 #define SPIM133_IRQn SERIAL3_IRQn 181 #define SPIM133_IRQHandler SERIAL3_IRQHandler 182 #define SPIS133_IRQn SERIAL3_IRQn 183 #define SPIS133_IRQHandler SERIAL3_IRQHandler 184 #define TWIM133_IRQn SERIAL3_IRQn 185 #define TWIM133_IRQHandler SERIAL3_IRQHandler 186 #define TWIS133_IRQn SERIAL3_IRQn 187 #define TWIS133_IRQHandler SERIAL3_IRQHandler 188 #define UARTE133_IRQn SERIAL3_IRQn 189 #define UARTE133_IRQHandler SERIAL3_IRQHandler 190 #define SPIM134_IRQn SERIAL4_IRQn 191 #define SPIM134_IRQHandler SERIAL4_IRQHandler 192 #define SPIS134_IRQn SERIAL4_IRQn 193 #define SPIS134_IRQHandler SERIAL4_IRQHandler 194 #define TWIM134_IRQn SERIAL4_IRQn 195 #define TWIM134_IRQHandler SERIAL4_IRQHandler 196 #define TWIS134_IRQn SERIAL4_IRQn 197 #define TWIS134_IRQHandler SERIAL4_IRQHandler 198 #define UARTE134_IRQn SERIAL4_IRQn 199 #define UARTE134_IRQHandler SERIAL4_IRQHandler 200 #define SPIM135_IRQn SERIAL5_IRQn 201 #define SPIM135_IRQHandler SERIAL5_IRQHandler 202 #define SPIS135_IRQn SERIAL5_IRQn 203 #define SPIS135_IRQHandler SERIAL5_IRQHandler 204 #define TWIM135_IRQn SERIAL5_IRQn 205 #define TWIM135_IRQHandler SERIAL5_IRQHandler 206 #define TWIS135_IRQn SERIAL5_IRQn 207 #define TWIS135_IRQHandler SERIAL5_IRQHandler 208 #define UARTE135_IRQn SERIAL5_IRQn 209 #define UARTE135_IRQHandler SERIAL5_IRQHandler 210 #define SPIM136_IRQn SERIAL6_IRQn 211 #define SPIM136_IRQHandler SERIAL6_IRQHandler 212 #define SPIS136_IRQn SERIAL6_IRQn 213 #define SPIS136_IRQHandler SERIAL6_IRQHandler 214 #define TWIM136_IRQn SERIAL6_IRQn 215 #define TWIM136_IRQHandler SERIAL6_IRQHandler 216 #define TWIS136_IRQn SERIAL6_IRQn 217 #define TWIS136_IRQHandler SERIAL6_IRQHandler 218 #define UARTE136_IRQn SERIAL6_IRQn 219 #define UARTE136_IRQHandler SERIAL6_IRQHandler 220 #define SPIM137_IRQn SERIAL7_IRQn 221 #define SPIM137_IRQHandler SERIAL7_IRQHandler 222 #define SPIS137_IRQn SERIAL7_IRQn 223 #define SPIS137_IRQHandler SERIAL7_IRQHandler 224 #define TWIM137_IRQn SERIAL7_IRQn 225 #define TWIM137_IRQHandler SERIAL7_IRQHandler 226 #define TWIS137_IRQn SERIAL7_IRQn 227 #define TWIS137_IRQHandler SERIAL7_IRQHandler 228 #define UARTE137_IRQn SERIAL7_IRQn 229 #define UARTE137_IRQHandler SERIAL7_IRQHandler 230 231 /* =========================================================================================================================== */ 232 /* ================ Processor and Core Peripheral Section ================ */ 233 /* =========================================================================================================================== */ 234 235 /* ====================== Configuration of the Nordic Semiconductor VPR Processor and Core Peripherals ======================= */ 236 #define __VPR_REV 0.7 /*!< VPR Core Revision */ 237 #define __VPR_REV_MAJOR 0 /*!< VPR Core Major Revision */ 238 #define __VPR_REV_MINOR 7 /*!< VPR Core Minor Revision */ 239 #define __VPR_REV_PATCH 0 /*!< VPR Core Patch Revision */ 240 #define __DSP_PRESENT 0 /*!< DSP present or not */ 241 #define __CLIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ 242 #define __MTVT_PRESENT 1 /*!< CPU supports alternate Vector Table address */ 243 #define __MPU_PRESENT 1 /*!< MPU present */ 244 #define __FPU_PRESENT 0 /*!< FPU present */ 245 #define __FPU_DP 0 /*!< Double Precision FPU */ 246 #define __INTERRUPTS_MAX 480 /*!< Size of interrupt vector table */ 247 248 #define NRF_VPR NRF_VPR121 /*!< VPR instance name */ 249 #include "core_vpr.h" /*!< Nordic Semiconductor VPR processor and core peripherals */ 250 #include "system_nrf.h" /*!< nrf54h20_enga_flpr System Library */ 251 252 #endif /*!< NRF_FLPR */ 253 254 255 #ifdef NRF_FLPR 256 257 #define NRF_DOMAIN NRF_DOMAIN_GLOBALFAST 258 #define NRF_PROCESSOR NRF_PROCESSOR_FLPR 259 #ifndef NRF_OWNER 260 #define NRF_OWNER NRF_OWNER_APPLICATION 261 #endif 262 263 #endif /*!< NRF_FLPR */ 264 265 266 /* ========================================= Start of section using anonymous unions ========================================= */ 267 268 #include "compiler_abstraction.h" 269 270 #if defined (__CC_ARM) 271 #pragma push 272 #pragma anon_unions 273 #elif defined (__ICCARM__) 274 #pragma language=extended 275 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 276 #pragma clang diagnostic push 277 #pragma clang diagnostic ignored "-Wc11-extensions" 278 #pragma clang diagnostic ignored "-Wreserved-id-macro" 279 #pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 280 #pragma clang diagnostic ignored "-Wnested-anon-types" 281 #elif defined (__GNUC__) 282 /* anonymous unions are enabled by default */ 283 #elif defined (__TMS470__) 284 /* anonymous unions are enabled by default */ 285 #elif defined (__TASKING__) 286 #pragma warning 586 287 #elif defined (__CSMC__) 288 /* anonymous unions are enabled by default */ 289 #else 290 #warning Unsupported compiler type 291 #endif 292 293 /* =========================================================================================================================== */ 294 /* ================ Peripheral Address Map ================ */ 295 /* =========================================================================================================================== */ 296 297 #define NRF_FLPR_VPRCLIC_NS_BASE 0x4F8D5000UL 298 #define NRF_FLPR_VPRCLIC_S_BASE 0x5F8D5000UL 299 300 /* =========================================================================================================================== */ 301 /* ================ Peripheral Declaration ================ */ 302 /* =========================================================================================================================== */ 303 304 #define NRF_FLPR_VPRCLIC_NS ((NRF_CLIC_Type*) NRF_FLPR_VPRCLIC_NS_BASE) 305 #define NRF_FLPR_VPRCLIC_S ((NRF_CLIC_Type*) NRF_FLPR_VPRCLIC_S_BASE) 306 307 /* =========================================================================================================================== */ 308 /* ================ TrustZone Remapping ================ */ 309 /* =========================================================================================================================== */ 310 311 #ifdef NRF_TRUSTZONE_NONSECURE /*!< Remap NRF_X_NS instances to NRF_X symbol for ease of use. */ 312 #define NRF_FLPR_VPRCLIC NRF_FLPR_VPRCLIC_NS 313 #else /*!< Remap NRF_X_S instances to NRF_X symbol for ease of use. */ 314 #define NRF_FLPR_VPRCLIC NRF_FLPR_VPRCLIC_S 315 #endif /*!< NRF_TRUSTZONE_NONSECURE */ 316 317 /* =========================================================================================================================== */ 318 /* ================ Local Domain Remapping ================ */ 319 /* =========================================================================================================================== */ 320 321 #ifdef NRF_FLPR /*!< Remap NRF_DOMAIN_X instances to NRF_X symbol for ease of use. */ 322 #ifdef NRF_TRUSTZONE_NONSECURE /*!< Remap only nonsecure instances. */ 323 #define NRF_VPRCLIC NRF_FLPR_VPRCLIC 324 #else /*!< Remap all instances. */ 325 #define NRF_VPRCLIC NRF_FLPR_VPRCLIC 326 #endif /*!< NRF_TRUSTZONE_NONSECURE */ 327 #endif /*!< NRF_FLPR */ 328 329 /* ========================================== End of section using anonymous unions ========================================== */ 330 331 #if defined (__CC_ARM) 332 #pragma pop 333 #elif defined (__ICCARM__) 334 /* leave anonymous unions enabled */ 335 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 336 #pragma clang diagnostic pop 337 #elif defined (__GNUC__) 338 /* anonymous unions are enabled by default */ 339 #elif defined (__TMS470__) 340 /* anonymous unions are enabled by default */ 341 #elif defined (__TASKING__) 342 #pragma warning restore 343 #elif defined (__CSMC__) 344 /* anonymous unions are enabled by default */ 345 #endif 346 347 348 #ifdef __cplusplus 349 } 350 #endif 351 #endif /* NRF54H20_ENGA_FLPR_H */ 352 353