Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/interrupt-controller/ti,sci-intr.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: Texas Instruments K3 Interrupt Router
0008 
0009 maintainers:
0010   - Lokesh Vutla <lokeshvutla@ti.com>
0011 
0012 allOf:
0013   - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
0014 
0015 description: |
0016   The Interrupt Router (INTR) module provides a mechanism to mux M
0017   interrupt inputs to N interrupt outputs, where all M inputs are selectable
0018   to be driven per N output. An Interrupt Router can either handle edge
0019   triggered or level triggered interrupts and that is fixed in hardware.
0020 
0021                                    Interrupt Router
0022                                +----------------------+
0023                                |  Inputs     Outputs  |
0024           +-------+            | +------+    +-----+  |
0025           | GPIO  |----------->| | irq0 |    |  0  |  |       Host IRQ
0026           +-------+            | +------+    +-----+  |      controller
0027                                |    .           .     |      +-------+
0028           +-------+            |    .           .     |----->|  IRQ  |
0029           | INTA  |----------->|    .           .     |      +-------+
0030           +-------+            |    .        +-----+  |
0031                                | +------+    |  N  |  |
0032                                | | irqM |    +-----+  |
0033                                | +------+             |
0034                                |                      |
0035                                +----------------------+
0036 
0037   There is one register per output (MUXCNTL_N) that controls the selection.
0038   Configuration of these MUXCNTL_N registers is done by a system controller
0039   (like the Device Memory and Security Controller on K3 AM654 SoC). System
0040   controller will keep track of the used and unused registers within the Router.
0041   Driver should request the system controller to get the range of GIC IRQs
0042   assigned to the requesting hosts. It is the drivers responsibility to keep
0043   track of Host IRQs.
0044 
0045   Communication between the host processor running an OS and the system
0046   controller happens through a protocol called TI System Control Interface
0047   (TISCI protocol).
0048 
0049 properties:
0050   compatible:
0051     const: ti,sci-intr
0052 
0053   ti,intr-trigger-type:
0054     $ref: /schemas/types.yaml#/definitions/uint32
0055     enum: [1, 4]
0056     description: |
0057       Should be one of the following.
0058         1 = If intr supports edge triggered interrupts.
0059         4 = If intr supports level triggered interrupts.
0060 
0061   interrupt-controller: true
0062 
0063   '#interrupt-cells':
0064     const: 1
0065     description: |
0066       The 1st cell should contain interrupt router input hw number.
0067 
0068   ti,interrupt-ranges:
0069     $ref: /schemas/types.yaml#/definitions/uint32-matrix
0070     description: |
0071       Interrupt ranges that converts the INTR output hw irq numbers
0072       to parents's input interrupt numbers.
0073     items:
0074       items:
0075         - description: |
0076             "output_irq" specifies the base for intr output irq
0077         - description: |
0078             "parent's input irq" specifies the base for parent irq
0079         - description: |
0080             "limit" specifies the limit for translation
0081 
0082 required:
0083   - compatible
0084   - ti,intr-trigger-type
0085   - interrupt-controller
0086   - '#interrupt-cells'
0087   - ti,sci
0088   - ti,sci-dev-id
0089   - ti,interrupt-ranges
0090 
0091 unevaluatedProperties: false
0092 
0093 examples:
0094   - |
0095     main_gpio_intr: interrupt-controller0 {
0096         compatible = "ti,sci-intr";
0097         ti,intr-trigger-type = <1>;
0098         interrupt-controller;
0099         interrupt-parent = <&gic500>;
0100         #interrupt-cells = <1>;
0101         ti,sci = <&dmsc>;
0102         ti,sci-dev-id = <131>;
0103         ti,interrupt-ranges = <0 360 32>;
0104     };