1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpio/realtek,otto-gpio.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Realtek Otto GPIO controller
8
9maintainers:
10  - Sander Vanheule <sander@svanheule.net>
11  - Bert Vermeulen <bert@biot.com>
12
13description: |
14  Realtek's GPIO controller on their MIPS switch SoCs (Otto platform) consists
15  of two banks of 32 GPIOs. These GPIOs can generate edge-triggered interrupts.
16  Each bank's interrupts are cascased into one interrupt line on the parent
17  interrupt controller, if provided.
18  This binding allows defining a single bank in the devicetree. The interrupt
19  controller is not supported on the fallback compatible name, which only
20  allows for GPIO port use.
21
22properties:
23  $nodename:
24    pattern: "^gpio@[0-9a-f]+$"
25
26  compatible:
27    items:
28      - enum:
29          - realtek,rtl8380-gpio
30          - realtek,rtl8390-gpio
31          - realtek,rtl9300-gpio
32          - realtek,rtl9310-gpio
33      - const: realtek,otto-gpio
34
35  reg: true
36
37  "#gpio-cells":
38    const: 2
39
40  gpio-controller: true
41
42  ngpios:
43    minimum: 1
44    maximum: 32
45
46  interrupt-controller: true
47
48  "#interrupt-cells":
49    const: 2
50
51  interrupts:
52    maxItems: 1
53
54if:
55  properties:
56    compatible:
57      contains:
58        const: realtek,rtl9300-gpio
59then:
60  properties:
61    reg:
62      items:
63        - description: GPIO and interrupt control
64        - description: interrupt CPU map
65else:
66  properties:
67    reg:
68      items:
69        - description: GPIO and interrupt control
70
71required:
72  - compatible
73  - reg
74  - "#gpio-cells"
75  - gpio-controller
76
77additionalProperties: false
78
79dependencies:
80  interrupt-controller: [ interrupts ]
81
82examples:
83  - |
84      gpio@3500 {
85        compatible = "realtek,rtl8380-gpio", "realtek,otto-gpio";
86        reg = <0x3500 0x1c>;
87        gpio-controller;
88        #gpio-cells = <2>;
89        ngpios = <24>;
90        interrupt-controller;
91        #interrupt-cells = <2>;
92        interrupt-parent = <&rtlintc>;
93        interrupts = <23>;
94      };
95  - |
96      gpio@3300 {
97        compatible = "realtek,rtl9300-gpio", "realtek,otto-gpio";
98        reg = <0x3300 0x1c>, <0x3338 0x8>;
99        gpio-controller;
100        #gpio-cells = <2>;
101        ngpios = <24>;
102        interrupt-controller;
103        #interrupt-cells = <2>;
104        interrupt-parent = <&rtlintc>;
105        interrupts = <13>;
106      };
107
108...
109