### Xilinx Processor IP Library

Software Drivers

Main Page | Data Structures | File List | Data Fields | Globals

# intc v1_11_a

The Xilinx interrupt controller driver component. This component supports the Xilinx interrupt controller.

The interrupt controller driver uses the idea of priority for the various handlers. Priority is an integer within the range of 0 and 31 inclusive with 0 being the highest priority interrupt source.

The Xilinx interrupt controller supports the following features:

- specific individual interrupt enabling/disabling
- specific individual interrupt acknowledging
- attaching specific callback function to handle interrupt source
- master enable/disable
- single callback per interrupt or all pending interrupts handled for each interrupt of the processor

The acknowledgement of the interrupt within the interrupt controller is selectable, either prior to the device's handler being called or after the handler is called. This is necessary to support interrupt signal inputs which are either edge or level signals. Edge driven interrupt signals require that the interrupt is acknowledged prior to the interrupt being serviced in order to prevent the loss of interrupts which are occurring extremely close together. A level driven interrupt input signal requires the interrupt to acknowledged after servicing the interrupt to ensure that the interrupt only generates a single interrupt condition.

Details about connecting the interrupt handler of the driver are contained in the source file specific to interrupt processing, xintc_intr.c.

This driver is intended to be RTOS and processor independent. It works with physical addresses only. Any needs for dynamic memory management, threads or thread mutual exclusion, virtual memory, or cache control must be satisfied by the layer above this driver.

Interrupt Vector Tables

The interrupt vector table for each interrupt controller device is declared statically in xintc_g.c within the configuration data for each instance. The device ID of the interrupt controller device is used by the driver as a direct index into the configuration data table - to retrieve the vector table for an instance of the interrupt controller. The user should populate the vector table with handlers and callbacks at run-time using the XIntc_Connect() and XIntc_Disconnect() functions.

Each vector table entry corresponds to a device that can generate an interrupt. Each entry contains an interrupt handler function and an argument to be passed to the handler when an interrupt occurs. The tools default this argument to the base address of the interrupting device. Note that the device driver interrupt handlers given in this file do not take a base address as an argument, but instead take a pointer to the driver instance. This means that although the table is created statically, the user must still use XIntc_Connect() when the interrupt handler takes an argument other than the base address. This is only to say that the existence of the static vector tables should not mislead the user into thinking they no longer need to register/connect interrupt handlers with this driver.

     MODIFICATION HISTORY:

     Ver   Who  Date     Changes
     ----- ---- -------- -------------------------------------------------------
     1.00a ecm  08/16/01 First release
     1.00a rpm  01/09/02 Removed the AckLocation argument from XIntc_Connect().
                         This information is now internal in xintc_g.c.
     1.00b jhl  02/13/02 Repartitioned the driver for smaller files
     1.00b jhl  04/24/02 Made LookupConfig function global and relocated config
                         data type
     1.00c rpm  10/17/03 New release. Support the static vector table created
                         in the xintc_g.c configuration table. Moved vector
                         table and options out of instance structure and into
                         the configuration table.
     1.10c mta  03/21/07 Updated to new coding style
     1.11a sv   11/21/07 Updated driver to support access through a DCR bridge

Copyright © 1995-2009 Xilinx, Inc. All rights reserved.