1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpio/snps,dw-apb-gpio.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Synopsys DesignWare APB GPIO controller
8
9description: |
10  Synopsys DesignWare GPIO controllers have a configurable number of ports,
11  each of which are intended to be represented as child nodes with the generic
12  GPIO-controller properties as described in this bindings file.
13
14maintainers:
15  - Hoan Tran <hoan@os.amperecomputing.com>
16  - Serge Semin <fancer.lancer@gmail.com>
17
18properties:
19  $nodename:
20    pattern: "^gpio@[0-9a-f]+$"
21
22  compatible:
23    const: snps,dw-apb-gpio
24
25  "#address-cells":
26    const: 1
27
28  "#size-cells":
29    const: 0
30
31  reg:
32    maxItems: 1
33
34  clocks:
35    minItems: 1
36    items:
37      - description: APB interface clock source
38      - description: DW GPIO debounce reference clock source
39
40  clock-names:
41    minItems: 1
42    items:
43      - const: bus
44      - const: db
45
46  resets:
47    maxItems: 1
48
49patternProperties:
50  "^gpio-(port|controller)@[0-9a-f]+$":
51    type: object
52    properties:
53      compatible:
54        const: snps,dw-apb-gpio-port
55
56      reg:
57        maxItems: 1
58
59      gpio-controller: true
60
61      '#gpio-cells':
62        const: 2
63
64      gpio-line-names:
65        minItems: 1
66        maxItems: 32
67
68      gpio-ranges: true
69
70      ngpios:
71        default: 32
72        minimum: 1
73        maximum: 32
74
75      snps,nr-gpios:
76        description: The number of GPIO pins exported by the port.
77        deprecated: true
78        $ref: /schemas/types.yaml#/definitions/uint32
79        default: 32
80        minimum: 1
81        maximum: 32
82
83      interrupts:
84        description: |
85          The interrupts to the parent controller raised when GPIOs generate
86          the interrupts. If the controller provides one combined interrupt
87          for all GPIOs, specify a single interrupt. If the controller provides
88          one interrupt for each GPIO, provide a list of interrupts that
89          correspond to each of the GPIO pins.
90        minItems: 1
91        maxItems: 32
92
93      interrupt-controller: true
94
95      '#interrupt-cells':
96        const: 2
97
98    required:
99      - compatible
100      - reg
101      - gpio-controller
102      - '#gpio-cells'
103
104    dependencies:
105      interrupt-controller: [ interrupts ]
106
107    additionalProperties: false
108
109additionalProperties: false
110
111required:
112  - compatible
113  - reg
114  - "#address-cells"
115  - "#size-cells"
116
117examples:
118  - |
119    gpio: gpio@20000 {
120      compatible = "snps,dw-apb-gpio";
121      reg = <0x20000 0x1000>;
122      #address-cells = <1>;
123      #size-cells = <0>;
124
125      porta: gpio-port@0 {
126        compatible = "snps,dw-apb-gpio-port";
127        reg = <0>;
128        gpio-controller;
129        #gpio-cells = <2>;
130        snps,nr-gpios = <8>;
131        interrupt-controller;
132        #interrupt-cells = <2>;
133        interrupt-parent = <&vic1>;
134        interrupts = <0>;
135      };
136
137      portb: gpio-port@1 {
138        compatible = "snps,dw-apb-gpio-port";
139        reg = <1>;
140        gpio-controller;
141        #gpio-cells = <2>;
142        snps,nr-gpios = <8>;
143      };
144    };
145...
146