xref: /linux/Documentation/devicetree/bindings/gpio/snps,dw-apb-gpio.yaml (revision 0e6e3c6f7cb47ea1ae15a8148a6ddb30035c210e)
1657a06dfSSerge Semin# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2657a06dfSSerge Semin%YAML 1.2
3657a06dfSSerge Semin---
4657a06dfSSerge Semin$id: http://devicetree.org/schemas/gpio/snps,dw-apb-gpio.yaml#
5657a06dfSSerge Semin$schema: http://devicetree.org/meta-schemas/core.yaml#
6657a06dfSSerge Semin
7657a06dfSSerge Semintitle: Synopsys DesignWare APB GPIO controller
8657a06dfSSerge Semin
9657a06dfSSerge Semindescription: |
10657a06dfSSerge Semin  Synopsys DesignWare GPIO controllers have a configurable number of ports,
11657a06dfSSerge Semin  each of which are intended to be represented as child nodes with the generic
1247aab533SBjorn Helgaas  GPIO-controller properties as described in this bindings file.
13657a06dfSSerge Semin
14657a06dfSSerge Seminmaintainers:
15657a06dfSSerge Semin  - Hoan Tran <hoan@os.amperecomputing.com>
16c55812afSSerge Semin  - Serge Semin <fancer.lancer@gmail.com>
17657a06dfSSerge Semin
18657a06dfSSerge Seminproperties:
19657a06dfSSerge Semin  $nodename:
20657a06dfSSerge Semin    pattern: "^gpio@[0-9a-f]+$"
21657a06dfSSerge Semin
22657a06dfSSerge Semin  compatible:
23657a06dfSSerge Semin    const: snps,dw-apb-gpio
24657a06dfSSerge Semin
25657a06dfSSerge Semin  "#address-cells":
26657a06dfSSerge Semin    const: 1
27657a06dfSSerge Semin
28657a06dfSSerge Semin  "#size-cells":
29657a06dfSSerge Semin    const: 0
30657a06dfSSerge Semin
31657a06dfSSerge Semin  reg:
32657a06dfSSerge Semin    maxItems: 1
33657a06dfSSerge Semin
34657a06dfSSerge Semin  clocks:
354f180937SSerge Semin    minItems: 1
36657a06dfSSerge Semin    items:
37657a06dfSSerge Semin      - description: APB interface clock source
384f180937SSerge Semin      - description: DW GPIO debounce reference clock source
39657a06dfSSerge Semin
40657a06dfSSerge Semin  clock-names:
414f180937SSerge Semin    minItems: 1
42657a06dfSSerge Semin    items:
43657a06dfSSerge Semin      - const: bus
444f180937SSerge Semin      - const: db
45657a06dfSSerge Semin
46657a06dfSSerge Semin  resets:
47657a06dfSSerge Semin    maxItems: 1
48657a06dfSSerge Semin
49657a06dfSSerge SeminpatternProperties:
50657a06dfSSerge Semin  "^gpio-(port|controller)@[0-9a-f]+$":
51657a06dfSSerge Semin    type: object
52657a06dfSSerge Semin    properties:
53657a06dfSSerge Semin      compatible:
54657a06dfSSerge Semin        const: snps,dw-apb-gpio-port
55657a06dfSSerge Semin
56657a06dfSSerge Semin      reg:
57657a06dfSSerge Semin        maxItems: 1
58657a06dfSSerge Semin
59657a06dfSSerge Semin      gpio-controller: true
60657a06dfSSerge Semin
61657a06dfSSerge Semin      '#gpio-cells':
62657a06dfSSerge Semin        const: 2
63657a06dfSSerge Semin
64320630c4SKrzysztof Kozlowski      gpio-line-names:
65320630c4SKrzysztof Kozlowski        minItems: 1
66320630c4SKrzysztof Kozlowski        maxItems: 32
67320630c4SKrzysztof Kozlowski
68*0e6e3c6fSEmil Renner Berthing      gpio-ranges: true
69*0e6e3c6fSEmil Renner Berthing
70ef42a8daSSerge Semin      ngpios:
71ef42a8daSSerge Semin        default: 32
72ef42a8daSSerge Semin        minimum: 1
73ef42a8daSSerge Semin        maximum: 32
74ef42a8daSSerge Semin
75657a06dfSSerge Semin      snps,nr-gpios:
76657a06dfSSerge Semin        description: The number of GPIO pins exported by the port.
77ef42a8daSSerge Semin        deprecated: true
78086e9074SRob Herring        $ref: /schemas/types.yaml#/definitions/uint32
79657a06dfSSerge Semin        default: 32
80086e9074SRob Herring        minimum: 1
81657a06dfSSerge Semin        maximum: 32
82657a06dfSSerge Semin
83657a06dfSSerge Semin      interrupts:
84657a06dfSSerge Semin        description: |
85657a06dfSSerge Semin          The interrupts to the parent controller raised when GPIOs generate
86657a06dfSSerge Semin          the interrupts. If the controller provides one combined interrupt
87657a06dfSSerge Semin          for all GPIOs, specify a single interrupt. If the controller provides
88657a06dfSSerge Semin          one interrupt for each GPIO, provide a list of interrupts that
89657a06dfSSerge Semin          correspond to each of the GPIO pins.
90657a06dfSSerge Semin        minItems: 1
91657a06dfSSerge Semin        maxItems: 32
92657a06dfSSerge Semin
93657a06dfSSerge Semin      interrupt-controller: true
94657a06dfSSerge Semin
95657a06dfSSerge Semin      '#interrupt-cells':
96657a06dfSSerge Semin        const: 2
97657a06dfSSerge Semin
98657a06dfSSerge Semin    required:
99657a06dfSSerge Semin      - compatible
100657a06dfSSerge Semin      - reg
101657a06dfSSerge Semin      - gpio-controller
102657a06dfSSerge Semin      - '#gpio-cells'
103657a06dfSSerge Semin
104657a06dfSSerge Semin    dependencies:
105657a06dfSSerge Semin      interrupt-controller: [ interrupts ]
106657a06dfSSerge Semin
107657a06dfSSerge Semin    additionalProperties: false
108657a06dfSSerge Semin
109657a06dfSSerge SeminadditionalProperties: false
110657a06dfSSerge Semin
111657a06dfSSerge Seminrequired:
112657a06dfSSerge Semin  - compatible
113657a06dfSSerge Semin  - reg
114657a06dfSSerge Semin  - "#address-cells"
115657a06dfSSerge Semin  - "#size-cells"
116657a06dfSSerge Semin
117657a06dfSSerge Seminexamples:
118657a06dfSSerge Semin  - |
119657a06dfSSerge Semin    gpio: gpio@20000 {
120657a06dfSSerge Semin      compatible = "snps,dw-apb-gpio";
121657a06dfSSerge Semin      reg = <0x20000 0x1000>;
122657a06dfSSerge Semin      #address-cells = <1>;
123657a06dfSSerge Semin      #size-cells = <0>;
124657a06dfSSerge Semin
125657a06dfSSerge Semin      porta: gpio-port@0 {
126657a06dfSSerge Semin        compatible = "snps,dw-apb-gpio-port";
127657a06dfSSerge Semin        reg = <0>;
128657a06dfSSerge Semin        gpio-controller;
129657a06dfSSerge Semin        #gpio-cells = <2>;
130657a06dfSSerge Semin        snps,nr-gpios = <8>;
131657a06dfSSerge Semin        interrupt-controller;
132657a06dfSSerge Semin        #interrupt-cells = <2>;
133657a06dfSSerge Semin        interrupt-parent = <&vic1>;
134657a06dfSSerge Semin        interrupts = <0>;
135657a06dfSSerge Semin      };
136657a06dfSSerge Semin
137657a06dfSSerge Semin      portb: gpio-port@1 {
138657a06dfSSerge Semin        compatible = "snps,dw-apb-gpio-port";
139657a06dfSSerge Semin        reg = <1>;
140657a06dfSSerge Semin        gpio-controller;
141657a06dfSSerge Semin        #gpio-cells = <2>;
142657a06dfSSerge Semin        snps,nr-gpios = <8>;
143657a06dfSSerge Semin      };
144657a06dfSSerge Semin    };
145657a06dfSSerge Semin...
146