| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/pinctrl/raspberrypi,rp1-gpio.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: RaspberryPi RP1 GPIO/Pinconf/Pinmux Controller submodule |
| |
| maintainers: |
| - A. della Porta <andrea.porta@suse.com> |
| |
| description: |
| The RP1 chipset is a Multi Function Device containing, among other |
| sub-peripherals, a gpio/pinconf/mux controller whose 54 pins are grouped |
| into 3 banks. |
| It works also as an interrupt controller for those gpios. |
| |
| properties: |
| compatible: |
| const: raspberrypi,rp1-gpio |
| |
| reg: |
| maxItems: 3 |
| description: One reg specifier for each one of the 3 pin banks. |
| |
| '#gpio-cells': |
| description: The first cell is the pin number and the second cell is used |
| to specify the flags (see include/dt-bindings/gpio/gpio.h). |
| const: 2 |
| |
| gpio-controller: true |
| |
| gpio-ranges: |
| maxItems: 1 |
| |
| gpio-line-names: |
| maxItems: 54 |
| |
| interrupts: |
| maxItems: 3 |
| description: One interrupt specifier for each one of the 3 pin banks. |
| |
| '#interrupt-cells': |
| description: |
| Specifies the Bank number [0, 1, 2] and Flags as defined in |
| include/dt-bindings/interrupt-controller/irq.h. |
| const: 2 |
| |
| interrupt-controller: true |
| |
| patternProperties: |
| '-state$': |
| oneOf: |
| - $ref: '#/$defs/raspberrypi-rp1-state' |
| - patternProperties: |
| '-pins$': |
| $ref: '#/$defs/raspberrypi-rp1-state' |
| additionalProperties: false |
| |
| $defs: |
| raspberrypi-rp1-state: |
| allOf: |
| - $ref: pincfg-node.yaml# |
| - $ref: pinmux-node.yaml# |
| |
| description: |
| Pin controller client devices use pin configuration subnodes (children |
| and grandchildren) for desired pin configuration. |
| Client device subnodes use below standard properties. |
| |
| properties: |
| pins: |
| description: |
| List of gpio pins affected by the properties specified in this |
| subnode (either this or "groups" must be specified). |
| items: |
| pattern: '^gpio([0-9]|[1-4][0-9]|5[0-3])$' |
| |
| groups: |
| description: |
| List of groups affected by the properties specified in this |
| subnode (either this or "pins" must be specified). |
| items: |
| anyOf: |
| - pattern: '^gpio([0-9]|[1-4][0-9]|5[0-3])$' |
| - enum: [ uart0, uart0_ctrl, uart1, uart1_ctrl, uart2, uart2_ctrl, |
| uart3, uart3_ctrl, uart4, uart4_ctrl, uart5_0, |
| uart5_0_ctrl, uart5_1, uart5_1_ctrl, uart5_2, |
| uart5_2_ctrl, uart5_3, |
| sd0, sd1, |
| i2s0, i2s0_dual, i2s0_quad, i2s1, i2s1_dual, i2s1_quad, |
| i2s2_0, i2s2_0_dual, i2s2_1, i2s2_1_dual, |
| i2c4_0, i2c4_1, i2c4_2, i2c4_3, i2c6_0, i2c6_1, i2c5_0, |
| i2c5_1, i2c5_2, i2c5_3, i2c0_0, i2c0_1, i2c1_0, i2c1_1, |
| i2c2_0, i2c2_1, i2c3_0, i2c3_1, i2c3_2, |
| dpi_16bit, dpi_16bit_cpadhi, dpi_16bit_pad666, |
| dpi_18bit, dpi_18bit_cpadhi, dpi_24bit, |
| spi0, spi0_quad, spi1, spi2, spi3, spi4, spi5, spi6_0, |
| spi6_1, spi7_0, spi7_1, spi8_0, spi8_1, |
| aaud_0, aaud_1, aaud_2, aaud_3, aaud_4, |
| vbus0_0, vbus0_1, vbus1, vbus2, vbus3, |
| mic_0, mic_1, mic_2, mic_3, |
| ir ] |
| |
| function: |
| enum: [ alt0, alt1, alt2, alt3, alt4, gpio, alt6, alt7, alt8, none, |
| aaud, dcd0, dpi, dsi0_te_ext, dsi1_te_ext, dsr0, dtr0, gpclk0, |
| gpclk1, gpclk2, gpclk3, gpclk4, gpclk5, i2c0, i2c1, i2c2, i2c3, |
| i2c4, i2c5, i2c6, i2s0, i2s1, i2s2, ir, mic, pcie_clkreq_n, |
| pio, proc_rio, pwm0, pwm1, ri0, sd0, sd1, spi0, spi1, spi2, |
| spi3, spi4, spi5, spi6, spi7, spi8, uart0, uart1, uart2, uart3, |
| uart4, uart5, vbus0, vbus1, vbus2, vbus3 ] |
| |
| description: |
| Specify the alternative function to be configured for the specified |
| pins. |
| |
| bias-disable: true |
| bias-pull-down: true |
| bias-pull-up: true |
| input-enable: true |
| input-schmitt-enable: true |
| output-enable: true |
| output-high: true |
| output-low: true |
| slew-rate: |
| description: 0 is slow slew rate, 1 is fast slew rate |
| enum: [ 0, 1 ] |
| drive-strength: |
| enum: [ 2, 4, 8, 12 ] |
| |
| required: |
| - function |
| |
| oneOf: |
| - required: [ groups ] |
| - required: [ pins ] |
| |
| additionalProperties: false |
| |
| allOf: |
| - $ref: pinctrl.yaml# |
| |
| required: |
| - reg |
| - compatible |
| - '#gpio-cells' |
| - gpio-controller |
| - interrupts |
| - '#interrupt-cells' |
| - interrupt-controller |
| |
| unevaluatedProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/interrupt-controller/irq.h> |
| |
| rp1 { |
| #address-cells = <2>; |
| #size-cells = <2>; |
| |
| rp1_gpio: pinctrl@c0400d0000 { |
| reg = <0xc0 0x400d0000 0x0 0xc000>, |
| <0xc0 0x400e0000 0x0 0xc000>, |
| <0xc0 0x400f0000 0x0 0xc000>; |
| compatible = "raspberrypi,rp1-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| interrupts = <0 IRQ_TYPE_LEVEL_HIGH>, |
| <1 IRQ_TYPE_LEVEL_HIGH>, |
| <2 IRQ_TYPE_LEVEL_HIGH>; |
| gpio-line-names = |
| "ID_SDA", // GPIO0 |
| "ID_SCL", // GPIO1 |
| "GPIO2", "GPIO3", "GPIO4", "GPIO5", "GPIO6", |
| "GPIO7", "GPIO8", "GPIO9", "GPIO10", "GPIO11", |
| "GPIO12", "GPIO13", "GPIO14", "GPIO15", "GPIO16", |
| "GPIO17", "GPIO18", "GPIO19", "GPIO20", "GPIO21", |
| "GPIO22", "GPIO23", "GPIO24", "GPIO25", "GPIO26", |
| "GPIO27", |
| "PCIE_RP1_WAKE", // GPIO28 |
| "FAN_TACH", // GPIO29 |
| "HOST_SDA", // GPIO30 |
| "HOST_SCL", // GPIO31 |
| "ETH_RST_N", // GPIO32 |
| "", // GPIO33 |
| "CD0_IO0_MICCLK", // GPIO34 |
| "CD0_IO0_MICDAT0", // GPIO35 |
| "RP1_PCIE_CLKREQ_N", // GPIO36 |
| "", // GPIO37 |
| "CD0_SDA", // GPIO38 |
| "CD0_SCL", // GPIO39 |
| "CD1_SDA", // GPIO40 |
| "CD1_SCL", // GPIO41 |
| "USB_VBUS_EN", // GPIO42 |
| "USB_OC_N", // GPIO43 |
| "RP1_STAT_LED", // GPIO44 |
| "FAN_PWM", // GPIO45 |
| "CD1_IO0_MICCLK", // GPIO46 |
| "2712_WAKE", // GPIO47 |
| "CD1_IO1_MICDAT1", // GPIO48 |
| "EN_MAX_USB_CUR", // GPIO49 |
| "", // GPIO50 |
| "", // GPIO51 |
| "", // GPIO52 |
| ""; // GPIO53 |
| |
| rp1-i2s0-default-state { |
| function = "i2s0"; |
| pins = "gpio18", "gpio19", "gpio20", "gpio21"; |
| bias-disable; |
| }; |
| |
| rp1-uart0-default-state { |
| txd-pins { |
| function = "uart0"; |
| pins = "gpio14"; |
| bias-disable; |
| }; |
| |
| rxd-pins { |
| function = "uart0"; |
| pins = "gpio15"; |
| bias-pull-up; |
| }; |
| }; |
| }; |
| }; |