xref: /openbmc/linux/Documentation/devicetree/bindings/interrupt-controller/img,pdc-intc.txt (revision eb3fcf007fffe5830d815e713591f3e858f2a365)
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