Yes, it looks like imx6/irq.h was originally put together for i.MX 6Quad, but IRQ definitions change based on what i.MX6 device variant (6SoloLite, 6Solo/6DualLite, 6Dual/6Quad) you are building for.  Digging through IMX6SLRM(page 141), IMX6DLRM(page 219), and IMX6DQRM(page 49) show the same IRQ number can be reserved, or used for two different devices (e.g. IRQ67 is reserved on 6SoloLite, I2C4 on 6Solo/6DualLite, and ECSPI5 on 6Dual/6Quad). As a result a common IRQ definition is insufficient.  I'm putting together a PR to use CONFIG_ARCH_CHIP_IMX6_6* to selectively define (or reserve) IRQ numbers based on how the interrupts are connected as specified in the TRMs.  This change affects definitions for IRQ numbers 35, 37-38, 40, 41, 43, 44-45, 47-50, 67, 71, 73, 82-83, 85, 108-111, 128, 129-130, 137-138, 141, 142-143, 146, and 147-158.

On 4/8/26 02:37, Maarten Zanders wrote:
Hi,

It seems that these definitions were taken from the imx6q reference manual (or compatible derivative). The interrupt table there has three columns: irq number, source (module/ip block) and description(/function). Some sources have more than one interrupt line.

The definition in Nuttx uses only the source of the irq, not the function. The description from the table went into the comment. So instead of removing definitions, they should be extended with the info from the comments to distinguish between them.

Note that this file is called imx6/irq.h but is not valid for all devices in the imx6 line. It probably started with the first popular one in the family (imx6q), but later additions (like imx6ul) have different irq assignments.

You can create an account on the NXP website to download the reference manuals.

Cheers,
Maarten



Op di 7 apr 2026 21:30 schreef Peter Barada <[email protected]>:

    Looking through nuttx/arch/arm/include/imx.h, I see the following
    symbols definitions that cause redefinition warnings:

    #define IMX_IRQ_VPU              35  /* JPEG codec interrupt
    request */
    #define IMX_IRQ_VPU              44  /* VPU interrupt request */
    ...
    #define IMX_IRQ_IPU2             39  /* IPU2 error interrupt
    request */
    #define IMX_IRQ_IPU2             40  /* IPU2 sync interrupt request */
    ...
    #define IMX_IRQ_SNVS             36  /* PMIC power off request */
    #define IMX_IRQ_SNVS             51  /* SRTC consolidated interrupt */
    #define IMX_IRQ_SNVS             52  /* SRTC security interrupt */

    Which single definitions should be removed, 35 for IMX_IRQ_VPU, 39
    for
    IMX_IRQ_IPU2, 36&51 for IMX_IRQ_SNVS?

-- Peter Barada
    [email protected]

--
Peter Barada
[email protected]

Reply via email to