# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interrupt-controller/arm,gic-v5.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ARM Generic Interrupt Controller, version 5

maintainers:
  - Lorenzo Pieralisi <lpieralisi@kernel.org>
  - Marc Zyngier <maz@kernel.org>

description: |
  The GICv5 architecture defines the guidelines to implement GICv5
  compliant interrupt controllers for AArch64 systems.

  The GICv5 specification can be found at
  https://developer.arm.com/documentation/aes0070

  The GICv5 architecture is composed of multiple components:
    - one or more IRS (Interrupt Routing Service)
    - zero or more ITS (Interrupt Translation Service)

  The architecture defines:
    - PE-Private Peripheral Interrupts (PPI)
    - Shared Peripheral Interrupts (SPI)
    - Logical Peripheral Interrupts (LPI)

allOf:
  - $ref: /schemas/interrupt-controller.yaml#

properties:
  compatible:
    const: arm,gic-v5

  "#address-cells":
    enum: [ 1, 2 ]

  "#size-cells":
    enum: [ 1, 2 ]

  ranges: true

  "#interrupt-cells":
    description: |
      The 1st cell corresponds to the INTID.Type field in the INTID; 1 for PPI,
      3 for SPI. LPI interrupts must not be described in the bindings since
      they are allocated dynamically by the software component managing them.

      The 2nd cell contains the interrupt INTID.ID field.

      The 3rd cell is the flags, encoded as follows:
      bits[3:0] trigger type and level flags.

        1 = low-to-high edge triggered
        2 = high-to-low edge triggered
        4 = active high level-sensitive
        8 = active low level-sensitive

    const: 3

  interrupt-controller: true

  interrupts:
    description:
      The VGIC maintenance interrupt.
    maxItems: 1

required:
  - compatible
  - "#address-cells"
  - "#size-cells"
  - ranges
  - "#interrupt-cells"
  - interrupt-controller

patternProperties:
  "^irs@[0-9a-f]+$":
    type: object
    description:
      GICv5 has one or more Interrupt Routing Services (IRS) that are
      responsible for handling IRQ state and routing.

    additionalProperties: false

    properties:
      compatible:
        const: arm,gic-v5-irs

      reg:
        minItems: 1
        items:
          - description: IRS config frames
          - description: IRS setlpi frames

      reg-names:
        description:
          Describe config and setlpi frames that are present.
          "ns-" stands for non-secure, "s-" for secure, "realm-" for realm
          and "el3-" for EL3.
        minItems: 1
        maxItems: 8
        items:
          enum: [ ns-config, s-config, realm-config, el3-config, ns-setlpi,
                  s-setlpi, realm-setlpi, el3-setlpi ]

      "#address-cells":
        enum: [ 1, 2 ]

      "#size-cells":
        enum: [ 1, 2 ]

      ranges: true

      dma-noncoherent:
        description:
          Present if the GIC IRS permits programming shareability and
          cacheability attributes but is connected to a non-coherent
          downstream interconnect.

      cpus:
        description:
          CPUs managed by the IRS.

      arm,iaffids:
        $ref: /schemas/types.yaml#/definitions/uint16-array
        description:
          Interrupt AFFinity ID (IAFFID) associated with the CPU whose
          CPU node phandle is at the same index in the cpus array.

    patternProperties:
      "^its@[0-9a-f]+$":
        type: object
        description:
          GICv5 has zero or more Interrupt Translation Services (ITS) that are
          used to route Message Signalled Interrupts (MSI) to the CPUs. Each
          ITS is connected to an IRS.
        additionalProperties: false

        properties:
          compatible:
            const: arm,gic-v5-its

          reg:
            items:
              - description: ITS config frames

          reg-names:
            description:
              Describe config frames that are present.
              "ns-" stands for non-secure, "s-" for secure, "realm-" for realm
              and "el3-" for EL3.
            minItems: 1
            maxItems: 4
            items:
              enum: [ ns-config, s-config, realm-config, el3-config ]

          "#address-cells":
            enum: [ 1, 2 ]

          "#size-cells":
            enum: [ 1, 2 ]

          ranges: true

          dma-noncoherent:
            description:
              Present if the GIC ITS permits programming shareability and
              cacheability attributes but is connected to a non-coherent
              downstream interconnect.

        patternProperties:
          "^msi-controller@[0-9a-f]+$":
            type: object
            description:
              GICv5 ITS has one or more translate register frames.
            additionalProperties: false

            properties:
              reg:
                items:
                  - description: ITS translate frames

              reg-names:
                description:
                  Describe translate frames that are present.
                  "ns-" stands for non-secure, "s-" for secure, "realm-" for realm
                  and "el3-" for EL3.
                minItems: 1
                maxItems: 4
                items:
                  enum: [ ns-translate, s-translate, realm-translate, el3-translate ]

              "#msi-cells":
                description:
                  The single msi-cell is the DeviceID of the device which will
                  generate the MSI.
                const: 1

              msi-controller: true

            required:
              - reg
              - reg-names
              - "#msi-cells"
              - msi-controller

        required:
          - compatible
          - reg
          - reg-names

    required:
      - compatible
      - reg
      - reg-names
      - cpus
      - arm,iaffids

additionalProperties: false

examples:
  - |
    interrupt-controller {
      compatible = "arm,gic-v5";

      #interrupt-cells = <3>;
      interrupt-controller;

      #address-cells = <1>;
      #size-cells = <1>;
      ranges;

      interrupts = <1 25 4>;

      irs@2f1a0000 {
        compatible = "arm,gic-v5-irs";
        reg = <0x2f1a0000 0x10000>;  // IRS_CONFIG_FRAME
        reg-names = "ns-config";

        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        cpus = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>, <&cpu4>, <&cpu5>, <&cpu6>, <&cpu7>;
        arm,iaffids = /bits/ 16 <0 1 2 3 4 5 6 7>;

        its@2f120000 {
          compatible = "arm,gic-v5-its";
          reg = <0x2f120000 0x10000>;   // ITS_CONFIG_FRAME
          reg-names = "ns-config";

          #address-cells = <1>;
          #size-cells = <1>;
          ranges;

          msi-controller@2f130000 {
            reg = <0x2f130000 0x10000>;   // ITS_TRANSLATE_FRAME
            reg-names = "ns-translate";

            #msi-cells = <1>;
            msi-controller;
          };
        };
      };
    };
...
