123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- * ImgTec Powerdown Controller (PDC) Interrupt Controller Binding
- This binding specifies what properties must be available in the device tree
- representation of a PDC IRQ controller. This has a number of input interrupt
- lines which can wake the system, and are passed on through output interrupt
- lines.
- Required properties:
- - compatible: Specifies the compatibility list for the interrupt controller.
- The type shall be <string> and the value shall include "img,pdc-intc".
- - reg: Specifies the base PDC physical address(s) and size(s) of the
- addressable register space. The type shall be <prop-encoded-array>.
- - interrupt-controller: The presence of this property identifies the node
- as an interrupt controller. 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.
- - num-perips: Number of waking peripherals.
- - num-syswakes: Number of SysWake inputs.
- - interrupts: List of interrupt specifiers. The first specifier shall be the
- shared SysWake interrupt, and remaining specifies shall be PDC peripheral
- interrupts in order.
- * Interrupt Specifier Definition
- Interrupt specifiers consists of 2 cells encoded as follows:
- - <1st-cell>: The interrupt-number that identifies the interrupt source.
- 0-7: Peripheral interrupts
- 8-15: SysWake interrupts
- - <2nd-cell>: The level-sense information, encoded using the Linux interrupt
- flags as follows (only 4 valid for peripheral interrupts):
- 0 = none (decided by software)
- 1 = low-to-high edge triggered
- 2 = high-to-low edge triggered
- 3 = both edge triggered
- 4 = active-high level-sensitive (required for perip irqs)
- 8 = active-low level-sensitive
- * Examples
- Example 1:
- /*
- * TZ1090 PDC block
- */
- pdc: pdc@0x02006000 {
- // This is an interrupt controller node.
- interrupt-controller;
- // Three cells to encode interrupt sources.
- #interrupt-cells = <2>;
- // Offset address of 0x02006000 and size of 0x1000.
- reg = <0x02006000 0x1000>;
- // Compatible with Meta hardware trigger block.
- compatible = "img,pdc-intc";
- // Three peripherals are connected.
- num-perips = <3>;
- // Four SysWakes are connected.
- num-syswakes = <4>;
- interrupts = <18 4 /* level */>, /* Syswakes */
- <30 4 /* level */>, /* Peripheral 0 (RTC) */
- <29 4 /* level */>, /* Peripheral 1 (IR) */
- <31 4 /* level */>; /* Peripheral 2 (WDT) */
- };
- Example 2:
- /*
- * An SoC peripheral that is wired through the PDC.
- */
- rtc0 {
- // The interrupt controller that this device is wired to.
- interrupt-parent = <&pdc>;
- // Interrupt source Peripheral 0
- interrupts = <0 /* Peripheral 0 (RTC) */
- 4> /* IRQ_TYPE_LEVEL_HIGH */
- };
- Example 3:
- /*
- * An interrupt generating device that is wired to a SysWake pin.
- */
- touchscreen0 {
- // The interrupt controller that this device is wired to.
- interrupt-parent = <&pdc>;
- // Interrupt source SysWake 0 that is active-low level-sensitive
- interrupts = <8 /* SysWake0 */
- 8 /* IRQ_TYPE_LEVEL_LOW */>;
- };
|