Texas Instruments K3 Interrupt Router
=====================================

The Interrupt Router (INTR) module provides a mechanism to mux M
interrupt inputs to N interrupt outputs, where all M inputs are selectable
to be driven per N output. An Interrupt Router can either handle edge triggered
or level triggered interrupts and that is fixed in hardware.

                                 Interrupt Router
                             +----------------------+
                             |  Inputs     Outputs  |
        +-------+            | +------+    +-----+  |
        | GPIO  |----------->| | irq0 |    |  0  |  |       Host IRQ
        +-------+            | +------+    +-----+  |      controller
                             |    .           .     |      +-------+
        +-------+            |    .           .     |----->|  IRQ  |
        | INTA  |----------->|    .           .     |      +-------+
        +-------+            |    .        +-----+  |
                             | +------+    |  N  |  |
                             | | irqM |    +-----+  |
                             | +------+             |
                             |                      |
                             +----------------------+

There is one register per output (MUXCNTL_N) that controls the selection.
Configuration of these MUXCNTL_N registers is done by a system controller
(like the Device Memory and Security Controller on K3 AM654 SoC). System
controller will keep track of the used and unused registers within the Router.
Driver should request the system controller to get the range of GIC IRQs
assigned to the requesting hosts. It is the drivers responsibility to keep
track of Host IRQs.

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 Router Node:
----------------------------
Required Properties:
- compatible:		Must be "ti,sci-intr".
- ti,intr-trigger-type:	Should be one of the following:
			1: If intr supports edge triggered interrupts.
			4: If intr supports level triggered interrupts.
- interrupt-controller:	Identifies the node as an interrupt controller
- #interrupt-cells:	Specifies the number of cells needed to encode an
			interrupt source. The value should be 2.
			First cell should contain the TISCI device ID of source
			Second cell should contain the interrupt source offset
			within the device.
- ti,sci:		Phandle to TI-SCI compatible System controller node.
- ti,sci-dst-id:	TISCI device ID of the destination IRQ controller.
- ti,sci-rm-range-girq:	Array of TISCI subtype ids representing the host irqs
			assigned to this interrupt router. Each subtype id
			corresponds to a range of host irqs.

For more details on TISCI IRQ resource management refer:
http://downloads.ti.com/tisci/esd/latest/2_tisci_msgs/rm/rm_irq.html

Example:
--------
The following example demonstrates both interrupt router node and the consumer
node(main gpio) on the AM654 SoC:

main_intr: interrupt-controller0 {
	compatible = "ti,sci-intr";
	ti,intr-trigger-type = <1>;
	interrupt-controller;
	interrupt-parent = <&gic500>;
	#interrupt-cells = <2>;
	ti,sci = <&dmsc>;
	ti,sci-dst-id = <56>;
	ti,sci-rm-range-girq = <0x1>;
};

main_gpio0: gpio@600000 {
	...
	interrupt-parent = <&main_intr>;
	interrupts = <57 256>, <57 257>, <57 258>,
		     <57 259>, <57 260>, <57 261>;
	...
};
