17431b391SEmil Renner Berthing# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 27431b391SEmil Renner Berthing%YAML 1.2 37431b391SEmil Renner Berthing--- 47431b391SEmil Renner Berthing$id: http://devicetree.org/schemas/pinctrl/starfive,jh7100-pinctrl.yaml# 57431b391SEmil Renner Berthing$schema: http://devicetree.org/meta-schemas/core.yaml# 67431b391SEmil Renner Berthing 7dd3cb467SAndrew Lunntitle: StarFive JH7100 Pin Controller 87431b391SEmil Renner Berthing 97431b391SEmil Renner Berthingdescription: | 107431b391SEmil Renner Berthing Bindings for the JH7100 RISC-V SoC from StarFive Ltd. 117431b391SEmil Renner Berthing 127431b391SEmil Renner Berthing Out of the SoC's many pins only the ones named PAD_GPIO[0] to PAD_GPIO[63] 137431b391SEmil Renner Berthing and PAD_FUNC_SHARE[0] to PAD_FUNC_SHARE[141] can be multiplexed and have 147431b391SEmil Renner Berthing configurable bias, drive strength, schmitt trigger etc. The SoC has an 157431b391SEmil Renner Berthing interesting 2-layered approach to pin muxing best illustrated by the diagram 167431b391SEmil Renner Berthing below. 177431b391SEmil Renner Berthing 187431b391SEmil Renner Berthing Signal group 0, 1, ... or 6 197431b391SEmil Renner Berthing ___|___ 207431b391SEmil Renner Berthing | | 217431b391SEmil Renner Berthing LCD output -----------------| | 227431b391SEmil Renner Berthing CMOS Camera interface ------| |--- PAD_GPIO[0] 237431b391SEmil Renner Berthing Ethernet PHY interface -----| MUX |--- PAD_GPIO[1] 247431b391SEmil Renner Berthing ... | | ... 257431b391SEmil Renner Berthing | |--- PAD_GPIO[63] 267431b391SEmil Renner Berthing -------- GPIO0 ------------| | 277431b391SEmil Renner Berthing | -------|-- GPIO1 --------| |--- PAD_FUNC_SHARE[0] 287431b391SEmil Renner Berthing | | | | | |--- PAD_FUNC_SHARE[1] 297431b391SEmil Renner Berthing | | | | ... | | ... 307431b391SEmil Renner Berthing | | | | | |--- PAD_FUNC_SHARE[141] 317431b391SEmil Renner Berthing | | -----|---|-- GPIO63 ---| | 327431b391SEmil Renner Berthing | | | | | | ------- 337431b391SEmil Renner Berthing UART0 UART1 -- 347431b391SEmil Renner Berthing 357431b391SEmil Renner Berthing 367431b391SEmil Renner Berthing The big MUX in the diagram only has 7 different ways of mapping peripherals 377431b391SEmil Renner Berthing on the left to pins on the right. StarFive calls the 7 configurations "signal 387431b391SEmil Renner Berthing groups". 397431b391SEmil Renner Berthing However some peripherals have their I/O go through the 64 "GPIOs". The 407431b391SEmil Renner Berthing diagram only shows UART0 and UART1, but this also includes a number of other 417431b391SEmil Renner Berthing UARTs, I2Cs, SPIs, PWMs etc. All these peripherals are connected to all 64 427431b391SEmil Renner Berthing GPIOs such that any GPIO can be set up to be controlled by any of the 437431b391SEmil Renner Berthing peripherals. 447431b391SEmil Renner Berthing Note that signal group 0 doesn't map any of the GPIOs to pins, and only 457431b391SEmil Renner Berthing signal group 1 maps the GPIOs to the pins named PAD_GPIO[0] to PAD_GPIO[63]. 467431b391SEmil Renner Berthing 477431b391SEmil Renner Berthingmaintainers: 487431b391SEmil Renner Berthing - Emil Renner Berthing <kernel@esmil.dk> 497431b391SEmil Renner Berthing - Drew Fustini <drew@beagleboard.org> 507431b391SEmil Renner Berthing 517431b391SEmil Renner Berthingproperties: 527431b391SEmil Renner Berthing compatible: 537431b391SEmil Renner Berthing const: starfive,jh7100-pinctrl 547431b391SEmil Renner Berthing 557431b391SEmil Renner Berthing reg: 567431b391SEmil Renner Berthing minItems: 2 577431b391SEmil Renner Berthing maxItems: 2 587431b391SEmil Renner Berthing 597431b391SEmil Renner Berthing reg-names: 607431b391SEmil Renner Berthing items: 617431b391SEmil Renner Berthing - const: gpio 627431b391SEmil Renner Berthing - const: padctl 637431b391SEmil Renner Berthing 647431b391SEmil Renner Berthing clocks: 657431b391SEmil Renner Berthing maxItems: 1 667431b391SEmil Renner Berthing 677431b391SEmil Renner Berthing resets: 687431b391SEmil Renner Berthing maxItems: 1 697431b391SEmil Renner Berthing 707431b391SEmil Renner Berthing gpio-controller: true 717431b391SEmil Renner Berthing 727431b391SEmil Renner Berthing "#gpio-cells": 737431b391SEmil Renner Berthing const: 2 747431b391SEmil Renner Berthing 757431b391SEmil Renner Berthing interrupts: 767431b391SEmil Renner Berthing maxItems: 1 777431b391SEmil Renner Berthing description: The GPIO parent interrupt. 787431b391SEmil Renner Berthing 797431b391SEmil Renner Berthing interrupt-controller: true 807431b391SEmil Renner Berthing 817431b391SEmil Renner Berthing "#interrupt-cells": 827431b391SEmil Renner Berthing const: 2 837431b391SEmil Renner Berthing 847431b391SEmil Renner Berthing starfive,signal-group: 857431b391SEmil Renner Berthing description: | 867431b391SEmil Renner Berthing Select one of the 7 signal groups. If this property is not set it 877431b391SEmil Renner Berthing defaults to the configuration already chosen by the earlier boot stages. 887431b391SEmil Renner Berthing $ref: /schemas/types.yaml#/definitions/uint32 897431b391SEmil Renner Berthing enum: [0, 1, 2, 3, 4, 5, 6] 907431b391SEmil Renner Berthing 917431b391SEmil Renner Berthingrequired: 927431b391SEmil Renner Berthing - compatible 937431b391SEmil Renner Berthing - reg 947431b391SEmil Renner Berthing - reg-names 957431b391SEmil Renner Berthing - clocks 967431b391SEmil Renner Berthing - gpio-controller 977431b391SEmil Renner Berthing - "#gpio-cells" 987431b391SEmil Renner Berthing - interrupts 997431b391SEmil Renner Berthing - interrupt-controller 1007431b391SEmil Renner Berthing - "#interrupt-cells" 1017431b391SEmil Renner Berthing 1027431b391SEmil Renner BerthingpatternProperties: 1037431b391SEmil Renner Berthing '-[0-9]+$': 1047431b391SEmil Renner Berthing type: object 1057431b391SEmil Renner Berthing patternProperties: 1067431b391SEmil Renner Berthing '-pins$': 1077431b391SEmil Renner Berthing type: object 1087431b391SEmil Renner Berthing description: | 1097431b391SEmil Renner Berthing A pinctrl node should contain at least one subnode representing the 1107431b391SEmil Renner Berthing pinctrl groups available on the machine. Each subnode will list the 1117431b391SEmil Renner Berthing pins it needs, and how they should be configured, with regard to 1127431b391SEmil Renner Berthing muxer configuration, bias, input enable/disable, input schmitt 1137431b391SEmil Renner Berthing trigger enable/disable, slew-rate and drive strength. 114*49cd1dd1SRob Herring $ref: /schemas/pinctrl/pincfg-node.yaml 1157431b391SEmil Renner Berthing 1167431b391SEmil Renner Berthing properties: 1177431b391SEmil Renner Berthing pins: 1187431b391SEmil Renner Berthing description: | 1197431b391SEmil Renner Berthing The list of pin identifiers that properties in the node apply to. 1207431b391SEmil Renner Berthing This should be set using either the PAD_GPIO or PAD_FUNC_SHARE 1217431b391SEmil Renner Berthing macros. 1227431b391SEmil Renner Berthing Either this or "pinmux" has to be specified, but not both. 123*49cd1dd1SRob Herring $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pins 1247431b391SEmil Renner Berthing 1257431b391SEmil Renner Berthing pinmux: 1267431b391SEmil Renner Berthing description: | 1277431b391SEmil Renner Berthing The list of GPIOs and their mux settings that properties in the 1287431b391SEmil Renner Berthing node apply to. This should be set using the GPIOMUX macro. 1297431b391SEmil Renner Berthing Either this or "pins" has to be specified, but not both. 130*49cd1dd1SRob Herring $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pinmux 1317431b391SEmil Renner Berthing 1327431b391SEmil Renner Berthing bias-disable: true 1337431b391SEmil Renner Berthing 1347431b391SEmil Renner Berthing bias-pull-up: 1357431b391SEmil Renner Berthing type: boolean 1367431b391SEmil Renner Berthing 1377431b391SEmil Renner Berthing bias-pull-down: 1387431b391SEmil Renner Berthing type: boolean 1397431b391SEmil Renner Berthing 1407431b391SEmil Renner Berthing drive-strength: 1417431b391SEmil Renner Berthing enum: [ 14, 21, 28, 35, 42, 49, 56, 63 ] 1427431b391SEmil Renner Berthing 1437431b391SEmil Renner Berthing input-enable: true 1447431b391SEmil Renner Berthing 1457431b391SEmil Renner Berthing input-disable: true 1467431b391SEmil Renner Berthing 1477431b391SEmil Renner Berthing input-schmitt-enable: true 1487431b391SEmil Renner Berthing 1497431b391SEmil Renner Berthing input-schmitt-disable: true 1507431b391SEmil Renner Berthing 1517431b391SEmil Renner Berthing slew-rate: 1527431b391SEmil Renner Berthing maximum: 7 1537431b391SEmil Renner Berthing 1547431b391SEmil Renner Berthing starfive,strong-pull-up: 1557431b391SEmil Renner Berthing description: enable strong pull-up. 1567431b391SEmil Renner Berthing type: boolean 1577431b391SEmil Renner Berthing 1587431b391SEmil Renner Berthing additionalProperties: false 1597431b391SEmil Renner Berthing 1607431b391SEmil Renner Berthing additionalProperties: false 1617431b391SEmil Renner Berthing 1627431b391SEmil Renner BerthingadditionalProperties: false 1637431b391SEmil Renner Berthing 1647431b391SEmil Renner Berthingexamples: 1657431b391SEmil Renner Berthing - | 1667431b391SEmil Renner Berthing #include <dt-bindings/clock/starfive-jh7100.h> 1677431b391SEmil Renner Berthing #include <dt-bindings/reset/starfive-jh7100.h> 168ba99b756SJianlong Huang #include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h> 1697431b391SEmil Renner Berthing 1707431b391SEmil Renner Berthing soc { 1717431b391SEmil Renner Berthing #address-cells = <2>; 1727431b391SEmil Renner Berthing #size-cells = <2>; 1737431b391SEmil Renner Berthing 1747431b391SEmil Renner Berthing pinctrl@11910000 { 1757431b391SEmil Renner Berthing compatible = "starfive,jh7100-pinctrl"; 1767431b391SEmil Renner Berthing reg = <0x0 0x11910000 0x0 0x10000>, 1777431b391SEmil Renner Berthing <0x0 0x11858000 0x0 0x1000>; 1787431b391SEmil Renner Berthing reg-names = "gpio", "padctl"; 1797431b391SEmil Renner Berthing clocks = <&clkgen JH7100_CLK_GPIO_APB>; 1807431b391SEmil Renner Berthing resets = <&clkgen JH7100_RSTN_GPIO_APB>; 1817431b391SEmil Renner Berthing interrupts = <32>; 1827431b391SEmil Renner Berthing gpio-controller; 1837431b391SEmil Renner Berthing #gpio-cells = <2>; 1847431b391SEmil Renner Berthing interrupt-controller; 1857431b391SEmil Renner Berthing #interrupt-cells = <2>; 1867431b391SEmil Renner Berthing starfive,signal-group = <6>; 1877431b391SEmil Renner Berthing 1887431b391SEmil Renner Berthing gmac_pins_default: gmac-0 { 1897431b391SEmil Renner Berthing gtxclk-pins { 1907431b391SEmil Renner Berthing pins = <PAD_FUNC_SHARE(115)>; 1917431b391SEmil Renner Berthing bias-pull-up; 1927431b391SEmil Renner Berthing drive-strength = <35>; 1937431b391SEmil Renner Berthing input-enable; 1947431b391SEmil Renner Berthing input-schmitt-enable; 1957431b391SEmil Renner Berthing slew-rate = <0>; 1967431b391SEmil Renner Berthing }; 1977431b391SEmil Renner Berthing miitxclk-pins { 1987431b391SEmil Renner Berthing pins = <PAD_FUNC_SHARE(116)>; 1997431b391SEmil Renner Berthing bias-pull-up; 2007431b391SEmil Renner Berthing drive-strength = <14>; 2017431b391SEmil Renner Berthing input-enable; 2027431b391SEmil Renner Berthing input-schmitt-disable; 2037431b391SEmil Renner Berthing slew-rate = <0>; 2047431b391SEmil Renner Berthing }; 2057431b391SEmil Renner Berthing tx-pins { 2067431b391SEmil Renner Berthing pins = <PAD_FUNC_SHARE(117)>, 2077431b391SEmil Renner Berthing <PAD_FUNC_SHARE(119)>, 2087431b391SEmil Renner Berthing <PAD_FUNC_SHARE(120)>, 2097431b391SEmil Renner Berthing <PAD_FUNC_SHARE(121)>, 2107431b391SEmil Renner Berthing <PAD_FUNC_SHARE(122)>, 2117431b391SEmil Renner Berthing <PAD_FUNC_SHARE(123)>, 2127431b391SEmil Renner Berthing <PAD_FUNC_SHARE(124)>, 2137431b391SEmil Renner Berthing <PAD_FUNC_SHARE(125)>, 2147431b391SEmil Renner Berthing <PAD_FUNC_SHARE(126)>; 2157431b391SEmil Renner Berthing bias-disable; 2167431b391SEmil Renner Berthing drive-strength = <35>; 2177431b391SEmil Renner Berthing input-disable; 2187431b391SEmil Renner Berthing input-schmitt-disable; 2197431b391SEmil Renner Berthing slew-rate = <0>; 2207431b391SEmil Renner Berthing }; 2217431b391SEmil Renner Berthing rxclk-pins { 2227431b391SEmil Renner Berthing pins = <PAD_FUNC_SHARE(127)>; 2237431b391SEmil Renner Berthing bias-pull-up; 2247431b391SEmil Renner Berthing drive-strength = <14>; 2257431b391SEmil Renner Berthing input-enable; 2267431b391SEmil Renner Berthing input-schmitt-disable; 2277431b391SEmil Renner Berthing slew-rate = <6>; 2287431b391SEmil Renner Berthing }; 2297431b391SEmil Renner Berthing rxer-pins { 2307431b391SEmil Renner Berthing pins = <PAD_FUNC_SHARE(129)>; 2317431b391SEmil Renner Berthing bias-pull-up; 2327431b391SEmil Renner Berthing drive-strength = <14>; 2337431b391SEmil Renner Berthing input-enable; 2347431b391SEmil Renner Berthing input-schmitt-disable; 2357431b391SEmil Renner Berthing slew-rate = <0>; 2367431b391SEmil Renner Berthing }; 2377431b391SEmil Renner Berthing rx-pins { 2387431b391SEmil Renner Berthing pins = <PAD_FUNC_SHARE(128)>, 2397431b391SEmil Renner Berthing <PAD_FUNC_SHARE(130)>, 2407431b391SEmil Renner Berthing <PAD_FUNC_SHARE(131)>, 2417431b391SEmil Renner Berthing <PAD_FUNC_SHARE(132)>, 2427431b391SEmil Renner Berthing <PAD_FUNC_SHARE(133)>, 2437431b391SEmil Renner Berthing <PAD_FUNC_SHARE(134)>, 2447431b391SEmil Renner Berthing <PAD_FUNC_SHARE(135)>, 2457431b391SEmil Renner Berthing <PAD_FUNC_SHARE(136)>, 2467431b391SEmil Renner Berthing <PAD_FUNC_SHARE(137)>, 2477431b391SEmil Renner Berthing <PAD_FUNC_SHARE(138)>, 2487431b391SEmil Renner Berthing <PAD_FUNC_SHARE(139)>, 2497431b391SEmil Renner Berthing <PAD_FUNC_SHARE(140)>, 2507431b391SEmil Renner Berthing <PAD_FUNC_SHARE(141)>; 2517431b391SEmil Renner Berthing bias-pull-up; 2527431b391SEmil Renner Berthing drive-strength = <14>; 2537431b391SEmil Renner Berthing input-enable; 2547431b391SEmil Renner Berthing input-schmitt-enable; 2557431b391SEmil Renner Berthing slew-rate = <0>; 2567431b391SEmil Renner Berthing }; 2577431b391SEmil Renner Berthing }; 2587431b391SEmil Renner Berthing 2597431b391SEmil Renner Berthing i2c0_pins_default: i2c0-0 { 2607431b391SEmil Renner Berthing i2c-pins { 2617431b391SEmil Renner Berthing pinmux = <GPIOMUX(62, GPO_LOW, 2627431b391SEmil Renner Berthing GPO_I2C0_PAD_SCK_OEN, 2637431b391SEmil Renner Berthing GPI_I2C0_PAD_SCK_IN)>, 2647431b391SEmil Renner Berthing <GPIOMUX(61, GPO_LOW, 2657431b391SEmil Renner Berthing GPO_I2C0_PAD_SDA_OEN, 2667431b391SEmil Renner Berthing GPI_I2C0_PAD_SDA_IN)>; 2677431b391SEmil Renner Berthing bias-disable; /* external pull-up */ 2687431b391SEmil Renner Berthing input-enable; 2697431b391SEmil Renner Berthing input-schmitt-enable; 2707431b391SEmil Renner Berthing }; 2717431b391SEmil Renner Berthing }; 2727431b391SEmil Renner Berthing 2737431b391SEmil Renner Berthing uart3_pins_default: uart3-0 { 2747431b391SEmil Renner Berthing rx-pins { 2757431b391SEmil Renner Berthing pinmux = <GPIOMUX(13, GPO_LOW, GPO_DISABLE, 2767431b391SEmil Renner Berthing GPI_UART3_PAD_SIN)>; 2777431b391SEmil Renner Berthing bias-pull-up; 2787431b391SEmil Renner Berthing input-enable; 2797431b391SEmil Renner Berthing input-schmitt-enable; 2807431b391SEmil Renner Berthing }; 2817431b391SEmil Renner Berthing tx-pins { 2827431b391SEmil Renner Berthing pinmux = <GPIOMUX(14, GPO_UART3_PAD_SOUT, 2837431b391SEmil Renner Berthing GPO_ENABLE, GPI_NONE)>; 2847431b391SEmil Renner Berthing bias-disable; 2857431b391SEmil Renner Berthing input-disable; 2867431b391SEmil Renner Berthing input-schmitt-disable; 2877431b391SEmil Renner Berthing }; 2887431b391SEmil Renner Berthing }; 2897431b391SEmil Renner Berthing }; 2907431b391SEmil Renner Berthing 2917431b391SEmil Renner Berthing gmac { 2927431b391SEmil Renner Berthing pinctrl-0 = <&gmac_pins_default>; 2937431b391SEmil Renner Berthing pinctrl-names = "default"; 2947431b391SEmil Renner Berthing }; 2957431b391SEmil Renner Berthing 29620a72af1SRob Herring i2c { 2977431b391SEmil Renner Berthing pinctrl-0 = <&i2c0_pins_default>; 2987431b391SEmil Renner Berthing pinctrl-names = "default"; 2997431b391SEmil Renner Berthing }; 3007431b391SEmil Renner Berthing 3017431b391SEmil Renner Berthing uart3 { 3027431b391SEmil Renner Berthing pinctrl-0 = <&uart3_pins_default>; 3037431b391SEmil Renner Berthing pinctrl-names = "default"; 3047431b391SEmil Renner Berthing }; 3057431b391SEmil Renner Berthing }; 3067431b391SEmil Renner Berthing 3077431b391SEmil Renner Berthing... 308