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_LMAC_H 36 #define NRF7120_ENGA_LMAC_H 37 38 #ifdef __cplusplus 39 extern "C" { 40 #endif 41 42 43 #ifdef NRF_LMAC /*!< 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 VPRCLIC_23_IRQn = 23, /*!< 23 VPRCLIC_23 */ 61 UMAC_VPR_IRQn = 40, /*!< 40 UMAC_VPR */ 62 MVDMA_IRQn = 48, /*!< 48 MVDMA */ 63 SERIAL00_IRQn = 77, /*!< 77 SERIAL00 */ 64 SERIAL01_IRQn = 93, /*!< 93 SERIAL01 */ 65 SERIAL20_IRQn = 198, /*!< 198 SERIAL20 */ 66 SERIAL21_IRQn = 199, /*!< 199 SERIAL21 */ 67 SERIAL22_IRQn = 200, /*!< 200 SERIAL22 */ 68 GRTC_4_IRQn = 230, /*!< 230 GRTC_4 */ 69 SERIAL23_IRQn = 237, /*!< 237 SERIAL23 */ 70 SERIAL24_IRQn = 238, /*!< 238 SERIAL24 */ 71 SERIAL30_IRQn = 260, /*!< 260 SERIAL30 */ 72 } IRQn_Type; 73 74 /* ==================================================== Interrupt Aliases ==================================================== */ 75 #define SPIM00_IRQn SERIAL00_IRQn 76 #define SPIM00_IRQHandler SERIAL00_IRQHandler 77 #define SPIS00_IRQn SERIAL00_IRQn 78 #define SPIS00_IRQHandler SERIAL00_IRQHandler 79 #define UARTE00_IRQn SERIAL00_IRQn 80 #define UARTE00_IRQHandler SERIAL00_IRQHandler 81 #define SPIM01_IRQn SERIAL01_IRQn 82 #define SPIM01_IRQHandler SERIAL01_IRQHandler 83 #define SPIS01_IRQn SERIAL01_IRQn 84 #define SPIS01_IRQHandler SERIAL01_IRQHandler 85 #define UARTE01_IRQn SERIAL01_IRQn 86 #define UARTE01_IRQHandler SERIAL01_IRQHandler 87 #define SPIM20_IRQn SERIAL20_IRQn 88 #define SPIM20_IRQHandler SERIAL20_IRQHandler 89 #define SPIS20_IRQn SERIAL20_IRQn 90 #define SPIS20_IRQHandler SERIAL20_IRQHandler 91 #define TWIM20_IRQn SERIAL20_IRQn 92 #define TWIM20_IRQHandler SERIAL20_IRQHandler 93 #define TWIS20_IRQn SERIAL20_IRQn 94 #define TWIS20_IRQHandler SERIAL20_IRQHandler 95 #define UARTE20_IRQn SERIAL20_IRQn 96 #define UARTE20_IRQHandler SERIAL20_IRQHandler 97 #define SPIM21_IRQn SERIAL21_IRQn 98 #define SPIM21_IRQHandler SERIAL21_IRQHandler 99 #define SPIS21_IRQn SERIAL21_IRQn 100 #define SPIS21_IRQHandler SERIAL21_IRQHandler 101 #define TWIM21_IRQn SERIAL21_IRQn 102 #define TWIM21_IRQHandler SERIAL21_IRQHandler 103 #define TWIS21_IRQn SERIAL21_IRQn 104 #define TWIS21_IRQHandler SERIAL21_IRQHandler 105 #define UARTE21_IRQn SERIAL21_IRQn 106 #define UARTE21_IRQHandler SERIAL21_IRQHandler 107 #define SPIM22_IRQn SERIAL22_IRQn 108 #define SPIM22_IRQHandler SERIAL22_IRQHandler 109 #define SPIS22_IRQn SERIAL22_IRQn 110 #define SPIS22_IRQHandler SERIAL22_IRQHandler 111 #define TWIM22_IRQn SERIAL22_IRQn 112 #define TWIM22_IRQHandler SERIAL22_IRQHandler 113 #define TWIS22_IRQn SERIAL22_IRQn 114 #define TWIS22_IRQHandler SERIAL22_IRQHandler 115 #define UARTE22_IRQn SERIAL22_IRQn 116 #define UARTE22_IRQHandler SERIAL22_IRQHandler 117 #define SPIM23_IRQn SERIAL23_IRQn 118 #define SPIM23_IRQHandler SERIAL23_IRQHandler 119 #define SPIS23_IRQn SERIAL23_IRQn 120 #define SPIS23_IRQHandler SERIAL23_IRQHandler 121 #define TWIM23_IRQn SERIAL23_IRQn 122 #define TWIM23_IRQHandler SERIAL23_IRQHandler 123 #define TWIS23_IRQn SERIAL23_IRQn 124 #define TWIS23_IRQHandler SERIAL23_IRQHandler 125 #define UARTE23_IRQn SERIAL23_IRQn 126 #define UARTE23_IRQHandler SERIAL23_IRQHandler 127 #define SPIM24_IRQn SERIAL24_IRQn 128 #define SPIM24_IRQHandler SERIAL24_IRQHandler 129 #define SPIS24_IRQn SERIAL24_IRQn 130 #define SPIS24_IRQHandler SERIAL24_IRQHandler 131 #define TWIM24_IRQn SERIAL24_IRQn 132 #define TWIM24_IRQHandler SERIAL24_IRQHandler 133 #define TWIS24_IRQn SERIAL24_IRQn 134 #define TWIS24_IRQHandler SERIAL24_IRQHandler 135 #define UARTE24_IRQn SERIAL24_IRQn 136 #define UARTE24_IRQHandler SERIAL24_IRQHandler 137 #define SPIM30_IRQn SERIAL30_IRQn 138 #define SPIM30_IRQHandler SERIAL30_IRQHandler 139 #define SPIS30_IRQn SERIAL30_IRQn 140 #define SPIS30_IRQHandler SERIAL30_IRQHandler 141 #define TWIM30_IRQn SERIAL30_IRQn 142 #define TWIM30_IRQHandler SERIAL30_IRQHandler 143 #define TWIS30_IRQn SERIAL30_IRQn 144 #define TWIS30_IRQHandler SERIAL30_IRQHandler 145 #define UARTE30_IRQn SERIAL30_IRQn 146 #define UARTE30_IRQHandler SERIAL30_IRQHandler 147 148 /* =========================================================================================================================== */ 149 /* ================ Processor and Core Peripheral Section ================ */ 150 /* =========================================================================================================================== */ 151 152 /* ====================== Configuration of the Nordic Semiconductor VPR Processor and Core Peripherals ======================= */ 153 #define __VPR_REV 1.4 /*!< VPR Core Revision */ 154 #define __VPR_REV_MAJOR 1 /*!< VPR Core Major Revision */ 155 #define __VPR_REV_MINOR 4 /*!< VPR Core Minor Revision */ 156 #define __VPR_REV_PATCH 0 /*!< VPR Core Patch Revision */ 157 #define __DSP_PRESENT 0 /*!< DSP present or not */ 158 #define __CLIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */ 159 #define __MTVT_PRESENT 1 /*!< CPU supports alternate Vector Table address */ 160 #define __MPU_PRESENT 1 /*!< MPU present */ 161 #define __FPU_PRESENT 0 /*!< FPU present */ 162 #define __FPU_DP 0 /*!< Double Precision FPU */ 163 #define __INTERRUPTS_MAX 480 /*!< Size of interrupt vector table */ 164 165 #define NRF_VPR NRF_WIFICORE_VPRLMAC /*!< VPR instance name */ 166 #include "core_vpr.h" /*!< Nordic Semiconductor VPR processor and core peripherals */ 167 #include "system_nrf.h" /*!< nrf7120_enga_lmac System Library */ 168 169 #endif /*!< NRF_LMAC */ 170 171 172 #ifdef NRF_LMAC 173 174 #define NRF_DOMAIN NRF_DOMAIN_WIFICORE 175 #define NRF_PROCESSOR NRF_PROCESSOR_LMAC 176 #define NRF_OWNER NRF_OWNER_APPLICATION 177 178 #endif /*!< NRF_LMAC */ 179 180 181 /* ========================================= Start of section using anonymous unions ========================================= */ 182 183 #include "compiler_abstraction.h" 184 185 #if defined (__CC_ARM) 186 #pragma push 187 #pragma anon_unions 188 #elif defined (__ICCARM__) 189 #pragma language=extended 190 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 191 #pragma clang diagnostic push 192 #pragma clang diagnostic ignored "-Wc11-extensions" 193 #pragma clang diagnostic ignored "-Wreserved-id-macro" 194 #pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 195 #pragma clang diagnostic ignored "-Wnested-anon-types" 196 #elif defined (__GNUC__) 197 /* anonymous unions are enabled by default */ 198 #elif defined (__TMS470__) 199 /* anonymous unions are enabled by default */ 200 #elif defined (__TASKING__) 201 #pragma warning 586 202 #elif defined (__CSMC__) 203 /* anonymous unions are enabled by default */ 204 #else 205 #warning Unsupported compiler type 206 #endif 207 208 /* =========================================================================================================================== */ 209 /* ================ Peripheral Address Map ================ */ 210 /* =========================================================================================================================== */ 211 212 #define NRF_LMAC_VPRCLIC_BASE 0xF0000000UL 213 214 /* =========================================================================================================================== */ 215 /* ================ Peripheral Declaration ================ */ 216 /* =========================================================================================================================== */ 217 218 #define NRF_LMAC_VPRCLIC ((NRF_CLIC_Type*) NRF_LMAC_VPRCLIC_BASE) 219 220 /* =========================================================================================================================== */ 221 /* ================ Local Domain Remapping ================ */ 222 /* =========================================================================================================================== */ 223 224 #ifdef NRF_LMAC /*!< Remap NRF_DOMAIN_X instances to NRF_X symbol for ease of use. */ 225 #define NRF_VPRCLIC NRF_LMAC_VPRCLIC 226 #endif /*!< NRF_LMAC */ 227 228 /* ========================================== End of section using anonymous unions ========================================== */ 229 230 #if defined (__CC_ARM) 231 #pragma pop 232 #elif defined (__ICCARM__) 233 /* leave anonymous unions enabled */ 234 #elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) 235 #pragma clang diagnostic pop 236 #elif defined (__GNUC__) 237 /* anonymous unions are enabled by default */ 238 #elif defined (__TMS470__) 239 /* anonymous unions are enabled by default */ 240 #elif defined (__TASKING__) 241 #pragma warning restore 242 #elif defined (__CSMC__) 243 /* anonymous unions are enabled by default */ 244 #endif 245 246 247 #ifdef __cplusplus 248 } 249 #endif 250 #endif /* NRF7120_ENGA_LMAC_H */ 251 252