AINTC Methodology
287
SPRUH82C – April 2013 – Revised September 2016
Copyright © 2013–2016, Texas Instruments Incorporated
ARM Interrupt Controller (AINTC)
11.3.2 Interrupt Enabling
The AINTC interrupt enable system allows individual interrupts to be enabled or disabled. Use the
following sequence to enable interrupts:
1. Enable global host interrupts. All host interrupts are enabled by setting the ENABLE bit in the global
enable register (GER). Individual host interrupts are enabled or disabled from their individual enables
and are not overridden by the global enable.
2. Enable host interrupt lines. Host interrupt lines (FIQ and IRQ) can be enabled through one of two
methods:
(a) Set the desired mapped bit(s) in the host interrupt enable register (HIER), or
(b) Write the host interrupt index (0-1) to the host interrupt enable indexed set register (HIEISR) for
every interrupt line to enable.
3. Enable system interrupts. System interrupts can be individually enabled through one of two methods:
(a) Set the desired mapped bit(s) in the system interrupt enable set registers (ESR1-ESR4), or
(b) Write the system interrupt index (0-100) to the system interrupt enable indexed set register (EISR)
for every system interrupt to enable.
11.3.3 Interrupt Status Checking
The next stage is to capture which system interrupts are pending. There are two kinds of pending status:
raw status and enabled status. Raw status is the pending status of the system interrupt without regards to
the enable bit for the system interrupt. Enabled status is the pending status of the system interrupts with
the enable bits active. When the enable bit is inactive, the enabled status will always be inactive.
The enabled status of system interrupts is captured in system interrupt status enabled/clear registers
(SECR1-SECR4). Status of system interrupt 'N' is indicated by the Nth bit of SECR1-SECR4. Since there
exists 101 system interrupts, four 32-bit registers are used to capture the enabled status of interrupts.
The pending status reflects whether the system interrupt occurred since the last time the status register bit
was cleared. Each bit in the status register is individually clearable.
11.3.4 Interrupt Channel Mapping
The AINTC has 32 internal channels to which enabled system interrupts can be mapped. Higher priority
interrupts should be mapped to channels 0 and 1. Other interrupts can be mapped to any of the channels
from 2 to 31. Channel 0 has highest priority and channel 31 has the lowest priority. Channels 0 and 1 are
connected to FIQ ARM interrupt. Channels 2 to 31 are connected to IRQ ARM interrupt. Channels are
used to group the system interrupts into a smaller number of priorities that can be given to a host interface
with a very small number of interrupt inputs. When multiple system interrupts are mapped to the same
channel their interrupts are ORed together so that when either is active the output is active.
The channel map registers (CMR
m
) define the channel for each system interrupt. There is one register
per 4 system interrupts; therefore, there are 26 channel map registers (CMR0-CMR25) for a system of
101 interrupts. Channel for each system interrupt can be set using these registers.
11.3.5 Host Interrupt Mapping Interrupts
The Host is ARM9, which has two lines: FIQ and IRQ. The 32 channels from the AINTC are mapped to
these two lines. The AINTC has a fixed host interrupt mapping scheme. Channels 0 and 1 are mapped to
FIQ and channels 2-31 are mapped to IRQ. Thus, system interrupts mapped to channels 0 and 1 are
propagated as FIQ to the host and system interrupts mapped to channels 2-31 are propagated as IRQ to
the host. When multiple channels are mapped to the same host interrupt, then prioritization is done to
select which interrupt is in the highest-priority channel and which should be sent first to the host.