| * Open PIC Binding | |
| This binding specifies what properties must be available in the device tree | |
| representation of an Open PIC compliant interrupt controller. This binding is | |
| based on the binding defined for Open PIC in [1] and is a superset of that | |
| binding. | |
| Required properties: | |
| NOTE: Many of these descriptions were paraphrased here from [1] to aid | |
| readability. | |
| - compatible: Specifies the compatibility list for the PIC. The type | |
| shall be <string> and the value shall include "open-pic". | |
| - reg: Specifies the base physical address(s) and size(s) of this | |
| PIC's addressable register space. The type shall be <prop-encoded-array>. | |
| - interrupt-controller: The presence of this property identifies the node | |
| as an Open PIC. No property value shall be defined. | |
| - #interrupt-cells: Specifies the number of cells needed to encode an | |
| interrupt source. The type shall be a <u32> and the value shall be 2. | |
| - #address-cells: Specifies the number of cells needed to encode an | |
| address. The type shall be <u32> and the value shall be 0. As such, | |
| 'interrupt-map' nodes do not have to specify a parent unit address. | |
| Optional properties: | |
| - pic-no-reset: The presence of this property indicates that the PIC | |
| shall not be reset during runtime initialization. No property value shall | |
| be defined. The presence of this property also mandates that any | |
| initialization related to interrupt sources shall be limited to sources | |
| explicitly referenced in the device tree. | |
| * Interrupt Specifier Definition | |
| Interrupt specifiers consists of 2 cells encoded as | |
| follows: | |
| - <1st-cell>: The interrupt-number that identifies the interrupt source. | |
| - <2nd-cell>: The level-sense information, encoded as follows: | |
| 0 = low-to-high edge triggered | |
| 1 = active low level-sensitive | |
| 2 = active high level-sensitive | |
| 3 = high-to-low edge triggered | |
| * Examples | |
| Example 1: | |
| /* | |
| * An Open PIC interrupt controller | |
| */ | |
| mpic: pic@40000 { | |
| // This is an interrupt controller node. | |
| interrupt-controller; | |
| // No address cells so that 'interrupt-map' nodes which reference | |
| // this Open PIC node do not need a parent address specifier. | |
| #address-cells = <0>; | |
| // Two cells to encode interrupt sources. | |
| #interrupt-cells = <2>; | |
| // Offset address of 0x40000 and size of 0x40000. | |
| reg = <0x40000 0x40000>; | |
| // Compatible with Open PIC. | |
| compatible = "open-pic"; | |
| // The PIC shall not be reset. | |
| pic-no-reset; | |
| }; | |
| Example 2: | |
| /* | |
| * An interrupt generating device that is wired to an Open PIC. | |
| */ | |
| serial0: serial@4500 { | |
| // Interrupt source '42' that is active high level-sensitive. | |
| // Note that there are only two cells as specified in the interrupt | |
| // parent's '#interrupt-cells' property. | |
| interrupts = <42 2>; | |
| // The interrupt controller that this device is wired to. | |
| interrupt-parent = <&mpic>; | |
| }; | |
| * References | |
| [1] Power.org (TM) Standard for Embedded Power Architecture (TM) Platform | |
| Requirements (ePAPR), Version 1.0, July 2008. | |
| (http://www.power.org/resources/downloads/Power_ePAPR_APPROVED_v1.0.pdf) | |