1*eb3fcf00SRob Herring* ImgTec Powerdown Controller (PDC) Interrupt Controller Binding 2*eb3fcf00SRob Herring 3*eb3fcf00SRob HerringThis binding specifies what properties must be available in the device tree 4*eb3fcf00SRob Herringrepresentation of a PDC IRQ controller. This has a number of input interrupt 5*eb3fcf00SRob Herringlines which can wake the system, and are passed on through output interrupt 6*eb3fcf00SRob Herringlines. 7*eb3fcf00SRob Herring 8*eb3fcf00SRob HerringRequired properties: 9*eb3fcf00SRob Herring 10*eb3fcf00SRob Herring - compatible: Specifies the compatibility list for the interrupt controller. 11*eb3fcf00SRob Herring The type shall be <string> and the value shall include "img,pdc-intc". 12*eb3fcf00SRob Herring 13*eb3fcf00SRob Herring - reg: Specifies the base PDC physical address(s) and size(s) of the 14*eb3fcf00SRob Herring addressable register space. The type shall be <prop-encoded-array>. 15*eb3fcf00SRob Herring 16*eb3fcf00SRob Herring - interrupt-controller: The presence of this property identifies the node 17*eb3fcf00SRob Herring as an interrupt controller. No property value shall be defined. 18*eb3fcf00SRob Herring 19*eb3fcf00SRob Herring - #interrupt-cells: Specifies the number of cells needed to encode an 20*eb3fcf00SRob Herring interrupt source. The type shall be a <u32> and the value shall be 2. 21*eb3fcf00SRob Herring 22*eb3fcf00SRob Herring - num-perips: Number of waking peripherals. 23*eb3fcf00SRob Herring 24*eb3fcf00SRob Herring - num-syswakes: Number of SysWake inputs. 25*eb3fcf00SRob Herring 26*eb3fcf00SRob Herring - interrupts: List of interrupt specifiers. The first specifier shall be the 27*eb3fcf00SRob Herring shared SysWake interrupt, and remaining specifies shall be PDC peripheral 28*eb3fcf00SRob Herring interrupts in order. 29*eb3fcf00SRob Herring 30*eb3fcf00SRob Herring* Interrupt Specifier Definition 31*eb3fcf00SRob Herring 32*eb3fcf00SRob Herring Interrupt specifiers consists of 2 cells encoded as follows: 33*eb3fcf00SRob Herring 34*eb3fcf00SRob Herring - <1st-cell>: The interrupt-number that identifies the interrupt source. 35*eb3fcf00SRob Herring 0-7: Peripheral interrupts 36*eb3fcf00SRob Herring 8-15: SysWake interrupts 37*eb3fcf00SRob Herring 38*eb3fcf00SRob Herring - <2nd-cell>: The level-sense information, encoded using the Linux interrupt 39*eb3fcf00SRob Herring flags as follows (only 4 valid for peripheral interrupts): 40*eb3fcf00SRob Herring 0 = none (decided by software) 41*eb3fcf00SRob Herring 1 = low-to-high edge triggered 42*eb3fcf00SRob Herring 2 = high-to-low edge triggered 43*eb3fcf00SRob Herring 3 = both edge triggered 44*eb3fcf00SRob Herring 4 = active-high level-sensitive (required for perip irqs) 45*eb3fcf00SRob Herring 8 = active-low level-sensitive 46*eb3fcf00SRob Herring 47*eb3fcf00SRob Herring* Examples 48*eb3fcf00SRob Herring 49*eb3fcf00SRob HerringExample 1: 50*eb3fcf00SRob Herring 51*eb3fcf00SRob Herring /* 52*eb3fcf00SRob Herring * TZ1090 PDC block 53*eb3fcf00SRob Herring */ 54*eb3fcf00SRob Herring pdc: pdc@0x02006000 { 55*eb3fcf00SRob Herring // This is an interrupt controller node. 56*eb3fcf00SRob Herring interrupt-controller; 57*eb3fcf00SRob Herring 58*eb3fcf00SRob Herring // Three cells to encode interrupt sources. 59*eb3fcf00SRob Herring #interrupt-cells = <2>; 60*eb3fcf00SRob Herring 61*eb3fcf00SRob Herring // Offset address of 0x02006000 and size of 0x1000. 62*eb3fcf00SRob Herring reg = <0x02006000 0x1000>; 63*eb3fcf00SRob Herring 64*eb3fcf00SRob Herring // Compatible with Meta hardware trigger block. 65*eb3fcf00SRob Herring compatible = "img,pdc-intc"; 66*eb3fcf00SRob Herring 67*eb3fcf00SRob Herring // Three peripherals are connected. 68*eb3fcf00SRob Herring num-perips = <3>; 69*eb3fcf00SRob Herring 70*eb3fcf00SRob Herring // Four SysWakes are connected. 71*eb3fcf00SRob Herring num-syswakes = <4>; 72*eb3fcf00SRob Herring 73*eb3fcf00SRob Herring interrupts = <18 4 /* level */>, /* Syswakes */ 74*eb3fcf00SRob Herring <30 4 /* level */>, /* Peripheral 0 (RTC) */ 75*eb3fcf00SRob Herring <29 4 /* level */>, /* Peripheral 1 (IR) */ 76*eb3fcf00SRob Herring <31 4 /* level */>; /* Peripheral 2 (WDT) */ 77*eb3fcf00SRob Herring }; 78*eb3fcf00SRob Herring 79*eb3fcf00SRob HerringExample 2: 80*eb3fcf00SRob Herring 81*eb3fcf00SRob Herring /* 82*eb3fcf00SRob Herring * An SoC peripheral that is wired through the PDC. 83*eb3fcf00SRob Herring */ 84*eb3fcf00SRob Herring rtc0 { 85*eb3fcf00SRob Herring // The interrupt controller that this device is wired to. 86*eb3fcf00SRob Herring interrupt-parent = <&pdc>; 87*eb3fcf00SRob Herring 88*eb3fcf00SRob Herring // Interrupt source Peripheral 0 89*eb3fcf00SRob Herring interrupts = <0 /* Peripheral 0 (RTC) */ 90*eb3fcf00SRob Herring 4> /* IRQ_TYPE_LEVEL_HIGH */ 91*eb3fcf00SRob Herring }; 92*eb3fcf00SRob Herring 93*eb3fcf00SRob HerringExample 3: 94*eb3fcf00SRob Herring 95*eb3fcf00SRob Herring /* 96*eb3fcf00SRob Herring * An interrupt generating device that is wired to a SysWake pin. 97*eb3fcf00SRob Herring */ 98*eb3fcf00SRob Herring touchscreen0 { 99*eb3fcf00SRob Herring // The interrupt controller that this device is wired to. 100*eb3fcf00SRob Herring interrupt-parent = <&pdc>; 101*eb3fcf00SRob Herring 102*eb3fcf00SRob Herring // Interrupt source SysWake 0 that is active-low level-sensitive 103*eb3fcf00SRob Herring interrupts = <8 /* SysWake0 */ 104*eb3fcf00SRob Herring 8 /* IRQ_TYPE_LEVEL_LOW */>; 105*eb3fcf00SRob Herring }; 106