xref: /linux/Documentation/devicetree/bindings/interrupt-controller/ti,sci-inta.yaml (revision c4dff06e79d99691f18dfc8a61a1cb17c602a025)
1*c4dff06eSLokesh Vutla# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*c4dff06eSLokesh Vutla%YAML 1.2
3*c4dff06eSLokesh Vutla---
4*c4dff06eSLokesh Vutla$id: http://devicetree.org/schemas/interrupt-controller/ti,sci-inta.yaml#
5*c4dff06eSLokesh Vutla$schema: http://devicetree.org/meta-schemas/core.yaml#
6*c4dff06eSLokesh Vutla
7*c4dff06eSLokesh Vutlatitle: Texas Instruments K3 Interrupt Aggregator
8*c4dff06eSLokesh Vutla
9*c4dff06eSLokesh Vutlamaintainers:
10*c4dff06eSLokesh Vutla  - Lokesh Vutla <lokeshvutla@ti.com>
11*c4dff06eSLokesh Vutla
12*c4dff06eSLokesh VutlaallOf:
13*c4dff06eSLokesh Vutla  - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
14*c4dff06eSLokesh Vutla
15*c4dff06eSLokesh Vutladescription: |
16*c4dff06eSLokesh Vutla  The Interrupt Aggregator (INTA) provides a centralized machine
17*c4dff06eSLokesh Vutla  which handles the termination of system events to that they can
18*c4dff06eSLokesh Vutla  be coherently processed by the host(s) in the system. A maximum
19*c4dff06eSLokesh Vutla  of 64 events can be mapped to a single interrupt.
20*c4dff06eSLokesh Vutla
21*c4dff06eSLokesh Vutla                                Interrupt Aggregator
22*c4dff06eSLokesh Vutla                       +-----------------------------------------+
23*c4dff06eSLokesh Vutla                       |      Intmap            VINT             |
24*c4dff06eSLokesh Vutla                       | +--------------+  +------------+        |
25*c4dff06eSLokesh Vutla              m ------>| | vint  | bit  |  | 0 |.....|63| vint0  |
26*c4dff06eSLokesh Vutla                 .     | +--------------+  +------------+        |      +------+
27*c4dff06eSLokesh Vutla                 .     |         .               .               |      | HOST |
28*c4dff06eSLokesh Vutla  Globalevents  ------>|         .               .               |----->| IRQ  |
29*c4dff06eSLokesh Vutla                 .     |         .               .               |      | CTRL |
30*c4dff06eSLokesh Vutla                 .     |         .               .               |      +------+
31*c4dff06eSLokesh Vutla              n ------>| +--------------+  +------------+        |
32*c4dff06eSLokesh Vutla                       | | vint  | bit  |  | 0 |.....|63| vintx  |
33*c4dff06eSLokesh Vutla                       | +--------------+  +------------+        |
34*c4dff06eSLokesh Vutla                       |                                         |
35*c4dff06eSLokesh Vutla                       +-----------------------------------------+
36*c4dff06eSLokesh Vutla
37*c4dff06eSLokesh Vutla  Configuration of these Intmap registers that maps global events to vint is
38*c4dff06eSLokesh Vutla  done by a system controller (like the Device Memory and Security Controller
39*c4dff06eSLokesh Vutla  on AM654 SoC). Driver should request the system controller to get the range
40*c4dff06eSLokesh Vutla  of global events and vints assigned to the requesting host. Management
41*c4dff06eSLokesh Vutla  of these requested resources should be handled by driver and requests
42*c4dff06eSLokesh Vutla  system controller to map specific global event to vint, bit pair.
43*c4dff06eSLokesh Vutla
44*c4dff06eSLokesh Vutla  Communication between the host processor running an OS and the system
45*c4dff06eSLokesh Vutla  controller happens through a protocol called TI System Control Interface
46*c4dff06eSLokesh Vutla  (TISCI protocol).
47*c4dff06eSLokesh Vutla
48*c4dff06eSLokesh Vutlaproperties:
49*c4dff06eSLokesh Vutla  compatible:
50*c4dff06eSLokesh Vutla    const: ti,sci-inta
51*c4dff06eSLokesh Vutla
52*c4dff06eSLokesh Vutla  reg:
53*c4dff06eSLokesh Vutla    maxItems: 1
54*c4dff06eSLokesh Vutla
55*c4dff06eSLokesh Vutla  interrupt-controller: true
56*c4dff06eSLokesh Vutla
57*c4dff06eSLokesh Vutla  msi-controller: true
58*c4dff06eSLokesh Vutla
59*c4dff06eSLokesh Vutla  ti,interrupt-ranges:
60*c4dff06eSLokesh Vutla    $ref: /schemas/types.yaml#/definitions/uint32-matrix
61*c4dff06eSLokesh Vutla    description: |
62*c4dff06eSLokesh Vutla      Interrupt ranges that converts the INTA output hw irq numbers
63*c4dff06eSLokesh Vutla      to parents's input interrupt numbers.
64*c4dff06eSLokesh Vutla    items:
65*c4dff06eSLokesh Vutla      items:
66*c4dff06eSLokesh Vutla        - description: |
67*c4dff06eSLokesh Vutla            "output_irq" specifies the base for inta output irq
68*c4dff06eSLokesh Vutla        - description: |
69*c4dff06eSLokesh Vutla            "parent's input irq" specifies the base for parent irq
70*c4dff06eSLokesh Vutla        - description: |
71*c4dff06eSLokesh Vutla            "limit" specifies the limit for translation
72*c4dff06eSLokesh Vutla
73*c4dff06eSLokesh Vutlarequired:
74*c4dff06eSLokesh Vutla  - compatible
75*c4dff06eSLokesh Vutla  - reg
76*c4dff06eSLokesh Vutla  - interrupt-controller
77*c4dff06eSLokesh Vutla  - msi-controller
78*c4dff06eSLokesh Vutla  - ti,sci
79*c4dff06eSLokesh Vutla  - ti,sci-dev-id
80*c4dff06eSLokesh Vutla  - ti,interrupt-ranges
81*c4dff06eSLokesh Vutla
82*c4dff06eSLokesh Vutlaexamples:
83*c4dff06eSLokesh Vutla  - |
84*c4dff06eSLokesh Vutla    bus {
85*c4dff06eSLokesh Vutla        #address-cells = <2>;
86*c4dff06eSLokesh Vutla        #size-cells = <2>;
87*c4dff06eSLokesh Vutla
88*c4dff06eSLokesh Vutla        main_udmass_inta: msi-controller@33d00000 {
89*c4dff06eSLokesh Vutla            compatible = "ti,sci-inta";
90*c4dff06eSLokesh Vutla            reg = <0x0 0x33d00000 0x0 0x100000>;
91*c4dff06eSLokesh Vutla            interrupt-controller;
92*c4dff06eSLokesh Vutla            msi-controller;
93*c4dff06eSLokesh Vutla            interrupt-parent = <&main_navss_intr>;
94*c4dff06eSLokesh Vutla            ti,sci = <&dmsc>;
95*c4dff06eSLokesh Vutla            ti,sci-dev-id = <179>;
96*c4dff06eSLokesh Vutla            ti,interrupt-ranges = <0 0 256>;
97*c4dff06eSLokesh Vutla        };
98*c4dff06eSLokesh Vutla    };
99