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