ERR003717
Chip Errata for the i.MX 6Dual/6Quad and i.MX 6DualPlus/6QuadPlus, Rev. 6.1, 06/2016
16
NXP Semiconductors
Description:
The Global Timer can be programmed to generate an interrupt request to the processor when it
reaches a given programmed value. Due to the erratum, when the Global Timer is programmed not
to use the auto-increment feature, it might generate two interrupt requests instead of one.
Conditions:
The Global Timer Control register is programmed with the following settings:
• Bit[3] = 1’b0 – Global Timer is programmed in “single-shot” mode
• Bit[2] = 1’b1 – Global Timer IRQ generation is enabled
• Bit[1] = 1’b1 – Global Timer value comparison with Comparator registers is enabled
• Bit[0] = 1’b1 – Global Timer count is enabled
With these settings, an IRQ is generated to the processor when the Global Timer value reaches the
value programmed in the Comparator registers.
The Interrupt Handler then performs the following sequence:
1. Read the ICCIAR (Interrupt Acknowledge) register
2. Clear the Global Timer flag
3. Modify the comparator value to set it to a higher value
4. Write the ICCEOIR (End of Interrupt) register
Under these conditions, due to the erratum, the Global Timer might generate a second (spurious)
interrupt request to the processor at the end of this Interrupt Handler sequence.
Projected Impact:
The erratum creates spurious interrupt requests in the system.
Workarounds:
Because the erratum only happens when the Global Timer is programmed in “single-shot” mode,
that is, when it does not use the auto-increment feature, a first possible workaround could be to
program the Global Timer to use the auto-increment feature.
If this solution does not work, a second workaround could be to modify the Interrupt Handler to
avoid the offending sequence. This is achieved by clearing the Global Timer flag after having
incremented the Comparator register value.
Then, the correct code sequence for the Interrupt Handler should look as below:
1. Read the ICCIAR (Interrupt Acknowledge) register
2. Modify the comparator value to set it to a higher value
3. Clear the Global Timer flag
4. Clear the Pending Status information for Interrupt 27 (Global Timer interrupt) in the
Distributor of the Interrupt Controller.
ERR003717
ARM: 740657—Global Timer can send two interrupts for the same
event