GNU Linux-libre 5.10.217-gnu1
[releases.git] / Documentation / devicetree / bindings / gpio / socionext,uniphier-gpio.yaml
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/gpio/socionext,uniphier-gpio.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: UniPhier GPIO controller
8
9 maintainers:
10   - Masahiro Yamada <yamada.masahiro@socionext.com>
11
12 properties:
13   $nodename:
14     pattern: "^gpio@[0-9a-f]+$"
15
16   compatible:
17     const: socionext,uniphier-gpio
18
19   reg:
20     maxItems: 1
21
22   gpio-controller: true
23
24   "#gpio-cells":
25     const: 2
26
27   interrupt-controller: true
28
29   "#interrupt-cells":
30     description: |
31       The first cell defines the interrupt number.
32       The second cell bits[3:0] is used to specify trigger type as follows:
33         1 = low-to-high edge triggered
34         2 = high-to-low edge triggered
35         4 = active high level-sensitive
36         8 = active low level-sensitive
37       Valid combinations are 1, 2, 3, 4, 8.
38     const: 2
39
40   ngpios:
41     minimum: 0
42     maximum: 512
43
44   gpio-ranges: true
45
46   gpio-ranges-group-names:
47     $ref: /schemas/types.yaml#/definitions/string-array
48
49   socionext,interrupt-ranges:
50     description: |
51       Specifies an interrupt number mapping between this GPIO controller and
52       its interrupt parent, in the form of arbitrary number of
53       <child-interrupt-base parent-interrupt-base length> triplets.
54     $ref: /schemas/types.yaml#/definitions/uint32-matrix
55
56 required:
57   - compatible
58   - reg
59   - gpio-controller
60   - "#gpio-cells"
61   - interrupt-controller
62   - "#interrupt-cells"
63   - ngpios
64   - gpio-ranges
65   - socionext,interrupt-ranges
66
67 additionalProperties: false
68
69 examples:
70   - |
71     #include <dt-bindings/gpio/gpio.h>
72     #include <dt-bindings/gpio/uniphier-gpio.h>
73
74     gpio: gpio@55000000 {
75         compatible = "socionext,uniphier-gpio";
76         reg = <0x55000000 0x200>;
77         interrupt-parent = <&aidet>;
78         interrupt-controller;
79         #interrupt-cells = <2>;
80         gpio-controller;
81         #gpio-cells = <2>;
82         gpio-ranges = <&pinctrl 0 0 0>;
83         gpio-ranges-group-names = "gpio_range";
84         ngpios = <248>;
85         socionext,interrupt-ranges = <0 48 16>, <16 154 5>, <21 217 3>;
86     };
87
88     // Consumer:
89     // Please note UNIPHIER_GPIO_PORT(29, 4) represents PORT294 in the SoC
90     // document. Unfortunately, only the one's place is octal in the port
91     // numbering. (That is, PORT 8, 9, 18, 19, 28, 29, ... do not exist.)
92     // UNIPHIER_GPIO_PORT() is a helper macro to calculate 29 * 8 + 4.
93     sdhci0_pwrseq {
94         compatible = "mmc-pwrseq-emmc";
95         reset-gpios = <&gpio UNIPHIER_GPIO_PORT(29, 4) GPIO_ACTIVE_LOW>;
96     };