diff mbox series

[v3,06/13] dt-bindings: irqchip: Introduce TISCI Interrupt router bindings

Message ID 20181106084105.32483-7-lokeshvutla@ti.com (mailing list archive)
State New, archived
Headers show
Series Add support for TISCI irqchip drivers | expand

Commit Message

Lokesh Vutla Nov. 6, 2018, 8:40 a.m. UTC
Add the DT binding documentation for Interrupt router driver.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
---
Changes since v2:
- Dropped interrupt-parent from reqired properties description
- Updated the interrupt cells to 4.

 .../interrupt-controller/ti,sci-intr.txt      | 84 +++++++++++++++++++
 MAINTAINERS                                   |  1 +
 2 files changed, 85 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt

Comments

Rob Herring (Arm) Nov. 12, 2018, 6 p.m. UTC | #1
On Tue, Nov 06, 2018 at 02:10:58PM +0530, Lokesh Vutla wrote:
> Add the DT binding documentation for Interrupt router driver.
> 
> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
> ---
> Changes since v2:
> - Dropped interrupt-parent from reqired properties description
> - Updated the interrupt cells to 4.
> 
>  .../interrupt-controller/ti,sci-intr.txt      | 84 +++++++++++++++++++
>  MAINTAINERS                                   |  1 +
>  2 files changed, 85 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
> 
> diff --git a/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt b/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
> new file mode 100644
> index 000000000000..06e69f8c812c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
> @@ -0,0 +1,84 @@
> +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. There is one register per output (MUXCNTL_N) that
> +controls the selection.
> +
> +
> +                                 Interrupt Router
> +                             +----------------------+
> +                             |  Inputs     Outputs  |
> +        +-------+            | +------+             |
> +        | GPIO  |----------->| | irq0 |             |       Host IRQ
> +        +-------+            | +------+             |      controller
> +                             |    .        +-----+  |      +-------+
> +        +-------+            |    .        |  0  |  |----->|  IRQ  |
> +        | INTA  |----------->|    .        +-----+  |      +-------+
> +        +-------+            |    .          .      |
> +                             | +------+      .      |
> +                             | | irqM |    +-----+  |
> +                             | +------+    |  N  |  |
> +                             |             +-----+  |
> +                             +----------------------+
> +
> +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:
> +----------------------------
> +- compatible:		Must be "ti,sci-intr".
> +- 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 4.
> +			First cell should contain the TISCI device ID of source
> +			Second cell should contain the interrupt source offset
> +			within the device
> +			Third cell specifies the trigger type as defined
> +			in interrupts.txt in this directory.
> +			Fourth cell should be 1 if the irq is coming from
> +			interrupt aggregator else 0.
> +- 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:	TISCI subtype id representing the host irqs assigned
> +			to this interrupt router.

u32 or array?

> +
> +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-controller@1 {

Unit-address is not valid here without a reg property.

> +	compatible = "ti,sci-intr";
> +	interrupt-controller;
> +	interrupt-parent = <&gic>;
> +	#interrupt-cells = <4>;
> +	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 IRQ_TYPE_EDGE_RISING 0>,
> +			<57 257 IRQ_TYPE_EDGE_RISING 0>,
> +			<57 258 IRQ_TYPE_EDGE_RISING 0>,
> +			<57 259 IRQ_TYPE_EDGE_RISING 0>,
> +			<57 260 IRQ_TYPE_EDGE_RISING 0>,
> +			<57 261 IRQ_TYPE_EDGE_RISING 0>;
> +	...
> +};
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 88b28f6dec45..0e3aa3386287 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -14739,6 +14739,7 @@ F:	Documentation/devicetree/bindings/reset/ti,sci-reset.txt
>  F:	Documentation/devicetree/bindings/clock/ti,sci-clk.txt
>  F:	drivers/clk/keystone/sci-clk.c
>  F:	drivers/reset/reset-ti-sci.c
> +F:	Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>  
>  THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
>  M:	Hans Verkuil <hverkuil@xs4all.nl>
> -- 
> 2.19.1
>
Lokesh Vutla Nov. 13, 2018, 6:13 a.m. UTC | #2
Hi Rob,

