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