xref: /linux/Documentation/devicetree/bindings/pinctrl/raspberrypi,rp1-gpio.yaml (revision 115e74a29b530d121891238e9551c4bcdf7b04b5)
1*c1a9d356SAndrea della Porta# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*c1a9d356SAndrea della Porta%YAML 1.2
3*c1a9d356SAndrea della Porta---
4*c1a9d356SAndrea della Porta$id: http://devicetree.org/schemas/pinctrl/raspberrypi,rp1-gpio.yaml#
5*c1a9d356SAndrea della Porta$schema: http://devicetree.org/meta-schemas/core.yaml#
6*c1a9d356SAndrea della Porta
7*c1a9d356SAndrea della Portatitle: RaspberryPi RP1 GPIO/Pinconf/Pinmux Controller submodule
8*c1a9d356SAndrea della Porta
9*c1a9d356SAndrea della Portamaintainers:
10*c1a9d356SAndrea della Porta  - A. della Porta <andrea.porta@suse.com>
11*c1a9d356SAndrea della Porta
12*c1a9d356SAndrea della Portadescription:
13*c1a9d356SAndrea della Porta  The RP1 chipset is a Multi Function Device containing, among other
14*c1a9d356SAndrea della Porta  sub-peripherals, a gpio/pinconf/mux controller whose 54 pins are grouped
15*c1a9d356SAndrea della Porta  into 3 banks.
16*c1a9d356SAndrea della Porta  It works also as an interrupt controller for those gpios.
17*c1a9d356SAndrea della Porta
18*c1a9d356SAndrea della Portaproperties:
19*c1a9d356SAndrea della Porta  compatible:
20*c1a9d356SAndrea della Porta    const: raspberrypi,rp1-gpio
21*c1a9d356SAndrea della Porta
22*c1a9d356SAndrea della Porta  reg:
23*c1a9d356SAndrea della Porta    maxItems: 3
24*c1a9d356SAndrea della Porta    description: One reg specifier for each one of the 3 pin banks.
25*c1a9d356SAndrea della Porta
26*c1a9d356SAndrea della Porta  '#gpio-cells':
27*c1a9d356SAndrea della Porta    description: The first cell is the pin number and the second cell is used
28*c1a9d356SAndrea della Porta      to specify the flags (see include/dt-bindings/gpio/gpio.h).
29*c1a9d356SAndrea della Porta    const: 2
30*c1a9d356SAndrea della Porta
31*c1a9d356SAndrea della Porta  gpio-controller: true
32*c1a9d356SAndrea della Porta
33*c1a9d356SAndrea della Porta  gpio-ranges:
34*c1a9d356SAndrea della Porta    maxItems: 1
35*c1a9d356SAndrea della Porta
36*c1a9d356SAndrea della Porta  gpio-line-names:
37*c1a9d356SAndrea della Porta    maxItems: 54
38*c1a9d356SAndrea della Porta
39*c1a9d356SAndrea della Porta  interrupts:
40*c1a9d356SAndrea della Porta    maxItems: 3
41*c1a9d356SAndrea della Porta    description: One interrupt specifier for each one of the 3 pin banks.
42*c1a9d356SAndrea della Porta
43*c1a9d356SAndrea della Porta  '#interrupt-cells':
44*c1a9d356SAndrea della Porta    description:
45*c1a9d356SAndrea della Porta      Specifies the Bank number [0, 1, 2] and Flags as defined in
46*c1a9d356SAndrea della Porta      include/dt-bindings/interrupt-controller/irq.h.
47*c1a9d356SAndrea della Porta    const: 2
48*c1a9d356SAndrea della Porta
49*c1a9d356SAndrea della Porta  interrupt-controller: true
50*c1a9d356SAndrea della Porta
51*c1a9d356SAndrea della PortapatternProperties:
52*c1a9d356SAndrea della Porta  '-state$':
53*c1a9d356SAndrea della Porta    oneOf:
54*c1a9d356SAndrea della Porta      - $ref: '#/$defs/raspberrypi-rp1-state'
55*c1a9d356SAndrea della Porta      - patternProperties:
56*c1a9d356SAndrea della Porta          '-pins$':
57*c1a9d356SAndrea della Porta            $ref: '#/$defs/raspberrypi-rp1-state'
58*c1a9d356SAndrea della Porta        additionalProperties: false
59*c1a9d356SAndrea della Porta
60*c1a9d356SAndrea della Porta$defs:
61*c1a9d356SAndrea della Porta  raspberrypi-rp1-state:
62*c1a9d356SAndrea della Porta    allOf:
63*c1a9d356SAndrea della Porta      - $ref: pincfg-node.yaml#
64*c1a9d356SAndrea della Porta      - $ref: pinmux-node.yaml#
65*c1a9d356SAndrea della Porta
66*c1a9d356SAndrea della Porta    description:
67*c1a9d356SAndrea della Porta      Pin controller client devices use pin configuration subnodes (children
68*c1a9d356SAndrea della Porta      and grandchildren) for desired pin configuration.
69*c1a9d356SAndrea della Porta      Client device subnodes use below standard properties.
70*c1a9d356SAndrea della Porta
71*c1a9d356SAndrea della Porta    properties:
72*c1a9d356SAndrea della Porta      pins:
73*c1a9d356SAndrea della Porta        description:
74*c1a9d356SAndrea della Porta          List of gpio pins affected by the properties specified in this
75*c1a9d356SAndrea della Porta          subnode.
76*c1a9d356SAndrea della Porta        items:
77*c1a9d356SAndrea della Porta          pattern: '^gpio([0-9]|[1-4][0-9]|5[0-3])$'
78*c1a9d356SAndrea della Porta
79*c1a9d356SAndrea della Porta      function:
80*c1a9d356SAndrea della Porta        enum: [ alt0, alt1, alt2, alt3, alt4, gpio, alt6, alt7, alt8, none,
81*c1a9d356SAndrea della Porta                aaud, dcd0, dpi, dsi0_te_ext, dsi1_te_ext, dsr0, dtr0, gpclk0,
82*c1a9d356SAndrea della Porta                gpclk1, gpclk2, gpclk3, gpclk4, gpclk5, i2c0, i2c1, i2c2, i2c3,
83*c1a9d356SAndrea della Porta                i2c4, i2c5, i2c6, i2s0, i2s1, i2s2, ir, mic, pcie_clkreq_n,
84*c1a9d356SAndrea della Porta                pio, proc_rio, pwm0, pwm1, ri0, sd0, sd1, spi0, spi1, spi2,
85*c1a9d356SAndrea della Porta                spi3, spi4, spi5, spi6, spi7, spi8, uart0, uart1, uart2, uart3,
86*c1a9d356SAndrea della Porta                uart4, uart5, vbus0, vbus1, vbus2, vbus3 ]
87*c1a9d356SAndrea della Porta
88*c1a9d356SAndrea della Porta        description:
89*c1a9d356SAndrea della Porta          Specify the alternative function to be configured for the specified
90*c1a9d356SAndrea della Porta          pins.
91*c1a9d356SAndrea della Porta
92*c1a9d356SAndrea della Porta      bias-disable: true
93*c1a9d356SAndrea della Porta      bias-pull-down: true
94*c1a9d356SAndrea della Porta      bias-pull-up: true
95*c1a9d356SAndrea della Porta      input-enable: true
96*c1a9d356SAndrea della Porta      input-schmitt-enable: true
97*c1a9d356SAndrea della Porta      output-enable: true
98*c1a9d356SAndrea della Porta      output-high: true
99*c1a9d356SAndrea della Porta      output-low: true
100*c1a9d356SAndrea della Porta      slew-rate:
101*c1a9d356SAndrea della Porta        description: 0 is slow slew rate, 1 is fast slew rate
102*c1a9d356SAndrea della Porta        enum: [ 0, 1 ]
103*c1a9d356SAndrea della Porta      drive-strength:
104*c1a9d356SAndrea della Porta        enum: [ 2, 4, 8, 12 ]
105*c1a9d356SAndrea della Porta
106*c1a9d356SAndrea della Porta    additionalProperties: false
107*c1a9d356SAndrea della Porta
108*c1a9d356SAndrea della PortaallOf:
109*c1a9d356SAndrea della Porta  - $ref: pinctrl.yaml#
110*c1a9d356SAndrea della Porta
111*c1a9d356SAndrea della Portarequired:
112*c1a9d356SAndrea della Porta  - reg
113*c1a9d356SAndrea della Porta  - compatible
114*c1a9d356SAndrea della Porta  - '#gpio-cells'
115*c1a9d356SAndrea della Porta  - gpio-controller
116*c1a9d356SAndrea della Porta  - interrupts
117*c1a9d356SAndrea della Porta  - '#interrupt-cells'
118*c1a9d356SAndrea della Porta  - interrupt-controller
119*c1a9d356SAndrea della Porta
120*c1a9d356SAndrea della PortaunevaluatedProperties: false
121*c1a9d356SAndrea della Porta
122*c1a9d356SAndrea della Portaexamples:
123*c1a9d356SAndrea della Porta  - |
124*c1a9d356SAndrea della Porta    #include <dt-bindings/interrupt-controller/irq.h>
125*c1a9d356SAndrea della Porta
126*c1a9d356SAndrea della Porta    rp1 {
127*c1a9d356SAndrea della Porta        #address-cells = <2>;
128*c1a9d356SAndrea della Porta        #size-cells = <2>;
129*c1a9d356SAndrea della Porta
130*c1a9d356SAndrea della Porta        rp1_gpio: pinctrl@c0400d0000 {
131*c1a9d356SAndrea della Porta            reg = <0xc0 0x400d0000  0x0 0xc000>,
132*c1a9d356SAndrea della Porta                  <0xc0 0x400e0000  0x0 0xc000>,
133*c1a9d356SAndrea della Porta                  <0xc0 0x400f0000  0x0 0xc000>;
134*c1a9d356SAndrea della Porta            compatible = "raspberrypi,rp1-gpio";
135*c1a9d356SAndrea della Porta            gpio-controller;
136*c1a9d356SAndrea della Porta            #gpio-cells = <2>;
137*c1a9d356SAndrea della Porta            interrupt-controller;
138*c1a9d356SAndrea della Porta            #interrupt-cells = <2>;
139*c1a9d356SAndrea della Porta            interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
140*c1a9d356SAndrea della Porta                         <1 IRQ_TYPE_LEVEL_HIGH>,
141*c1a9d356SAndrea della Porta                         <2 IRQ_TYPE_LEVEL_HIGH>;
142*c1a9d356SAndrea della Porta            gpio-line-names =
143*c1a9d356SAndrea della Porta                   "ID_SDA", // GPIO0
144*c1a9d356SAndrea della Porta                   "ID_SCL", // GPIO1
145*c1a9d356SAndrea della Porta                   "GPIO2", "GPIO3", "GPIO4", "GPIO5", "GPIO6",
146*c1a9d356SAndrea della Porta                   "GPIO7", "GPIO8", "GPIO9", "GPIO10", "GPIO11",
147*c1a9d356SAndrea della Porta                   "GPIO12", "GPIO13", "GPIO14", "GPIO15", "GPIO16",
148*c1a9d356SAndrea della Porta                   "GPIO17", "GPIO18", "GPIO19", "GPIO20", "GPIO21",
149*c1a9d356SAndrea della Porta                   "GPIO22", "GPIO23", "GPIO24", "GPIO25", "GPIO26",
150*c1a9d356SAndrea della Porta                   "GPIO27",
151*c1a9d356SAndrea della Porta                   "PCIE_RP1_WAKE", // GPIO28
152*c1a9d356SAndrea della Porta                   "FAN_TACH", // GPIO29
153*c1a9d356SAndrea della Porta                   "HOST_SDA", // GPIO30
154*c1a9d356SAndrea della Porta                   "HOST_SCL", // GPIO31
155*c1a9d356SAndrea della Porta                   "ETH_RST_N", // GPIO32
156*c1a9d356SAndrea della Porta                   "", // GPIO33
157*c1a9d356SAndrea della Porta                   "CD0_IO0_MICCLK", // GPIO34
158*c1a9d356SAndrea della Porta                   "CD0_IO0_MICDAT0", // GPIO35
159*c1a9d356SAndrea della Porta                   "RP1_PCIE_CLKREQ_N", // GPIO36
160*c1a9d356SAndrea della Porta                   "", // GPIO37
161*c1a9d356SAndrea della Porta                   "CD0_SDA", // GPIO38
162*c1a9d356SAndrea della Porta                   "CD0_SCL", // GPIO39
163*c1a9d356SAndrea della Porta                   "CD1_SDA", // GPIO40
164*c1a9d356SAndrea della Porta                   "CD1_SCL", // GPIO41
165*c1a9d356SAndrea della Porta                   "USB_VBUS_EN", // GPIO42
166*c1a9d356SAndrea della Porta                   "USB_OC_N", // GPIO43
167*c1a9d356SAndrea della Porta                   "RP1_STAT_LED", // GPIO44
168*c1a9d356SAndrea della Porta                   "FAN_PWM", // GPIO45
169*c1a9d356SAndrea della Porta                   "CD1_IO0_MICCLK", // GPIO46
170*c1a9d356SAndrea della Porta                   "2712_WAKE", // GPIO47
171*c1a9d356SAndrea della Porta                   "CD1_IO1_MICDAT1", // GPIO48
172*c1a9d356SAndrea della Porta                   "EN_MAX_USB_CUR", // GPIO49
173*c1a9d356SAndrea della Porta                   "", // GPIO50
174*c1a9d356SAndrea della Porta                   "", // GPIO51
175*c1a9d356SAndrea della Porta                   "", // GPIO52
176*c1a9d356SAndrea della Porta                   ""; // GPIO53
177*c1a9d356SAndrea della Porta
178*c1a9d356SAndrea della Porta            rp1-i2s0-default-state {
179*c1a9d356SAndrea della Porta                function = "i2s0";
180*c1a9d356SAndrea della Porta                pins = "gpio18", "gpio19", "gpio20", "gpio21";
181*c1a9d356SAndrea della Porta                bias-disable;
182*c1a9d356SAndrea della Porta            };
183*c1a9d356SAndrea della Porta
184*c1a9d356SAndrea della Porta            rp1-uart0-default-state {
185*c1a9d356SAndrea della Porta                txd-pins {
186*c1a9d356SAndrea della Porta                    function = "uart0";
187*c1a9d356SAndrea della Porta                    pins = "gpio14";
188*c1a9d356SAndrea della Porta                    bias-disable;
189*c1a9d356SAndrea della Porta                };
190*c1a9d356SAndrea della Porta
191*c1a9d356SAndrea della Porta                rxd-pins {
192*c1a9d356SAndrea della Porta                    function = "uart0";
193*c1a9d356SAndrea della Porta                    pins = "gpio15";
194*c1a9d356SAndrea della Porta                    bias-pull-up;
195*c1a9d356SAndrea della Porta                };
196*c1a9d356SAndrea della Porta            };
197*c1a9d356SAndrea della Porta        };
198*c1a9d356SAndrea della Porta    };
199