AR# 70116


Zynq UltraScale+ RPU interrupt from PL


I want to use IRQ from the PL (read as legacy PPI), but I cannot use GIC as it is.

Is there any use-case for RPU based interrupts?


PPI and FIQ inputs coming from the PL are not controlled by the RPU GIC.

They are connected directly to RPUs through the MUX which has other input from the GIC.

In order to use the external signals as interrupts to the RPU, you will need to disable the RPU GIC.

Please see the below screen capture:





The best solution is to disable FIQ from GIC.

You can then use GIC for IRQs from the PS and can use FIQ from the PL directly.

For demonstration purposes, an example SDK workspace is attached which has the following options in the application:

  1. When the PPI_FIQ flag is used, IRQ (PPI) and FIQ will be generated from the PL lines. However GIC is fully disabled so the user cannot get any other interrupt.
  2. When the SPI_FIQ (proposed solution) flag is used, IRQ (SPI from PL) and FIQ will be generated from the PL lines. GIC is available for other interrupts.
  3. When both the PPI_FIQ and SPI_FIQ flags are commented, it will behave the same as (2) but Software interrupt is used for IRQ instead of SPI.


Attached is the available work-around on RPU (R5 processor) for interrupt from the PL. 

See the working_intr_eg application project.






FIQ has been kept for all test cases.

            while (1) {
                         * If the interrupt occurred which is indicated by the global
                         * variable which is set in the device driver handler, then
                         * stop waiting
                        if (InterruptProcessed && FiqProcessed) {


Associated Attachments

Name File Size File Type 119 KB ZIP
AR# 70116
Date 11/24/2017
Status Active
Type General Article
Boards & Kits
People Also Viewed