xref: /linux/Documentation/devicetree/bindings/gpio/loongson,ls-gpio.yaml (revision d8d2b1f81530988abe2e2bfaceec1c5d30b9a0b4)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpio/loongson,ls-gpio.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Loongson GPIO controller.
8
9maintainers:
10  - Yinbo Zhu <zhuyinbo@loongson.cn>
11
12properties:
13  compatible:
14    oneOf:
15      - enum:
16          - loongson,ls2k-gpio
17          - loongson,ls2k0300-gpio
18          - loongson,ls2k0500-gpio0
19          - loongson,ls2k0500-gpio1
20          - loongson,ls2k2000-gpio0
21          - loongson,ls2k2000-gpio1
22          - loongson,ls2k2000-gpio2
23          - loongson,ls3a5000-gpio
24          - loongson,ls3a6000-gpio  # Loongson-3A6000 node GPIO
25          - loongson,ls7a-gpio
26          - loongson,ls7a2000-gpio1 # LS7A2000 chipset GPIO
27          - loongson,ls7a2000-gpio2 # LS7A2000 ACPI GPIO
28      - items:
29          - const: loongson,ls2k1000-gpio
30          - const: loongson,ls2k-gpio
31      - items:
32          - const: loongson,ls7a1000-gpio
33          - const: loongson,ls7a-gpio
34
35  reg:
36    maxItems: 1
37
38  ngpios:
39    minimum: 1
40    maximum: 128
41
42  "#gpio-cells":
43    const: 2
44
45  gpio-controller: true
46
47  gpio-ranges: true
48
49  interrupts:
50    minItems: 1
51    maxItems: 64
52
53  "#interrupt-cells":
54    const: 2
55
56  interrupt-controller: true
57
58  resets:
59    maxItems: 1
60
61required:
62  - compatible
63  - reg
64  - ngpios
65  - "#gpio-cells"
66  - gpio-controller
67  - gpio-ranges
68  - interrupts
69
70allOf:
71  - if:
72      properties:
73        compatible:
74          contains:
75            const: loongson,ls2k0300-gpio
76    then:
77      required:
78        - "#interrupt-cells"
79        - interrupt-controller
80        - resets
81    else:
82      properties:
83        "#interrupts-cells": false
84        interrupt-controller: false
85        resets: false
86
87additionalProperties: false
88
89examples:
90  - |
91    #include <dt-bindings/interrupt-controller/irq.h>
92
93    gpio0: gpio@1fe00500 {
94      compatible = "loongson,ls2k1000-gpio", "loongson,ls2k-gpio";
95      reg = <0x1fe00500 0x38>;
96      ngpios = <64>;
97      #gpio-cells = <2>;
98      gpio-controller;
99      gpio-ranges = <&pctrl 0 0 15>,
100                    <&pctrl 16 16 15>,
101                    <&pctrl 32 32 10>,
102                    <&pctrl 44 44 20>;
103      interrupt-parent = <&liointc1>;
104      interrupts = <28 IRQ_TYPE_LEVEL_LOW>,
105                   <29 IRQ_TYPE_LEVEL_LOW>,
106                   <30 IRQ_TYPE_LEVEL_LOW>,
107                   <30 IRQ_TYPE_LEVEL_LOW>,
108                   <26 IRQ_TYPE_LEVEL_LOW>,
109                   <26 IRQ_TYPE_LEVEL_LOW>,
110                   <26 IRQ_TYPE_LEVEL_LOW>,
111                   <26 IRQ_TYPE_LEVEL_LOW>,
112                   <26 IRQ_TYPE_LEVEL_LOW>,
113                   <26 IRQ_TYPE_LEVEL_LOW>,
114                   <26 IRQ_TYPE_LEVEL_LOW>,
115                   <26 IRQ_TYPE_LEVEL_LOW>,
116                   <26 IRQ_TYPE_LEVEL_LOW>,
117                   <26 IRQ_TYPE_LEVEL_LOW>,
118                   <26 IRQ_TYPE_LEVEL_LOW>,
119                   <>,
120                   <26 IRQ_TYPE_LEVEL_LOW>,
121                   <26 IRQ_TYPE_LEVEL_LOW>,
122                   <26 IRQ_TYPE_LEVEL_LOW>,
123                   <26 IRQ_TYPE_LEVEL_LOW>,
124                   <26 IRQ_TYPE_LEVEL_LOW>,
125                   <26 IRQ_TYPE_LEVEL_LOW>,
126                   <26 IRQ_TYPE_LEVEL_LOW>,
127                   <26 IRQ_TYPE_LEVEL_LOW>,
128                   <26 IRQ_TYPE_LEVEL_LOW>,
129                   <26 IRQ_TYPE_LEVEL_LOW>,
130                   <26 IRQ_TYPE_LEVEL_LOW>,
131                   <26 IRQ_TYPE_LEVEL_LOW>,
132                   <26 IRQ_TYPE_LEVEL_LOW>,
133                   <26 IRQ_TYPE_LEVEL_LOW>,
134                   <26 IRQ_TYPE_LEVEL_LOW>,
135                   <26 IRQ_TYPE_LEVEL_LOW>,
136                   <27 IRQ_TYPE_LEVEL_LOW>,
137                   <27 IRQ_TYPE_LEVEL_LOW>,
138                   <27 IRQ_TYPE_LEVEL_LOW>,
139                   <27 IRQ_TYPE_LEVEL_LOW>,
140                   <27 IRQ_TYPE_LEVEL_LOW>,
141                   <>,
142                   <27 IRQ_TYPE_LEVEL_LOW>,
143                   <27 IRQ_TYPE_LEVEL_LOW>,
144                   <27 IRQ_TYPE_LEVEL_LOW>,
145                   <27 IRQ_TYPE_LEVEL_LOW>,
146                   <>,
147                   <>,
148                   <27 IRQ_TYPE_LEVEL_LOW>,
149                   <27 IRQ_TYPE_LEVEL_LOW>,
150                   <27 IRQ_TYPE_LEVEL_LOW>,
151                   <27 IRQ_TYPE_LEVEL_LOW>,
152                   <27 IRQ_TYPE_LEVEL_LOW>,
153                   <27 IRQ_TYPE_LEVEL_LOW>,
154                   <27 IRQ_TYPE_LEVEL_LOW>,
155                   <27 IRQ_TYPE_LEVEL_LOW>,
156                   <27 IRQ_TYPE_LEVEL_LOW>,
157                   <27 IRQ_TYPE_LEVEL_LOW>,
158                   <27 IRQ_TYPE_LEVEL_LOW>,
159                   <27 IRQ_TYPE_LEVEL_LOW>,
160                   <27 IRQ_TYPE_LEVEL_LOW>,
161                   <27 IRQ_TYPE_LEVEL_LOW>,
162                   <27 IRQ_TYPE_LEVEL_LOW>,
163                   <27 IRQ_TYPE_LEVEL_LOW>,
164                   <27 IRQ_TYPE_LEVEL_LOW>,
165                   <27 IRQ_TYPE_LEVEL_LOW>,
166                   <27 IRQ_TYPE_LEVEL_LOW>,
167                   <27 IRQ_TYPE_LEVEL_LOW>;
168    };
169