162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/interrupt-controller/ti,sci-inta.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Texas Instruments K3 Interrupt Aggregator
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Lokesh Vutla <lokeshvutla@ti.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciallOf:
1362306a36Sopenharmony_ci  - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cidescription: |
1662306a36Sopenharmony_ci  The Interrupt Aggregator (INTA) provides a centralized machine
1762306a36Sopenharmony_ci  which handles the termination of system events to that they can
1862306a36Sopenharmony_ci  be coherently processed by the host(s) in the system. A maximum
1962306a36Sopenharmony_ci  of 64 events can be mapped to a single interrupt.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci                                Interrupt Aggregator
2262306a36Sopenharmony_ci                       +-----------------------------------------+
2362306a36Sopenharmony_ci                       |      Intmap            VINT             |
2462306a36Sopenharmony_ci                       | +--------------+  +------------+        |
2562306a36Sopenharmony_ci              m ------>| | vint  | bit  |  | 0 |.....|63| vint0  |
2662306a36Sopenharmony_ci                 .     | +--------------+  +------------+        |      +------+
2762306a36Sopenharmony_ci                 .     |         .               .               |      | HOST |
2862306a36Sopenharmony_ci  Globalevents  ------>|         .               .               |----->| IRQ  |
2962306a36Sopenharmony_ci                 .     |         .               .               |      | CTRL |
3062306a36Sopenharmony_ci                 .     |         .               .               |      +------+
3162306a36Sopenharmony_ci              n ------>| +--------------+  +------------+        |
3262306a36Sopenharmony_ci                       | | vint  | bit  |  | 0 |.....|63| vintx  |
3362306a36Sopenharmony_ci                       | +--------------+  +------------+        |
3462306a36Sopenharmony_ci                       |                                         |
3562306a36Sopenharmony_ci                       |      Unmap                              |
3662306a36Sopenharmony_ci                       | +--------------+                        |
3762306a36Sopenharmony_ci  Unmapped events ---->| |   umapidx    |-------------------------> Globalevents
3862306a36Sopenharmony_ci                       | +--------------+                        |
3962306a36Sopenharmony_ci                       |                                         |
4062306a36Sopenharmony_ci                       +-----------------------------------------+
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  Configuration of these Intmap registers that maps global events to vint is
4362306a36Sopenharmony_ci  done by a system controller (like the Device Memory and Security Controller
4462306a36Sopenharmony_ci  on AM654 SoC). Driver should request the system controller to get the range
4562306a36Sopenharmony_ci  of global events and vints assigned to the requesting host. Management
4662306a36Sopenharmony_ci  of these requested resources should be handled by driver and requests
4762306a36Sopenharmony_ci  system controller to map specific global event to vint, bit pair.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  Communication between the host processor running an OS and the system
5062306a36Sopenharmony_ci  controller happens through a protocol called TI System Control Interface
5162306a36Sopenharmony_ci  (TISCI protocol).
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciproperties:
5462306a36Sopenharmony_ci  compatible:
5562306a36Sopenharmony_ci    const: ti,sci-inta
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  reg:
5862306a36Sopenharmony_ci    maxItems: 1
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  interrupt-controller: true
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  '#interrupt-cells':
6362306a36Sopenharmony_ci    const: 0
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  msi-controller: true
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  ti,interrupt-ranges:
6862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-matrix
6962306a36Sopenharmony_ci    description: |
7062306a36Sopenharmony_ci      Interrupt ranges that converts the INTA output hw irq numbers
7162306a36Sopenharmony_ci      to parents's input interrupt numbers.
7262306a36Sopenharmony_ci    items:
7362306a36Sopenharmony_ci      items:
7462306a36Sopenharmony_ci        - description: |
7562306a36Sopenharmony_ci            "output_irq" specifies the base for inta output irq
7662306a36Sopenharmony_ci        - description: |
7762306a36Sopenharmony_ci            "parent's input irq" specifies the base for parent irq
7862306a36Sopenharmony_ci        - description: |
7962306a36Sopenharmony_ci            "limit" specifies the limit for translation
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci  ti,unmapped-event-sources:
8262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
8362306a36Sopenharmony_ci    items:
8462306a36Sopenharmony_ci      maxItems: 1
8562306a36Sopenharmony_ci    description:
8662306a36Sopenharmony_ci      Array of phandles to DMA controllers where the unmapped events originate.
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci  power-domains:
8962306a36Sopenharmony_ci    maxItems: 1
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_cirequired:
9262306a36Sopenharmony_ci  - compatible
9362306a36Sopenharmony_ci  - reg
9462306a36Sopenharmony_ci  - interrupt-controller
9562306a36Sopenharmony_ci  - msi-controller
9662306a36Sopenharmony_ci  - ti,sci
9762306a36Sopenharmony_ci  - ti,sci-dev-id
9862306a36Sopenharmony_ci  - ti,interrupt-ranges
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ciunevaluatedProperties: false
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciexamples:
10362306a36Sopenharmony_ci  - |
10462306a36Sopenharmony_ci    bus {
10562306a36Sopenharmony_ci        #address-cells = <2>;
10662306a36Sopenharmony_ci        #size-cells = <2>;
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci        main_udmass_inta: msi-controller@33d00000 {
10962306a36Sopenharmony_ci            compatible = "ti,sci-inta";
11062306a36Sopenharmony_ci            reg = <0x0 0x33d00000 0x0 0x100000>;
11162306a36Sopenharmony_ci            interrupt-controller;
11262306a36Sopenharmony_ci            msi-controller;
11362306a36Sopenharmony_ci            interrupt-parent = <&main_navss_intr>;
11462306a36Sopenharmony_ci            ti,sci = <&dmsc>;
11562306a36Sopenharmony_ci            ti,sci-dev-id = <179>;
11662306a36Sopenharmony_ci            ti,interrupt-ranges = <0 0 256>;
11762306a36Sopenharmony_ci        };
11862306a36Sopenharmony_ci    };
119