xref: /freebsd-src/sys/contrib/device-tree/Bindings/interrupt-controller/mediatek,mtk-cirq.yaml (revision 8bab661a3316d8bd9b9fbd11a3b4371b91507bd2)
1*8bab661aSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*8bab661aSEmmanuel Vadot%YAML 1.2
3*8bab661aSEmmanuel Vadot---
4*8bab661aSEmmanuel Vadot$id: http://devicetree.org/schemas/interrupt-controller/mediatek,mtk-cirq.yaml#
5*8bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*8bab661aSEmmanuel Vadot
7*8bab661aSEmmanuel Vadottitle: MediaTek System Interrupt Controller
8*8bab661aSEmmanuel Vadot
9*8bab661aSEmmanuel Vadotmaintainers:
10*8bab661aSEmmanuel Vadot  - Youlin Pei <youlin.pei@mediatek.com>
11*8bab661aSEmmanuel Vadot
12*8bab661aSEmmanuel Vadotdescription:
13*8bab661aSEmmanuel Vadot  In MediaTek SoCs, the CIRQ is a low power interrupt controller designed to
14*8bab661aSEmmanuel Vadot  work outside of MCUSYS which comprises with Cortex-Ax cores, CCI and GIC.
15*8bab661aSEmmanuel Vadot  The external interrupts (outside MCUSYS) will feed through CIRQ and connect
16*8bab661aSEmmanuel Vadot  to GIC in MCUSYS. When CIRQ is enabled, it will record the edge-sensitive
17*8bab661aSEmmanuel Vadot  interrupts and generate a pulse signal to parent interrupt controller when
18*8bab661aSEmmanuel Vadot  flush command is executed. With CIRQ, MCUSYS can be completely turned off
19*8bab661aSEmmanuel Vadot  to improve the system power consumption without losing interrupts.
20*8bab661aSEmmanuel Vadot
21*8bab661aSEmmanuel Vadot
22*8bab661aSEmmanuel Vadotproperties:
23*8bab661aSEmmanuel Vadot  compatible:
24*8bab661aSEmmanuel Vadot    items:
25*8bab661aSEmmanuel Vadot      - enum:
26*8bab661aSEmmanuel Vadot          - mediatek,mt2701-cirq
27*8bab661aSEmmanuel Vadot          - mediatek,mt8135-cirq
28*8bab661aSEmmanuel Vadot          - mediatek,mt8173-cirq
29*8bab661aSEmmanuel Vadot          - mediatek,mt8192-cirq
30*8bab661aSEmmanuel Vadot      - const: mediatek,mtk-cirq
31*8bab661aSEmmanuel Vadot
32*8bab661aSEmmanuel Vadot  reg:
33*8bab661aSEmmanuel Vadot    maxItems: 1
34*8bab661aSEmmanuel Vadot
35*8bab661aSEmmanuel Vadot  '#interrupt-cells':
36*8bab661aSEmmanuel Vadot    const: 3
37*8bab661aSEmmanuel Vadot
38*8bab661aSEmmanuel Vadot  interrupt-controller: true
39*8bab661aSEmmanuel Vadot
40*8bab661aSEmmanuel Vadot  mediatek,ext-irq-range:
41*8bab661aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
42*8bab661aSEmmanuel Vadot    items:
43*8bab661aSEmmanuel Vadot      - description: First CIRQ interrupt
44*8bab661aSEmmanuel Vadot      - description: Last CIRQ interrupt
45*8bab661aSEmmanuel Vadot    description:
46*8bab661aSEmmanuel Vadot      Identifies the range of external interrupts in different SoCs
47*8bab661aSEmmanuel Vadot
48*8bab661aSEmmanuel Vadotrequired:
49*8bab661aSEmmanuel Vadot  - compatible
50*8bab661aSEmmanuel Vadot  - reg
51*8bab661aSEmmanuel Vadot  - '#interrupt-cells'
52*8bab661aSEmmanuel Vadot  - interrupt-controller
53*8bab661aSEmmanuel Vadot  - mediatek,ext-irq-range
54*8bab661aSEmmanuel Vadot
55*8bab661aSEmmanuel VadotadditionalProperties: false
56*8bab661aSEmmanuel Vadot
57*8bab661aSEmmanuel Vadotexamples:
58*8bab661aSEmmanuel Vadot  - |
59*8bab661aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
60*8bab661aSEmmanuel Vadot
61*8bab661aSEmmanuel Vadot    cirq: interrupt-controller@10204000 {
62*8bab661aSEmmanuel Vadot        compatible = "mediatek,mt2701-cirq", "mediatek,mtk-cirq";
63*8bab661aSEmmanuel Vadot        reg = <0x10204000 0x400>;
64*8bab661aSEmmanuel Vadot        #interrupt-cells = <3>;
65*8bab661aSEmmanuel Vadot        interrupt-controller;
66*8bab661aSEmmanuel Vadot        interrupt-parent = <&sysirq>;
67*8bab661aSEmmanuel Vadot        mediatek,ext-irq-range = <32 200>;
68*8bab661aSEmmanuel Vadot    };
69