Commit eb4d5a82 authored by Rob Herring (Arm)'s avatar Rob Herring (Arm)
Browse files

dt-bindings: interrupt-controller: Convert img,pdc-intc to DT schema

Convert the ImgTec Powerdown Controller (PDC) interrupt controller
binding to schema format. It's a straight-forward conversion of the
typical interrupt controller.

Link: https://lore.kernel.org/r/20250505144703.1289335-1-robh@kernel.org


Signed-off-by: default avatarRob Herring (Arm) <robh@kernel.org>
parent ee35e2ae
Loading
Loading
Loading
Loading
+0 −105
Original line number Diff line number Diff line
* 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@02006000 {
		// 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 */>;
	};
+79 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interrupt-controller/img,pdc-intc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ImgTec Powerdown Controller (PDC) Interrupt Controller

maintainers:
  - James Hogan <jhogan@kernel.org>

description:
  ImgTec Powerdown Controller (PDC) Interrupt Controller has a number of input
  interrupt lines which can wake the system, and are passed on through output
  interrupt lines.

properties:
  compatible:
    const: img,pdc-intc

  reg:
    maxItems: 1

  interrupt-controller: true

  '#interrupt-cells':
    description: >
      <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
    const: 2

  num-perips:
    description: Number of waking peripherals
    $ref: /schemas/types.yaml#/definitions/uint32
    maximum: 8

  num-syswakes:
    description: Number of SysWake inputs
    $ref: /schemas/types.yaml#/definitions/uint32
    maximum: 8

  interrupts:
    description:
      First entry is syswake IRQ. Subsequent entries are 1 per peripheral.
    minItems: 2
    maxItems: 9

required:
  - compatible
  - reg
  - interrupt-controller
  - '#interrupt-cells'
  - num-perips
  - num-syswakes
  - interrupts

additionalProperties: false

examples:
  - |
    interrupt-controller@2006000 {
        compatible = "img,pdc-intc";
        reg = <0x02006000 0x1000>;
        interrupts = <18 4>, <30 4>, <29 4>, <31 4>;
        interrupt-controller;
        #interrupt-cells = <2>;
        num-perips = <3>;
        num-syswakes = <4>;
    };