1*c66ec88fSEmmanuel VadotTexas Instruments K3 Interrupt Aggregator 2*c66ec88fSEmmanuel Vadot========================================= 3*c66ec88fSEmmanuel Vadot 4*c66ec88fSEmmanuel VadotThe Interrupt Aggregator (INTA) provides a centralized machine 5*c66ec88fSEmmanuel Vadotwhich handles the termination of system events to that they can 6*c66ec88fSEmmanuel Vadotbe coherently processed by the host(s) in the system. A maximum 7*c66ec88fSEmmanuel Vadotof 64 events can be mapped to a single interrupt. 8*c66ec88fSEmmanuel Vadot 9*c66ec88fSEmmanuel Vadot 10*c66ec88fSEmmanuel Vadot Interrupt Aggregator 11*c66ec88fSEmmanuel Vadot +-----------------------------------------+ 12*c66ec88fSEmmanuel Vadot | Intmap VINT | 13*c66ec88fSEmmanuel Vadot | +--------------+ +------------+ | 14*c66ec88fSEmmanuel Vadot m ------>| | vint | bit | | 0 |.....|63| vint0 | 15*c66ec88fSEmmanuel Vadot . | +--------------+ +------------+ | +------+ 16*c66ec88fSEmmanuel Vadot . | . . | | HOST | 17*c66ec88fSEmmanuel VadotGlobalevents ------>| . . |------>| IRQ | 18*c66ec88fSEmmanuel Vadot . | . . | | CTRL | 19*c66ec88fSEmmanuel Vadot . | . . | +------+ 20*c66ec88fSEmmanuel Vadot n ------>| +--------------+ +------------+ | 21*c66ec88fSEmmanuel Vadot | | vint | bit | | 0 |.....|63| vintx | 22*c66ec88fSEmmanuel Vadot | +--------------+ +------------+ | 23*c66ec88fSEmmanuel Vadot | | 24*c66ec88fSEmmanuel Vadot +-----------------------------------------+ 25*c66ec88fSEmmanuel Vadot 26*c66ec88fSEmmanuel VadotConfiguration of these Intmap registers that maps global events to vint is done 27*c66ec88fSEmmanuel Vadotby a system controller (like the Device Memory and Security Controller on K3 28*c66ec88fSEmmanuel VadotAM654 SoC). Driver should request the system controller to get the range 29*c66ec88fSEmmanuel Vadotof global events and vints assigned to the requesting host. Management 30*c66ec88fSEmmanuel Vadotof these requested resources should be handled by driver and requests 31*c66ec88fSEmmanuel Vadotsystem controller to map specific global event to vint, bit pair. 32*c66ec88fSEmmanuel Vadot 33*c66ec88fSEmmanuel VadotCommunication between the host processor running an OS and the system 34*c66ec88fSEmmanuel Vadotcontroller happens through a protocol called TI System Control Interface 35*c66ec88fSEmmanuel Vadot(TISCI protocol). For more details refer: 36*c66ec88fSEmmanuel VadotDocumentation/devicetree/bindings/arm/keystone/ti,sci.txt 37*c66ec88fSEmmanuel Vadot 38*c66ec88fSEmmanuel VadotTISCI Interrupt Aggregator Node: 39*c66ec88fSEmmanuel Vadot------------------------------- 40*c66ec88fSEmmanuel Vadot- compatible: Must be "ti,sci-inta". 41*c66ec88fSEmmanuel Vadot- reg: Should contain registers location and length. 42*c66ec88fSEmmanuel Vadot- interrupt-controller: Identifies the node as an interrupt controller 43*c66ec88fSEmmanuel Vadot- msi-controller: Identifies the node as an MSI controller. 44*c66ec88fSEmmanuel Vadot- interrupt-parent: phandle of irq parent. 45*c66ec88fSEmmanuel Vadot- ti,sci: Phandle to TI-SCI compatible System controller node. 46*c66ec88fSEmmanuel Vadot- ti,sci-dev-id: TISCI device ID of the Interrupt Aggregator. 47*c66ec88fSEmmanuel Vadot- ti,sci-rm-range-vint: Array of TISCI subtype ids representing vints(inta 48*c66ec88fSEmmanuel Vadot outputs) range within this INTA, assigned to the 49*c66ec88fSEmmanuel Vadot requesting host context. 50*c66ec88fSEmmanuel Vadot- ti,sci-rm-range-global-event: Array of TISCI subtype ids representing the 51*c66ec88fSEmmanuel Vadot global events range reaching this IA and are assigned 52*c66ec88fSEmmanuel Vadot to the requesting host context. 53*c66ec88fSEmmanuel Vadot 54*c66ec88fSEmmanuel VadotExample: 55*c66ec88fSEmmanuel Vadot-------- 56*c66ec88fSEmmanuel Vadotmain_udmass_inta: interrupt-controller@33d00000 { 57*c66ec88fSEmmanuel Vadot compatible = "ti,sci-inta"; 58*c66ec88fSEmmanuel Vadot reg = <0x0 0x33d00000 0x0 0x100000>; 59*c66ec88fSEmmanuel Vadot interrupt-controller; 60*c66ec88fSEmmanuel Vadot msi-controller; 61*c66ec88fSEmmanuel Vadot interrupt-parent = <&main_navss_intr>; 62*c66ec88fSEmmanuel Vadot ti,sci = <&dmsc>; 63*c66ec88fSEmmanuel Vadot ti,sci-dev-id = <179>; 64*c66ec88fSEmmanuel Vadot ti,sci-rm-range-vint = <0x0>; 65*c66ec88fSEmmanuel Vadot ti,sci-rm-range-global-event = <0x1>; 66*c66ec88fSEmmanuel Vadot}; 67