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