| Texas Instruments K3 Interrupt Aggregator |
| ========================================= |
| |
| The Interrupt Aggregator (INTA) provides a centralized machine |
| which handles the termination of system events to that they can |
| be coherently processed by the host(s) in the system. A maximum |
| of 64 events can be mapped to a single interrupt. |
| |
| |
| Interrupt Aggregator |
| +-----------------------------------------+ |
| | Intmap VINT | |
| | +--------------+ +------------+ | |
| m ------>| | vint | bit | | 0 |.....|63| vint0 | |
| . | +--------------+ +------------+ | +------+ |
| . | . . | | HOST | |
| Globalevents ------>| . . |------>| IRQ | |
| . | . . | | CTRL | |
| . | . . | +------+ |
| n ------>| +--------------+ +------------+ | |
| | | vint | bit | | 0 |.....|63| vintx | |
| | +--------------+ +------------+ | |
| | | |
| +-----------------------------------------+ |
| |
| Configuration of these Intmap registers that maps global events to vint is done |
| by a system controller (like the Device Memory and Security Controller on K3 |
| AM654 SoC). Driver should request the system controller to get the range |
| of global events and vints assigned to the requesting host. Management |
| of these requested resources should be handled by driver and requests |
| system controller to map specific global event to vint, bit pair. |
| |
| Communication between the host processor running an OS and the system |
| controller happens through a protocol called TI System Control Interface |
| (TISCI protocol). For more details refer: |
| Documentation/devicetree/bindings/arm/keystone/ti,sci.txt |
| |
| TISCI Interrupt Aggregator Node: |
| ------------------------------- |
| - compatible: Must be "ti,sci-inta". |
| - reg: Should contain registers location and length. |
| - interrupt-controller: Identifies the node as an interrupt controller |
| - msi-controller: Identifies the node as an MSI controller. |
| - interrupt-parent: phandle of irq parent. |
| - ti,sci: Phandle to TI-SCI compatible System controller node. |
| - ti,sci-dev-id: TISCI device ID of the Interrupt Aggregator. |
| - ti,sci-rm-range-vint: Array of TISCI subtype ids representing vints(inta |
| outputs) range within this INTA, assigned to the |
| requesting host context. |
| - ti,sci-rm-range-global-event: Array of TISCI subtype ids representing the |
| global events range reaching this IA and are assigned |
| to the requesting host context. |
| |
| Example: |
| -------- |
| main_udmass_inta: interrupt-controller@33d00000 { |
| compatible = "ti,sci-inta"; |
| reg = <0x0 0x33d00000 0x0 0x100000>; |
| interrupt-controller; |
| msi-controller; |
| interrupt-parent = <&main_navss_intr>; |
| ti,sci = <&dmsc>; |
| ti,sci-dev-id = <179>; |
| ti,sci-rm-range-vint = <0x0>; |
| ti,sci-rm-range-global-event = <0x1>; |
| }; |