1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- Specifying interrupt information for devices
- ============================================
- 1) Interrupt client nodes
- -------------------------
- Nodes that describe devices which generate interrupts must contain an
- "interrupts" property. This property must contain a list of interrupt
- specifiers, one per output interrupt. The format of the interrupt specifier is
- determined by the interrupt controller to which the interrupts are routed; see
- section 2 below for details.
- The "interrupt-parent" property is used to specify the controller to which
- interrupts are routed and contains a single phandle referring to the interrupt
- controller node. This property is inherited, so it may be specified in an
- interrupt client node or in any of its parent nodes.
- 2) Interrupt controller nodes
- -----------------------------
- A device is marked as an interrupt controller with the "interrupt-controller"
- property. This is a empty, boolean property. An additional "#interrupt-cells"
- property defines the number of cells needed to specify a single interrupt.
- It is the responsibility of the interrupt controller's binding to define the
- length and format of the interrupt specifier. The following two variants are
- commonly used:
- a) one cell
- -----------
- The #interrupt-cells property is set to 1 and the single cell defines the
- index of the interrupt within the controller.
- Example:
- vic: intc@10140000 {
- compatible = "arm,versatile-vic";
- interrupt-controller;
- #interrupt-cells = <1>;
- reg = <0x10140000 0x1000>;
- };
- sic: intc@10003000 {
- compatible = "arm,versatile-sic";
- interrupt-controller;
- #interrupt-cells = <1>;
- reg = <0x10003000 0x1000>;
- interrupt-parent = <&vic>;
- interrupts = <31>; /* Cascaded to vic */
- };
- b) two cells
- ------------
- The #interrupt-cells property is set to 2 and the first cell defines the
- index of the interrupt within the controller, while the second cell is used
- to specify any of the following flags:
- - bits[3:0] trigger type and level flags
- 1 = low-to-high edge triggered
- 2 = high-to-low edge triggered
- 4 = active high level-sensitive
- 8 = active low level-sensitive
- Example:
- i2c@7000c000 {
- gpioext: gpio-adnp@41 {
- compatible = "ad,gpio-adnp";
- reg = <0x41>;
- interrupt-parent = <&gpio>;
- interrupts = <160 1>;
- gpio-controller;
- #gpio-cells = <1>;
- interrupt-controller;
- #interrupt-cells = <2>;
- nr-gpios = <64>;
- };
- sx8634@2b {
- compatible = "smtc,sx8634";
- reg = <0x2b>;
- interrupt-parent = <&gpioext>;
- interrupts = <3 0x8>;
- #address-cells = <1>;
- #size-cells = <0>;
- threshold = <0x40>;
- sensitivity = <7>;
- };
- };
|