123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- Specifying interrupt information for devices
- ============================================
- 1) Interrupt client nodes
- -------------------------
- Nodes that describe devices which generate interrupts must contain an
- "interrupts" property, an "interrupts-extended" property, or both. If both are
- present, the latter should take precedence; the former may be provided simply
- for compatibility with software that does not recognize the latter. These
- properties 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.
- Example:
- interrupt-parent = <&intc1>;
- interrupts = <5 0>, <6 0>;
- 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. Interrupts listed in the
- "interrupts" property are always in reference to the node's interrupt parent.
- The "interrupts-extended" property is a special form for use when a node needs
- to reference multiple interrupt parents. Each entry in this property contains
- both the parent phandle and the interrupt specifier. "interrupts-extended"
- should only be used when a device has multiple interrupt parents.
- Example:
- interrupts-extended = <&intc1 5 1>, <&intc2 1 0>;
- 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>;
- };
- };
|