| * 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] Devicetree Specification |
| (https://www.devicetree.org/specifications/) |
| |