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