xref: /openbmc/linux/Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
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