Legacy Interrupt Operation

In legacy mode, the PCIe Controller emulates the four PCI interrupt pins (INTA_IN, INTB_IN, INTC_IN, and INTD_IN). Multiple functions can share the same interrupt pin. On the endpoint side, the client signals interrupt conditions to the PCIe Controller using four distinct interrupt inputs.

Figure 1. Legacy Endpoint Interrupt Interface

The PCIe Controller communicates the state of each interrupt input by sending Assert_INTx or Deassert_INTx messages on the PCIe link. It sends an assert message when the corresponding interrupt input transitions from low to high, and sends a de-assert message when the input transitions back to low. The high-to-low transition usually occurs when the interrupt has been serviced.

After signaling each transition, the client must wait for the PCIe Controller to assert INT_ACK before signaling another transition on the same interrupt pin.

You can modify the default interrupt assignments by writing to the Interrupt Pin register through the local management bus.

The client must provide the interrupt pending status of each of its functions to the PCIe Controller through the PCIe Controller's INT_PENDING_STATUS input, so that the status can be read from the PCIe link through the function's PCI Status Register. The client must set INT_PENDING_STATUS high when there is an interrupt pending from the function, and set it low when the interrupt has been serviced.

Note: You cannot use MSI or MSI-X interrupts when using legacy interrupts. The client must also check the state of the INTx disable bits in the associated function's PCI Command Register before generating a legacy interrupt. The INTx disable bit states are available in the PCIe Controller's FUNCTION_STATUS output.