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 desribed 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      ngpios:
65        default: 32
66        minimum: 1
67        maximum: 32
68
69      snps,nr-gpios:
70        description: The number of GPIO pins exported by the port.
71        deprecated: true
72        $ref: /schemas/types.yaml#/definitions/uint32
73        default: 32
74        minimum: 1
75        maximum: 32
76
77      interrupts:
78        description: |
79          The interrupts to the parent controller raised when GPIOs generate
80          the interrupts. If the controller provides one combined interrupt
81          for all GPIOs, specify a single interrupt. If the controller provides
82          one interrupt for each GPIO, provide a list of interrupts that
83          correspond to each of the GPIO pins.
84        minItems: 1
85        maxItems: 32
86
87      interrupt-controller: true
88
89      '#interrupt-cells':
90        const: 2
91
92    required:
93      - compatible
94      - reg
95      - gpio-controller
96      - '#gpio-cells'
97
98    dependencies:
99      interrupt-controller: [ interrupts ]
100
101    additionalProperties: false
102
103additionalProperties: false
104
105required:
106  - compatible
107  - reg
108  - "#address-cells"
109  - "#size-cells"
110
111examples:
112  - |
113    gpio: gpio@20000 {
114      compatible = "snps,dw-apb-gpio";
115      reg = <0x20000 0x1000>;
116      #address-cells = <1>;
117      #size-cells = <0>;
118
119      porta: gpio-port@0 {
120        compatible = "snps,dw-apb-gpio-port";
121        reg = <0>;
122        gpio-controller;
123        #gpio-cells = <2>;
124        snps,nr-gpios = <8>;
125        interrupt-controller;
126        #interrupt-cells = <2>;
127        interrupt-parent = <&vic1>;
128        interrupts = <0>;
129      };
130
131      portb: gpio-port@1 {
132        compatible = "snps,dw-apb-gpio-port";
133        reg = <1>;
134        gpio-controller;
135        #gpio-cells = <2>;
136        snps,nr-gpios = <8>;
137      };
138    };
139...
140