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 <jukka.laitinen@tii.ae>
This commit is contained in:
Jukka Laitinen 2026-09-01 15:30:06 +03:00 • committed by Xiang Xiao
parent 5095237337
commit caa09a6557
4 changed files with 337 additions and 5 deletions

View file

@ -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 */

View file

@ -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

View file

@ -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
{

View file

@ -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 > 218
#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 > 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
{