On 12/11/18 11:30 PM, Rob Herring wrote:
> On Tue, Nov 06, 2018 at 02:10:58PM +0530, Lokesh Vutla wrote:
>> Add the DT binding documentation for Interrupt router driver.
>>
>> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
>> ---
>> Changes since v2:
>> - Dropped interrupt-parent from reqired properties description
>> - Updated the interrupt cells to 4.
>>
>>   .../interrupt-controller/ti,sci-intr.txt      | 84 +++++++++++++++++++
>>   MAINTAINERS                                   |  1 +
>>   2 files changed, 85 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>>
>> diff --git a/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt b/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>> new file mode 100644
>> index 000000000000..06e69f8c812c
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>> @@ -0,0 +1,84 @@
>> +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. There is one register per output (MUXCNTL_N) that
>> +controls the selection.
>> +
>> +
>> +                                 Interrupt Router
>> +                             +----------------------+
>> +                             |  Inputs     Outputs  |
>> +        +-------+            | +------+             |
>> +        | GPIO  |----------->| | irq0 |             |       Host IRQ
>> +        +-------+            | +------+             |      controller
>> +                             |    .        +-----+  |      +-------+
>> +        +-------+            |    .        |  0  |  |----->|  IRQ  |
>> +        | INTA  |----------->|    .        +-----+  |      +-------+
>> +        +-------+            |    .          .      |
>> +                             | +------+      .      |
>> +                             | | irqM |    +-----+  |
>> +                             | +------+    |  N  |  |
>> +                             |             +-----+  |
>> +                             +----------------------+
>> +
>> +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:
>> +----------------------------
>> +- compatible:		Must be "ti,sci-intr".
>> +- 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 4.
>> +			First cell should contain the TISCI device ID of source
>> +			Second cell should contain the interrupt source offset
>> +			within the device
>> +			Third cell specifies the trigger type as defined
>> +			in interrupts.txt in this directory.
>> +			Fourth cell should be 1 if the irq is coming from
>> +			interrupt aggregator else 0.
>> +- 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:	TISCI subtype id representing the host irqs assigned
>> +			to this interrupt router.
> 
> u32 or array?

it is u32.

> 
>> +
>> +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-controller@1 {
> 
> Unit-address is not valid here without a reg property.

Sure will fix it in next version.

Thanks and regards,
Lokesh

> 
>> +	compatible = "ti,sci-intr";
>> +	interrupt-controller;
>> +	interrupt-parent = <&gic>;
>> +	#interrupt-cells = <4>;
>> +	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 IRQ_TYPE_EDGE_RISING 0>,
>> +			<57 257 IRQ_TYPE_EDGE_RISING 0>,
>> +			<57 258 IRQ_TYPE_EDGE_RISING 0>,
>> +			<57 259 IRQ_TYPE_EDGE_RISING 0>,
>> +			<57 260 IRQ_TYPE_EDGE_RISING 0>,
>> +			<57 261 IRQ_TYPE_EDGE_RISING 0>;
>> +	...
>> +};
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 88b28f6dec45..0e3aa3386287 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -14739,6 +14739,7 @@ F:	Documentation/devicetree/bindings/reset/ti,sci-reset.txt
>>   F:	Documentation/devicetree/bindings/clock/ti,sci-clk.txt
>>   F:	drivers/clk/keystone/sci-clk.c
>>   F:	drivers/reset/reset-ti-sci.c
>> +F:	Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>>   
>>   THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
>>   M:	Hans Verkuil <hverkuil@xs4all.nl>
>> -- 
>> 2.19.1
>>
>
Lokesh Vutla Nov. 16, 2018, 2:06 a.m. UTC | #3
Hi Rob,

On 11/13/2018 11:43 AM, Lokesh Vutla wrote:
> Hi Rob,
> 
> On 12/11/18 11:30 PM, Rob Herring wrote:
>> On Tue, Nov 06, 2018 at 02:10:58PM +0530, Lokesh Vutla wrote:
>>> Add the DT binding documentation for Interrupt router driver.
>>>
>>> Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
>>> ---
>>> Changes since v2:
>>> - Dropped interrupt-parent from reqired properties description
>>> - Updated the interrupt cells to 4.
>>>
>>>   .../interrupt-controller/ti,sci-intr.txt      | 84 +++++++++++++++++++
>>>   MAINTAINERS                                   |  1 +
>>>   2 files changed, 85 insertions(+)
>>>   create mode 100644
>>> Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>>> b/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>>> new file mode 100644
>>> index 000000000000..06e69f8c812c
>>> --- /dev/null
>>> +++
>>> b/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>>> @@ -0,0 +1,84 @@
>>> +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. There is one register per output
>>> (MUXCNTL_N) that
>>> +controls the selection.
>>> +
>>> +
>>> +                                 Interrupt Router
>>> +                             +----------------------+
>>> +                             |  Inputs     Outputs  |
>>> +        +-------+            | +------+             |
>>> +        | GPIO  |----------->| | irq0 |             |       Host IRQ
>>> +        +-------+            | +------+             |      controller
>>> +                             |    .        +-----+  |      +-------+
>>> +        +-------+            |    .        |  0  |  |----->|  IRQ  |
>>> +        | INTA  |----------->|    .        +-----+  |      +-------+
>>> +        +-------+            |    .          .      |
>>> +                             | +------+      .      |
>>> +                             | | irqM |    +-----+  |
>>> +                             | +------+    |  N  |  |
>>> +                             |             +-----+  |
>>> +                             +----------------------+
>>> +
>>> +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:
>>> +----------------------------
>>> +- compatible:        Must be "ti,sci-intr".
>>> +- 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 4.
>>> +            First cell should contain the TISCI device ID of source
>>> +            Second cell should contain the interrupt source offset
>>> +            within the device
>>> +            Third cell specifies the trigger type as defined
>>> +            in interrupts.txt in this directory.
>>> +            Fourth cell should be 1 if the irq is coming from
>>> +            interrupt aggregator else 0.
>>> +- 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:    TISCI subtype id representing the host
>>> irqs assigned
>>> +            to this interrupt router.
>>
>> u32 or array?
> 
> it is u32.

