This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit caa09a6557cbac74b37e10c9432ca9275d88c0dc Author: Jukka Laitinen <[email protected]> AuthorDate: Tue Sep 1 15:30:06 2026 +0300 arch/arm/imxrt: Add imxrt118x irq definitions Add interrupt numbering for imxrt118x in imxrt118x_irq.h, and support for more interrupts in imxrt_irq.c and imxrt_clrpend.c. The interrupt numbers are generated from the Reference Manual by AI Assisted-by: Claude Code:claude-opus-4-7 Signed-off-by: Jukka Laitinen <[email protected]> --- arch/arm/include/imxrt/imxrt118x_irq.h | 293 +++++++++++++++++++++++++++++++++ arch/arm/include/imxrt/irq.h | 2 + arch/arm/src/imxrt/imxrt_clrpend.c | 21 +++ arch/arm/src/imxrt/imxrt_irq.c | 26 ++- 4 files changed, 337 insertions(+), 5 deletions(-) diff --git a/arch/arm/include/imxrt/imxrt118x_irq.h b/arch/arm/include/imxrt/imxrt118x_irq.h new file mode 100644 index 00000000000..5b3ffc27385 --- /dev/null +++ b/arch/arm/include/imxrt/imxrt118x_irq.h @@ -0,0 +1,293 @@ +/**************************************************************************** + * arch/arm/include/imxrt/imxrt118x_irq.h + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/* This file should never be included directly but, rather, + * only indirectly through nuttx/irq.h + */ + +#ifndef __ARCH_ARM_INCLUDE_IMXRT_IMXRT118X_IRQ_H +#define __ARCH_ARM_INCLUDE_IMXRT_IMXRT118X_IRQ_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* External interrupts (from IMXRT1180RM Ch. 4 Interrupts, Table 11). + * Names extracted from the NXP MCUXpresso SDK IRQn_Type enumeration. + */ + +#define IMXRT_IRQ_TMR1 (IMXRT_IRQ_EXTINT + 0) +#define IMXRT_IRQ_DAP (IMXRT_IRQ_EXTINT + 1) +#define IMXRT_IRQ_M7_CTI_TRIGGER_OUTPUT (IMXRT_IRQ_EXTINT + 2) +#define IMXRT_IRQ_M33_CTI_TRIGGER_OUTPUT (IMXRT_IRQ_EXTINT + 3) +#define IMXRT_IRQ_TMR5 (IMXRT_IRQ_EXTINT + 4) +#define IMXRT_IRQ_TMR6 (IMXRT_IRQ_EXTINT + 5) +#define IMXRT_IRQ_TMR7 (IMXRT_IRQ_EXTINT + 6) +#define IMXRT_IRQ_TMR8 (IMXRT_IRQ_EXTINT + 7) +#define IMXRT_IRQ_CAN1 (IMXRT_IRQ_EXTINT + 8) +#define IMXRT_IRQ_CAN1_ERROR (IMXRT_IRQ_EXTINT + 9) +#define IMXRT_IRQ_GPIO1_0 (IMXRT_IRQ_EXTINT + 10) +#define IMXRT_IRQ_GPIO1_1 (IMXRT_IRQ_EXTINT + 11) +#define IMXRT_IRQ_I3C1 (IMXRT_IRQ_EXTINT + 12) +#define IMXRT_IRQ_LPI2C1 (IMXRT_IRQ_EXTINT + 13) +#define IMXRT_IRQ_LPI2C2 (IMXRT_IRQ_EXTINT + 14) +#define IMXRT_IRQ_LPIT1 (IMXRT_IRQ_EXTINT + 15) +#define IMXRT_IRQ_LPSPI1 (IMXRT_IRQ_EXTINT + 16) +#define IMXRT_IRQ_LPSPI2 (IMXRT_IRQ_EXTINT + 17) +#define IMXRT_IRQ_LPTMR1 (IMXRT_IRQ_EXTINT + 18) +#define IMXRT_IRQ_LPUART1 (IMXRT_IRQ_EXTINT + 19) +#define IMXRT_IRQ_LPUART2 (IMXRT_IRQ_EXTINT + 20) +#define IMXRT_IRQ_MU1 (IMXRT_IRQ_EXTINT + 21) +#define IMXRT_IRQ_MU2 (IMXRT_IRQ_EXTINT + 22) +#define IMXRT_IRQ_PWM1_FAULT (IMXRT_IRQ_EXTINT + 23) +#define IMXRT_IRQ_PWM1_0 (IMXRT_IRQ_EXTINT + 24) +#define IMXRT_IRQ_PWM1_1 (IMXRT_IRQ_EXTINT + 25) +#define IMXRT_IRQ_PWM1_2 (IMXRT_IRQ_EXTINT + 26) +#define IMXRT_IRQ_PWM1_3 (IMXRT_IRQ_EXTINT + 27) +#define IMXRT_IRQ_EDGELOCK_TRUST_MUA_RX_FULL (IMXRT_IRQ_EXTINT + 28) +#define IMXRT_IRQ_EDGELOCK_TRUST_MUA_TX_EMPTY (IMXRT_IRQ_EXTINT + 29) +#define IMXRT_IRQ_EDGELOCK_APPS_CORE_MUA_RX_FULL (IMXRT_IRQ_EXTINT + 30) +#define IMXRT_IRQ_EDGELOCK_APPS_CORE_MUA_TX_EMPTY (IMXRT_IRQ_EXTINT + 31) +#define IMXRT_IRQ_EDGELOCK_REALTIME_CORE_MUA_RX_FULL (IMXRT_IRQ_EXTINT + 32) +#define IMXRT_IRQ_EDGELOCK_REALTIME_CORE_MUA_TX_EMPTY (IMXRT_IRQ_EXTINT + 33) +#define IMXRT_IRQ_EDGELOCK_SECURE (IMXRT_IRQ_EXTINT + 34) +#define IMXRT_IRQ_EDGELOCK_NONSECURE (IMXRT_IRQ_EXTINT + 35) +#define IMXRT_IRQ_TPM1 (IMXRT_IRQ_EXTINT + 36) +#define IMXRT_IRQ_TPM2 (IMXRT_IRQ_EXTINT + 37) +#define IMXRT_IRQ_RTWDOG1 (IMXRT_IRQ_EXTINT + 38) +#define IMXRT_IRQ_RTWDOG2 (IMXRT_IRQ_EXTINT + 39) +#define IMXRT_IRQ_TRDC_MGR_AON (IMXRT_IRQ_EXTINT + 40) +#define IMXRT_IRQ_PDM_HWVAD_EVENT (IMXRT_IRQ_EXTINT + 41) +#define IMXRT_IRQ_PDM_HWVAD_ERROR (IMXRT_IRQ_EXTINT + 42) +#define IMXRT_IRQ_PDM_EVENT (IMXRT_IRQ_EXTINT + 43) +#define IMXRT_IRQ_PDM_ERROR (IMXRT_IRQ_EXTINT + 44) +#define IMXRT_IRQ_SAI1 (IMXRT_IRQ_EXTINT + 45) +#define IMXRT_IRQ_CM33_PS (IMXRT_IRQ_EXTINT + 46) +#define IMXRT_IRQ_CM33_TCM_ECC (IMXRT_IRQ_EXTINT + 47) +#define IMXRT_IRQ_CM33_TCM_ERROR (IMXRT_IRQ_EXTINT + 48) +#define IMXRT_IRQ_CM7_TCM_ECC (IMXRT_IRQ_EXTINT + 49) +#define IMXRT_IRQ_CM7_TCM_ERROR (IMXRT_IRQ_EXTINT + 50) +#define IMXRT_IRQ_CAN2 (IMXRT_IRQ_EXTINT + 51) +#define IMXRT_IRQ_CAN2_ERROR (IMXRT_IRQ_EXTINT + 52) +#define IMXRT_IRQ_FLEXIO1 (IMXRT_IRQ_EXTINT + 53) +#define IMXRT_IRQ_FLEXIO2 (IMXRT_IRQ_EXTINT + 54) +#define IMXRT_IRQ_FLEXSPI1 (IMXRT_IRQ_EXTINT + 55) +#define IMXRT_IRQ_FLEXSPI2 (IMXRT_IRQ_EXTINT + 56) +#define IMXRT_IRQ_GPIO2_0 (IMXRT_IRQ_EXTINT + 57) +#define IMXRT_IRQ_GPIO2_1 (IMXRT_IRQ_EXTINT + 58) +#define IMXRT_IRQ_GPIO3_0 (IMXRT_IRQ_EXTINT + 59) +#define IMXRT_IRQ_GPIO3_1 (IMXRT_IRQ_EXTINT + 60) +#define IMXRT_IRQ_I3C2 (IMXRT_IRQ_EXTINT + 61) +#define IMXRT_IRQ_LPI2C3 (IMXRT_IRQ_EXTINT + 62) +#define IMXRT_IRQ_LPI2C4 (IMXRT_IRQ_EXTINT + 63) +#define IMXRT_IRQ_LPIT2 (IMXRT_IRQ_EXTINT + 64) +#define IMXRT_IRQ_LPSPI3 (IMXRT_IRQ_EXTINT + 65) +#define IMXRT_IRQ_LPSPI4 (IMXRT_IRQ_EXTINT + 66) +#define IMXRT_IRQ_LPTMR2 (IMXRT_IRQ_EXTINT + 67) +#define IMXRT_IRQ_LPUART3 (IMXRT_IRQ_EXTINT + 68) +#define IMXRT_IRQ_LPUART4 (IMXRT_IRQ_EXTINT + 69) +#define IMXRT_IRQ_LPUART5 (IMXRT_IRQ_EXTINT + 70) +#define IMXRT_IRQ_LPUART6 (IMXRT_IRQ_EXTINT + 71) +#define IMXRT_IRQ_Reserved88 (IMXRT_IRQ_EXTINT + 72) +#define IMXRT_IRQ_BBNSM (IMXRT_IRQ_EXTINT + 73) +#define IMXRT_IRQ_SYS_CTR1 (IMXRT_IRQ_EXTINT + 74) +#define IMXRT_IRQ_TPM3 (IMXRT_IRQ_EXTINT + 75) +#define IMXRT_IRQ_TPM4 (IMXRT_IRQ_EXTINT + 76) +#define IMXRT_IRQ_TPM5 (IMXRT_IRQ_EXTINT + 77) +#define IMXRT_IRQ_TPM6 (IMXRT_IRQ_EXTINT + 78) +#define IMXRT_IRQ_RTWDOG3 (IMXRT_IRQ_EXTINT + 79) +#define IMXRT_IRQ_RTWDOG4 (IMXRT_IRQ_EXTINT + 80) +#define IMXRT_IRQ_RTWDOG5 (IMXRT_IRQ_EXTINT + 81) +#define IMXRT_IRQ_TRDC_MGR_WKUP (IMXRT_IRQ_EXTINT + 82) +#define IMXRT_IRQ_TMPSNS_INT (IMXRT_IRQ_EXTINT + 83) +#define IMXRT_IRQ_BBSM (IMXRT_IRQ_EXTINT + 84) +#define IMXRT_IRQ_LDO_AON_ANA (IMXRT_IRQ_EXTINT + 85) +#define IMXRT_IRQ_USDHC1 (IMXRT_IRQ_EXTINT + 86) +#define IMXRT_IRQ_USDHC2 (IMXRT_IRQ_EXTINT + 87) +#define IMXRT_IRQ_TRDC_MGR_MEGA (IMXRT_IRQ_EXTINT + 88) +#define IMXRT_IRQ_SFA (IMXRT_IRQ_EXTINT + 89) +#define IMXRT_IRQ_LDO_AON_DIG (IMXRT_IRQ_EXTINT + 90) +#define IMXRT_IRQ_MECC1 (IMXRT_IRQ_EXTINT + 91) +#define IMXRT_IRQ_MECC2 (IMXRT_IRQ_EXTINT + 92) +#define IMXRT_IRQ_ADC1 (IMXRT_IRQ_EXTINT + 93) +#define IMXRT_IRQ_DMA_ERROR (IMXRT_IRQ_EXTINT + 94) +#define IMXRT_IRQ_DMA3_CH0 (IMXRT_IRQ_EXTINT + 95) +#define IMXRT_IRQ_DMA3_CH1 (IMXRT_IRQ_EXTINT + 96) +#define IMXRT_IRQ_DMA3_CH2 (IMXRT_IRQ_EXTINT + 97) +#define IMXRT_IRQ_DMA3_CH3 (IMXRT_IRQ_EXTINT + 98) +#define IMXRT_IRQ_DMA3_CH4 (IMXRT_IRQ_EXTINT + 99) +#define IMXRT_IRQ_DMA3_CH5 (IMXRT_IRQ_EXTINT + 100) +#define IMXRT_IRQ_DMA3_CH6 (IMXRT_IRQ_EXTINT + 101) +#define IMXRT_IRQ_DMA3_CH7 (IMXRT_IRQ_EXTINT + 102) +#define IMXRT_IRQ_DMA3_CH8 (IMXRT_IRQ_EXTINT + 103) +#define IMXRT_IRQ_DMA3_CH9 (IMXRT_IRQ_EXTINT + 104) +#define IMXRT_IRQ_DMA3_CH10 (IMXRT_IRQ_EXTINT + 105) +#define IMXRT_IRQ_DMA3_CH11 (IMXRT_IRQ_EXTINT + 106) +#define IMXRT_IRQ_DMA3_CH12 (IMXRT_IRQ_EXTINT + 107) +#define IMXRT_IRQ_DMA3_CH13 (IMXRT_IRQ_EXTINT + 108) +#define IMXRT_IRQ_DMA3_CH14 (IMXRT_IRQ_EXTINT + 109) +#define IMXRT_IRQ_DMA3_CH15 (IMXRT_IRQ_EXTINT + 110) +#define IMXRT_IRQ_DMA3_CH16 (IMXRT_IRQ_EXTINT + 111) +#define IMXRT_IRQ_DMA3_CH17 (IMXRT_IRQ_EXTINT + 112) +#define IMXRT_IRQ_DMA3_CH18 (IMXRT_IRQ_EXTINT + 113) +#define IMXRT_IRQ_DMA3_CH19 (IMXRT_IRQ_EXTINT + 114) +#define IMXRT_IRQ_DMA3_CH20 (IMXRT_IRQ_EXTINT + 115) +#define IMXRT_IRQ_DMA3_CH21 (IMXRT_IRQ_EXTINT + 116) +#define IMXRT_IRQ_DMA3_CH22 (IMXRT_IRQ_EXTINT + 117) +#define IMXRT_IRQ_DMA3_CH23 (IMXRT_IRQ_EXTINT + 118) +#define IMXRT_IRQ_DMA3_CH24 (IMXRT_IRQ_EXTINT + 119) +#define IMXRT_IRQ_DMA3_CH25 (IMXRT_IRQ_EXTINT + 120) +#define IMXRT_IRQ_DMA3_CH26 (IMXRT_IRQ_EXTINT + 121) +#define IMXRT_IRQ_DMA3_CH27 (IMXRT_IRQ_EXTINT + 122) +#define IMXRT_IRQ_DMA3_CH28 (IMXRT_IRQ_EXTINT + 123) +#define IMXRT_IRQ_DMA3_CH29 (IMXRT_IRQ_EXTINT + 124) +#define IMXRT_IRQ_DMA3_CH30 (IMXRT_IRQ_EXTINT + 125) +#define IMXRT_IRQ_DMA3_CH31 (IMXRT_IRQ_EXTINT + 126) +#define IMXRT_IRQ_DMA4_ERROR (IMXRT_IRQ_EXTINT + 127) +#define IMXRT_IRQ_DMA4_CH0_CH1_CH32_CH33 (IMXRT_IRQ_EXTINT + 128) +#define IMXRT_IRQ_DMA4_CH2_CH3_CH34_CH35 (IMXRT_IRQ_EXTINT + 129) +#define IMXRT_IRQ_DMA4_CH4_CH5_CH36_CH37 (IMXRT_IRQ_EXTINT + 130) +#define IMXRT_IRQ_DMA4_CH6_CH7_CH38_CH39 (IMXRT_IRQ_EXTINT + 131) +#define IMXRT_IRQ_DMA4_CH8_CH9_CH40_CH41 (IMXRT_IRQ_EXTINT + 132) +#define IMXRT_IRQ_DMA4_CH10_CH11_CH42_CH43 (IMXRT_IRQ_EXTINT + 133) +#define IMXRT_IRQ_DMA4_CH12_CH13_CH44_CH45 (IMXRT_IRQ_EXTINT + 134) +#define IMXRT_IRQ_DMA4_CH14_CH15_CH46_CH47 (IMXRT_IRQ_EXTINT + 135) +#define IMXRT_IRQ_DMA4_CH16_CH17_CH48_CH49 (IMXRT_IRQ_EXTINT + 136) +#define IMXRT_IRQ_DMA4_CH18_CH19_CH50_CH51 (IMXRT_IRQ_EXTINT + 137) +#define IMXRT_IRQ_DMA4_CH20_CH21_CH52_CH53 (IMXRT_IRQ_EXTINT + 138) +#define IMXRT_IRQ_DMA4_CH22_CH23_CH54_CH55 (IMXRT_IRQ_EXTINT + 139) +#define IMXRT_IRQ_DMA4_CH24_CH25_CH56_CH57 (IMXRT_IRQ_EXTINT + 140) +#define IMXRT_IRQ_DMA4_CH26_CH27_CH58_CH59 (IMXRT_IRQ_EXTINT + 141) +#define IMXRT_IRQ_DMA4_CH28_CH29_CH60_CH61 (IMXRT_IRQ_EXTINT + 142) +#define IMXRT_IRQ_DMA4_CH30_CH31_CH62_CH63 (IMXRT_IRQ_EXTINT + 143) +#define IMXRT_IRQ_XBAR1_CH0_CH1 (IMXRT_IRQ_EXTINT + 144) +#define IMXRT_IRQ_XBAR1_CH2_CH3 (IMXRT_IRQ_EXTINT + 145) +#define IMXRT_IRQ_SINC3_CH0_CH1_CH2_CH3 (IMXRT_IRQ_EXTINT + 146) +#define IMXRT_IRQ_EWM (IMXRT_IRQ_EXTINT + 147) +#define IMXRT_IRQ_SEMC (IMXRT_IRQ_EXTINT + 148) +#define IMXRT_IRQ_LPIT3 (IMXRT_IRQ_EXTINT + 149) +#define IMXRT_IRQ_LPTMR3 (IMXRT_IRQ_EXTINT + 150) +#define IMXRT_IRQ_TMR4 (IMXRT_IRQ_EXTINT + 151) +#define IMXRT_IRQ_LPI2C5 (IMXRT_IRQ_EXTINT + 152) +#define IMXRT_IRQ_LPI2C6 (IMXRT_IRQ_EXTINT + 153) +#define IMXRT_IRQ_SAI4 (IMXRT_IRQ_EXTINT + 154) +#define IMXRT_IRQ_SPDIF (IMXRT_IRQ_EXTINT + 155) +#define IMXRT_IRQ_LPUART9 (IMXRT_IRQ_EXTINT + 156) +#define IMXRT_IRQ_LPUART10 (IMXRT_IRQ_EXTINT + 157) +#define IMXRT_IRQ_LPUART11 (IMXRT_IRQ_EXTINT + 158) +#define IMXRT_IRQ_LPUART12 (IMXRT_IRQ_EXTINT + 159) +#define IMXRT_IRQ_INTG_BOOTROM_DEBUG_CTRL (IMXRT_IRQ_EXTINT + 160) +#define IMXRT_IRQ_EDGELOCK_REQ1 (IMXRT_IRQ_EXTINT + 161) +#define IMXRT_IRQ_EDGELOCK_REQ2 (IMXRT_IRQ_EXTINT + 162) +#define IMXRT_IRQ_EDGELOCK_REQ3 (IMXRT_IRQ_EXTINT + 163) +#define IMXRT_IRQ_TMR3 (IMXRT_IRQ_EXTINT + 164) +#define IMXRT_IRQ_JTAGC (IMXRT_IRQ_EXTINT + 165) +#define IMXRT_IRQ_M33_SYSRESET_REQ (IMXRT_IRQ_EXTINT + 166) +#define IMXRT_IRQ_M33_LOCKUP (IMXRT_IRQ_EXTINT + 167) +#define IMXRT_IRQ_M7_SYSRESET_REQ (IMXRT_IRQ_EXTINT + 168) +#define IMXRT_IRQ_M7_LOCKUP (IMXRT_IRQ_EXTINT + 169) +#define IMXRT_IRQ_PWM2_FAULT (IMXRT_IRQ_EXTINT + 170) +#define IMXRT_IRQ_PWM2_0 (IMXRT_IRQ_EXTINT + 171) +#define IMXRT_IRQ_PWM2_1 (IMXRT_IRQ_EXTINT + 172) +#define IMXRT_IRQ_PWM2_2 (IMXRT_IRQ_EXTINT + 173) +#define IMXRT_IRQ_PWM2_3 (IMXRT_IRQ_EXTINT + 174) +#define IMXRT_IRQ_PWM3_FAULT (IMXRT_IRQ_EXTINT + 175) +#define IMXRT_IRQ_PWM3_0 (IMXRT_IRQ_EXTINT + 176) +#define IMXRT_IRQ_PWM3_1 (IMXRT_IRQ_EXTINT + 177) +#define IMXRT_IRQ_PWM3_2 (IMXRT_IRQ_EXTINT + 178) +#define IMXRT_IRQ_PWM3_3 (IMXRT_IRQ_EXTINT + 179) +#define IMXRT_IRQ_PWM4_FAULT (IMXRT_IRQ_EXTINT + 180) +#define IMXRT_IRQ_PWM4_0 (IMXRT_IRQ_EXTINT + 181) +#define IMXRT_IRQ_PWM4_1 (IMXRT_IRQ_EXTINT + 182) +#define IMXRT_IRQ_PWM4_2 (IMXRT_IRQ_EXTINT + 183) +#define IMXRT_IRQ_PWM4_3 (IMXRT_IRQ_EXTINT + 184) +#define IMXRT_IRQ_EQDC1 (IMXRT_IRQ_EXTINT + 185) +#define IMXRT_IRQ_EQDC2 (IMXRT_IRQ_EXTINT + 186) +#define IMXRT_IRQ_EQDC3 (IMXRT_IRQ_EXTINT + 187) +#define IMXRT_IRQ_EQDC4 (IMXRT_IRQ_EXTINT + 188) +#define IMXRT_IRQ_ADC2 (IMXRT_IRQ_EXTINT + 189) +#define IMXRT_IRQ_DCDC (IMXRT_IRQ_EXTINT + 190) +#define IMXRT_IRQ_CAN3 (IMXRT_IRQ_EXTINT + 191) +#define IMXRT_IRQ_CAN3_ERROR (IMXRT_IRQ_EXTINT + 192) +#define IMXRT_IRQ_DAC (IMXRT_IRQ_EXTINT + 193) +#define IMXRT_IRQ_LPSPI5 (IMXRT_IRQ_EXTINT + 194) +#define IMXRT_IRQ_LPSPI6 (IMXRT_IRQ_EXTINT + 195) +#define IMXRT_IRQ_LPUART7 (IMXRT_IRQ_EXTINT + 196) +#define IMXRT_IRQ_LPUART8 (IMXRT_IRQ_EXTINT + 197) +#define IMXRT_IRQ_SAI2 (IMXRT_IRQ_EXTINT + 198) +#define IMXRT_IRQ_SAI3 (IMXRT_IRQ_EXTINT + 199) +#define IMXRT_IRQ_ACMP1 (IMXRT_IRQ_EXTINT + 200) +#define IMXRT_IRQ_ACMP2 (IMXRT_IRQ_EXTINT + 201) +#define IMXRT_IRQ_ACMP3 (IMXRT_IRQ_EXTINT + 202) +#define IMXRT_IRQ_ACMP4 (IMXRT_IRQ_EXTINT + 203) +#define IMXRT_IRQ_CM7_PS (IMXRT_IRQ_EXTINT + 204) +#define IMXRT_IRQ_CM7_MCM (IMXRT_IRQ_EXTINT + 205) +#define IMXRT_IRQ_CM33_MCM (IMXRT_IRQ_EXTINT + 206) +#define IMXRT_IRQ_ECAT_INT (IMXRT_IRQ_EXTINT + 207) +#define IMXRT_IRQ_SAFETY_CLK_MON (IMXRT_IRQ_EXTINT + 208) +#define IMXRT_IRQ_GPT1 (IMXRT_IRQ_EXTINT + 209) +#define IMXRT_IRQ_GPT2 (IMXRT_IRQ_EXTINT + 210) +#define IMXRT_IRQ_KPP (IMXRT_IRQ_EXTINT + 211) +#define IMXRT_IRQ_USBPHY1 (IMXRT_IRQ_EXTINT + 212) +#define IMXRT_IRQ_USBPHY2 (IMXRT_IRQ_EXTINT + 213) +#define IMXRT_IRQ_USB_OTG2 (IMXRT_IRQ_EXTINT + 214) +#define IMXRT_IRQ_USBOTG1 (IMXRT_IRQ_EXTINT + 215) +#define IMXRT_IRQ_FLEXSPI_SLV (IMXRT_IRQ_EXTINT + 216) +#define IMXRT_IRQ_NETC (IMXRT_IRQ_EXTINT + 217) +#define IMXRT_IRQ_MSGINTR1 (IMXRT_IRQ_EXTINT + 218) +#define IMXRT_IRQ_MSGINTR2 (IMXRT_IRQ_EXTINT + 219) +#define IMXRT_IRQ_MSGINTR3 (IMXRT_IRQ_EXTINT + 220) +#define IMXRT_IRQ_MSGINTR4 (IMXRT_IRQ_EXTINT + 221) +#define IMXRT_IRQ_MSGINTR5 (IMXRT_IRQ_EXTINT + 222) +#define IMXRT_IRQ_MSGINTR6 (IMXRT_IRQ_EXTINT + 223) +#define IMXRT_IRQ_SINC1_CH0 (IMXRT_IRQ_EXTINT + 224) +#define IMXRT_IRQ_SINC1_CH1 (IMXRT_IRQ_EXTINT + 225) +#define IMXRT_IRQ_SINC1_CH2 (IMXRT_IRQ_EXTINT + 226) +#define IMXRT_IRQ_SINC1_CH3 (IMXRT_IRQ_EXTINT + 227) +#define IMXRT_IRQ_SINC2_CH0 (IMXRT_IRQ_EXTINT + 228) +#define IMXRT_IRQ_SINC2_CH1 (IMXRT_IRQ_EXTINT + 229) +#define IMXRT_IRQ_SINC2_CH2 (IMXRT_IRQ_EXTINT + 230) +#define IMXRT_IRQ_SINC2_CH3 (IMXRT_IRQ_EXTINT + 231) +#define IMXRT_IRQ_GPIO4 (IMXRT_IRQ_EXTINT + 232) +#define IMXRT_IRQ_TMR2 (IMXRT_IRQ_EXTINT + 233) +#define IMXRT_IRQ_GPIO5 (IMXRT_IRQ_EXTINT + 234) +#define IMXRT_IRQ_ASRC (IMXRT_IRQ_EXTINT + 235) +#define IMXRT_IRQ_GPIO6 (IMXRT_IRQ_EXTINT + 236) +#define IMXRT_IRQ_DBG_TRACE (IMXRT_IRQ_EXTINT + 237) + +/* Total number of external interrupts (matches the SDK IRQn_Type range). */ + +#define IMXRT_IRQ_NEXTINT (238) + +/* Interrupt count for the M33 core on imxrt118x. */ + +#define ARMV8M_PERIPHERAL_INTERRUPTS IMXRT_IRQ_NEXTINT + +/* No GPIO interrupts are wired up in the minimal port. */ + +#define IMXRT_GPIO_IRQ_FIRST (IMXRT_IRQ_EXTINT + IMXRT_IRQ_NEXTINT) +#define IMXRT_GPIO_NIRQS (0) + +#define NR_IRQS (IMXRT_IRQ_EXTINT + IMXRT_IRQ_NEXTINT + \ + IMXRT_GPIO_NIRQS) + +#endif /* __ARCH_ARM_INCLUDE_IMXRT_IMXRT118X_IRQ_H */ diff --git a/arch/arm/include/imxrt/irq.h b/arch/arm/include/imxrt/irq.h index 8778e34f326..d858df5f070 100644 --- a/arch/arm/include/imxrt/irq.h +++ b/arch/arm/include/imxrt/irq.h @@ -42,6 +42,8 @@ # include <arch/imxrt/imxrt106x_irq.h> #elif defined(CONFIG_ARCH_FAMILY_IMXRT117x) # include <arch/imxrt/imxrt117x_irq.h> +#elif defined(CONFIG_ARCH_FAMILY_IMXRT118x) +# include <arch/imxrt/imxrt118x_irq.h> #else # error Unrecognized i.MX RT architecture #endif diff --git a/arch/arm/src/imxrt/imxrt_clrpend.c b/arch/arm/src/imxrt/imxrt_clrpend.c index fb874717c4e..b759b1e3d6d 100644 --- a/arch/arm/src/imxrt/imxrt_clrpend.c +++ b/arch/arm/src/imxrt/imxrt_clrpend.c @@ -89,6 +89,27 @@ void imxrt_clrpend(int irq) putreg32(1 << (irq - IMXRT_IRQ_EXTINT - 128), NVIC_IRQ128_159_CLRPEND); } +#endif +#if IMXRT_IRQ_NEXTINT >= 192 + else if (irq < (IMXRT_IRQ_EXTINT + 192)) + { + putreg32(1 << (irq - IMXRT_IRQ_EXTINT - 160), + NVIC_IRQ160_191_CLRPEND); + } +#endif +#if IMXRT_IRQ_NEXTINT >= 224 + else if (irq < (IMXRT_IRQ_EXTINT + 224)) + { + putreg32(1 << (irq - IMXRT_IRQ_EXTINT - 192), + NVIC_IRQ192_223_CLRPEND); + } +#endif +#if IMXRT_IRQ_NEXTINT >= 240 + else if (irq < (IMXRT_IRQ_EXTINT + 240)) + { + putreg32(1 << (irq - IMXRT_IRQ_EXTINT - 224), + NVIC_IRQ224_239_CLRPEND); + } #endif else { diff --git a/arch/arm/src/imxrt/imxrt_irq.c b/arch/arm/src/imxrt/imxrt_irq.c index 3a8a87059db..b311685cd71 100644 --- a/arch/arm/src/imxrt/imxrt_irq.c +++ b/arch/arm/src/imxrt/imxrt_irq.c @@ -200,12 +200,20 @@ static void imxrt_dumpnvic(const char *msg, int irq) getreg32(NVIC_IRQ204_207_PRIORITY)); #endif #if IMXRT_IRQ_NEXTINT > 208 - irqinfo(" %08x %08x %08x\n", + irqinfo(" %08x %08x %08x %08x\n", getreg32(NVIC_IRQ208_211_PRIORITY), getreg32(NVIC_IRQ212_215_PRIORITY), - getreg32(NVIC_IRQ216_219_PRIORITY)); + getreg32(NVIC_IRQ216_219_PRIORITY), + getreg32(NVIC_IRQ220_223_PRIORITY)); +#endif +#if IMXRT_IRQ_NEXTINT > 224 + irqinfo(" %08x %08x %08x %08x\n", + getreg32(NVIC_IRQ224_227_PRIORITY), + getreg32(NVIC_IRQ228_231_PRIORITY), + getreg32(NVIC_IRQ232_235_PRIORITY), + getreg32(NVIC_IRQ236_239_PRIORITY)); #endif -#if IMXRT_IRQ_NEXTINT > 218 +#if IMXRT_IRQ_NEXTINT > 240 # warning Missing logic #endif @@ -339,14 +347,22 @@ static int imxrt_irqinfo(int irq, uintptr_t *regaddr, uint32_t *bit, else #endif #if IMXRT_IRQ_NEXTINT > 192 - if (extint < 219) + if (extint < 224) { *regaddr = (NVIC_IRQ192_223_ENABLE + offset); *bit = 1 << (extint - 192); } else #endif -#if IMXRT_IRQ_NEXTINT > 218 +#if IMXRT_IRQ_NEXTINT > 224 + if (extint < 240) + { + *regaddr = (NVIC_IRQ224_239_ENABLE + offset); + *bit = 1 << (extint - 224); + } + else +#endif +#if IMXRT_IRQ_NEXTINT > 240 # error Missing logic #endif {
