GNU Linux-libre 5.19-rc6-gnu
[releases.git] / Documentation / devicetree / bindings / gpio / sifive,gpio.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/gpio/sifive,gpio.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: SiFive GPIO controller
8
9 maintainers:
10   - Paul Walmsley <paul.walmsley@sifive.com>
11
12 properties:
13   compatible:
14     items:
15       - enum:
16           - sifive,fu540-c000-gpio
17           - sifive,fu740-c000-gpio
18           - canaan,k210-gpiohs
19       - const: sifive,gpio0
20
21   reg:
22     maxItems: 1
23
24   interrupts:
25     description:
26       Interrupt mapping, one per GPIO. Maximum 32 GPIOs.
27     minItems: 1
28     maxItems: 32
29
30   interrupt-controller: true
31
32   "#interrupt-cells":
33     const: 2
34
35   clocks:
36     maxItems: 1
37
38   "#gpio-cells":
39     const: 2
40
41   ngpios:
42     description:
43       The number of GPIOs available on the controller implementation.
44       It is 16 for the SiFive SoCs and 32 for the Canaan K210.
45     minimum: 1
46     maximum: 32
47     default: 16
48
49   gpio-controller: true
50
51 required:
52   - compatible
53   - reg
54   - interrupts
55   - interrupt-controller
56   - "#interrupt-cells"
57   - "#gpio-cells"
58   - gpio-controller
59
60 if:
61   properties:
62     compatible:
63       contains:
64         enum:
65           - sifive,fu540-c000-gpio
66           - sifive,fu740-c000-gpio
67 then:
68   required:
69     - clocks
70
71 additionalProperties: false
72
73 examples:
74   - |
75       #include <dt-bindings/clock/sifive-fu540-prci.h>
76       gpio@10060000 {
77         compatible = "sifive,fu540-c000-gpio", "sifive,gpio0";
78         interrupt-parent = <&plic>;
79         interrupts = <7>, <8>, <9>, <10>, <11>, <12>, <13>, <14>, <15>, <16>,
80                      <17>, <18>, <19>, <20>, <21>, <22>;
81         reg = <0x10060000 0x1000>;
82         clocks = <&tlclk FU540_PRCI_CLK_TLCLK>;
83         gpio-controller;
84         #gpio-cells = <2>;
85         interrupt-controller;
86         #interrupt-cells = <2>;
87       };
88
89 ...