Sorry, I am wrong here. There is one instance where there are more than
one set of gic irq ranges associated with this IP. Will fix it as an
array in next version.

Thanks and regards,
Lokesh

> 
>>
>>> +
>>> +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-controller@1 {
>>
>> Unit-address is not valid here without a reg property.
> 
> Sure will fix it in next version.
> 
> Thanks and regards,
> Lokesh
> 
>>
>>> +    compatible = "ti,sci-intr";
>>> +    interrupt-controller;
>>> +    interrupt-parent = <&gic>;
>>> +    #interrupt-cells = <4>;
>>> +    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 IRQ_TYPE_EDGE_RISING 0>,
>>> +            <57 257 IRQ_TYPE_EDGE_RISING 0>,
>>> +            <57 258 IRQ_TYPE_EDGE_RISING 0>,
>>> +            <57 259 IRQ_TYPE_EDGE_RISING 0>,
>>> +            <57 260 IRQ_TYPE_EDGE_RISING 0>,
>>> +            <57 261 IRQ_TYPE_EDGE_RISING 0>;
>>> +    ...
>>> +};
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index 88b28f6dec45..0e3aa3386287 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -14739,6 +14739,7 @@ F:   
>>> Documentation/devicetree/bindings/reset/ti,sci-reset.txt
>>>   F:    Documentation/devicetree/bindings/clock/ti,sci-clk.txt
>>>   F:    drivers/clk/keystone/sci-clk.c
>>>   F:    drivers/reset/reset-ti-sci.c
>>> +F:   
>>> Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
>>>     THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
>>>   M:    Hans Verkuil <hverkuil@xs4all.nl>
>>> -- 
>>> 2.19.1
>>>
>>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt b/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
new file mode 100644
index 000000000000..06e69f8c812c
--- /dev/null
+++ b/Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
@@ -0,0 +1,84 @@ 
+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. There is one register per output (MUXCNTL_N) that
+controls the selection.
+
+
+                                 Interrupt Router
+                             +----------------------+
+                             |  Inputs     Outputs  |
+        +-------+            | +------+             |
+        | GPIO  |----------->| | irq0 |             |       Host IRQ
+        +-------+            | +------+             |      controller
+                             |    .        +-----+  |      +-------+
+        +-------+            |    .        |  0  |  |----->|  IRQ  |
+        | INTA  |----------->|    .        +-----+  |      +-------+
+        +-------+            |    .          .      |
+                             | +------+      .      |
+                             | | irqM |    +-----+  |
+                             | +------+    |  N  |  |
+                             |             +-----+  |
+                             +----------------------+
+
+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:
+----------------------------
+- compatible:		Must be "ti,sci-intr".
+- 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 4.
+			First cell should contain the TISCI device ID of source
+			Second cell should contain the interrupt source offset
+			within the device
+			Third cell specifies the trigger type as defined
+			in interrupts.txt in this directory.
+			Fourth cell should be 1 if the irq is coming from
+			interrupt aggregator else 0.
+- 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:	TISCI subtype id representing the host irqs assigned
+			to this interrupt router.
+
+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-controller@1 {
+	compatible = "ti,sci-intr";
+	interrupt-controller;
+	interrupt-parent = <&gic>;
+	#interrupt-cells = <4>;
+	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 IRQ_TYPE_EDGE_RISING 0>,
+			<57 257 IRQ_TYPE_EDGE_RISING 0>,
+			<57 258 IRQ_TYPE_EDGE_RISING 0>,
+			<57 259 IRQ_TYPE_EDGE_RISING 0>,
+			<57 260 IRQ_TYPE_EDGE_RISING 0>,
+			<57 261 IRQ_TYPE_EDGE_RISING 0>;
+	...
+};
diff --git a/MAINTAINERS b/MAINTAINERS
index 88b28f6dec45..0e3aa3386287 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -14739,6 +14739,7 @@  F:	Documentation/devicetree/bindings/reset/ti,sci-reset.txt
 F:	Documentation/devicetree/bindings/clock/ti,sci-clk.txt
 F:	drivers/clk/keystone/sci-clk.c
 F:	drivers/reset/reset-ti-sci.c
+F:	Documentation/devicetree/bindings/interrupt-controller/ti,sci-intr.txt
 
 THANKO'S RAREMONO AM/FM/SW RADIO RECEIVER USB DRIVER
 M:	Hans Verkuil <hverkuil@xs4all.nl>