xref: /freebsd/sys/contrib/device-tree/Bindings/gpio/sifive,gpio.yaml (revision 7ab1a32cd43cbae61ad4dd435d6a482bbf61cb52)
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
7title: SiFive GPIO controller
8
9maintainers:
10  - Paul Walmsley <paul.walmsley@sifive.com>
11
12properties:
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-line-names:
50    minItems: 1
51    maxItems: 32
52
53  gpio-controller: true
54
55required:
56  - compatible
57  - reg
58  - interrupts
59  - interrupt-controller
60  - "#interrupt-cells"
61  - "#gpio-cells"
62  - gpio-controller
63
64if:
65  properties:
66    compatible:
67      contains:
68        enum:
69          - sifive,fu540-c000-gpio
70          - sifive,fu740-c000-gpio
71then:
72  required:
73    - clocks
74
75additionalProperties: false
76
77examples:
78  - |
79      #include <dt-bindings/clock/sifive-fu540-prci.h>
80      gpio@10060000 {
81        compatible = "sifive,fu540-c000-gpio", "sifive,gpio0";
82        interrupt-parent = <&plic>;
83        interrupts = <7>, <8>, <9>, <10>, <11>, <12>, <13>, <14>, <15>, <16>,
84                     <17>, <18>, <19>, <20>, <21>, <22>;
85        reg = <0x10060000 0x1000>;
86        clocks = <&tlclk FU540_PRCI_CLK_TLCLK>;
87        gpio-controller;
88        #gpio-cells = <2>;
89        interrupt-controller;
90        #interrupt-cells = <2>;
91      };
92
93...
94