# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/starfive,jh7100-pinctrl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: StarFive JH7100 Pin Controller

description: |
  Bindings for the JH7100 RISC-V SoC from StarFive Ltd.

  Out of the SoC's many pins only the ones named PAD_GPIO[0] to PAD_GPIO[63]
  and PAD_FUNC_SHARE[0] to PAD_FUNC_SHARE[141] can be multiplexed and have
  configurable bias, drive strength, schmitt trigger etc. The SoC has an
  interesting 2-layered approach to pin muxing best illustrated by the diagram
  below.

                          Signal group 0, 1, ... or 6
                                 ___|___
                                |       |
    LCD output -----------------|       |
    CMOS Camera interface ------|       |--- PAD_GPIO[0]
    Ethernet PHY interface -----|  MUX  |--- PAD_GPIO[1]
      ...                       |       |      ...
                                |       |--- PAD_GPIO[63]
     -------- GPIO0 ------------|       |
    |  -------|-- GPIO1 --------|       |--- PAD_FUNC_SHARE[0]
    | |       |   |             |       |--- PAD_FUNC_SHARE[1]
    | |       |   |  ...        |       |       ...
    | |       |   |             |       |--- PAD_FUNC_SHARE[141]
    | |  -----|---|-- GPIO63 ---|       |
    | | |     |   |   |          -------
    UART0     UART1 --


  The big MUX in the diagram only has 7 different ways of mapping peripherals
  on the left to pins on the right. StarFive calls the 7 configurations "signal
  groups".
  However some peripherals have their I/O go through the 64 "GPIOs". The
  diagram only shows UART0 and UART1, but this also includes a number of other
  UARTs, I2Cs, SPIs, PWMs etc. All these peripherals are connected to all 64
  GPIOs such that any GPIO can be set up to be controlled by any of the
  peripherals.
  Note that signal group 0 doesn't map any of the GPIOs to pins, and only
  signal group 1 maps the GPIOs to the pins named PAD_GPIO[0] to PAD_GPIO[63].

maintainers:
  - Emil Renner Berthing <kernel@esmil.dk>
  - Drew Fustini <drew@beagleboard.org>

properties:
  compatible:
    const: starfive,jh7100-pinctrl

  reg:
    minItems: 2
    maxItems: 2

  reg-names:
    items:
      - const: gpio
      - const: padctl

  clocks:
    maxItems: 1

  resets:
    maxItems: 1

  gpio-controller: true

  "#gpio-cells":
    const: 2

  interrupts:
    maxItems: 1
    description: The GPIO parent interrupt.

  interrupt-controller: true

  "#interrupt-cells":
    const: 2

  starfive,signal-group:
    description: |
      Select one of the 7 signal groups. If this property is not set it
      defaults to the configuration already chosen by the earlier boot stages.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2, 3, 4, 5, 6]

required:
  - compatible
  - reg
  - reg-names
  - clocks
  - gpio-controller
  - "#gpio-cells"
  - interrupts
  - interrupt-controller
  - "#interrupt-cells"

patternProperties:
  '-[0-9]+$':
    type: object
    patternProperties:
      '-pins$':
        type: object
        description: |
          A pinctrl node should contain at least one subnode representing the
          pinctrl groups available on the machine. Each subnode will list the
          pins it needs, and how they should be configured, with regard to
          muxer configuration, bias, input enable/disable, input schmitt
          trigger enable/disable, slew-rate and drive strength.
        $ref: "/schemas/pinctrl/pincfg-node.yaml"

        properties:
          pins:
            description: |
              The list of pin identifiers that properties in the node apply to.
              This should be set using either the PAD_GPIO or PAD_FUNC_SHARE
              macros.
              Either this or "pinmux" has to be specified, but not both.
            $ref: "/schemas/pinctrl/pinmux-node.yaml#/properties/pins"

          pinmux:
            description: |
              The list of GPIOs and their mux settings that properties in the
              node apply to. This should be set using the GPIOMUX macro.
              Either this or "pins" has to be specified, but not both.
            $ref: "/schemas/pinctrl/pinmux-node.yaml#/properties/pinmux"

          bias-disable: true

          bias-pull-up:
            type: boolean

          bias-pull-down:
            type: boolean

          drive-strength:
            enum: [ 14, 21, 28, 35, 42, 49, 56, 63 ]

          input-enable: true

          input-disable: true

          input-schmitt-enable: true

          input-schmitt-disable: true

          slew-rate:
            maximum: 7

          starfive,strong-pull-up:
            description: enable strong pull-up.
            type: boolean

        additionalProperties: false

    additionalProperties: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/starfive-jh7100.h>
    #include <dt-bindings/reset/starfive-jh7100.h>
    #include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h>

    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        pinctrl@11910000 {
            compatible = "starfive,jh7100-pinctrl";
            reg = <0x0 0x11910000 0x0 0x10000>,
                  <0x0 0x11858000 0x0 0x1000>;
            reg-names = "gpio", "padctl";
            clocks = <&clkgen JH7100_CLK_GPIO_APB>;
            resets = <&clkgen JH7100_RSTN_GPIO_APB>;
            interrupts = <32>;
            gpio-controller;
            #gpio-cells = <2>;
            interrupt-controller;
            #interrupt-cells = <2>;
            starfive,signal-group = <6>;

            gmac_pins_default: gmac-0 {
                gtxclk-pins {
                    pins = <PAD_FUNC_SHARE(115)>;
                    bias-pull-up;
                    drive-strength = <35>;
                    input-enable;
                    input-schmitt-enable;
                    slew-rate = <0>;
                };
                miitxclk-pins {
                    pins = <PAD_FUNC_SHARE(116)>;
                    bias-pull-up;
                    drive-strength = <14>;
                    input-enable;
                    input-schmitt-disable;
                    slew-rate = <0>;
                };
                tx-pins {
                    pins = <PAD_FUNC_SHARE(117)>,
                           <PAD_FUNC_SHARE(119)>,
                           <PAD_FUNC_SHARE(120)>,
                           <PAD_FUNC_SHARE(121)>,
                           <PAD_FUNC_SHARE(122)>,
                           <PAD_FUNC_SHARE(123)>,
                           <PAD_FUNC_SHARE(124)>,
                           <PAD_FUNC_SHARE(125)>,
                           <PAD_FUNC_SHARE(126)>;
                    bias-disable;
                    drive-strength = <35>;
                    input-disable;
                    input-schmitt-disable;
                    slew-rate = <0>;
                };
                rxclk-pins {
                    pins = <PAD_FUNC_SHARE(127)>;
                    bias-pull-up;
                    drive-strength = <14>;
                    input-enable;
                    input-schmitt-disable;
                    slew-rate = <6>;
                };
                rxer-pins {
                    pins = <PAD_FUNC_SHARE(129)>;
                    bias-pull-up;
                    drive-strength = <14>;
                    input-enable;
                    input-schmitt-disable;
                    slew-rate = <0>;
                };
                rx-pins {
                    pins = <PAD_FUNC_SHARE(128)>,
                           <PAD_FUNC_SHARE(130)>,
                           <PAD_FUNC_SHARE(131)>,
                           <PAD_FUNC_SHARE(132)>,
                           <PAD_FUNC_SHARE(133)>,
                           <PAD_FUNC_SHARE(134)>,
                           <PAD_FUNC_SHARE(135)>,
                           <PAD_FUNC_SHARE(136)>,
                           <PAD_FUNC_SHARE(137)>,
                           <PAD_FUNC_SHARE(138)>,
                           <PAD_FUNC_SHARE(139)>,
                           <PAD_FUNC_SHARE(140)>,
                           <PAD_FUNC_SHARE(141)>;
                    bias-pull-up;
                    drive-strength = <14>;
                    input-enable;
                    input-schmitt-enable;
                    slew-rate = <0>;
                };
            };

            i2c0_pins_default: i2c0-0 {
                i2c-pins {
                    pinmux = <GPIOMUX(62, GPO_LOW,
                              GPO_I2C0_PAD_SCK_OEN,
                              GPI_I2C0_PAD_SCK_IN)>,
                             <GPIOMUX(61, GPO_LOW,
                              GPO_I2C0_PAD_SDA_OEN,
                              GPI_I2C0_PAD_SDA_IN)>;
                    bias-disable; /* external pull-up */
                    input-enable;
                    input-schmitt-enable;
                };
            };

            uart3_pins_default: uart3-0 {
                rx-pins {
                    pinmux = <GPIOMUX(13, GPO_LOW, GPO_DISABLE,
                              GPI_UART3_PAD_SIN)>;
                    bias-pull-up;
                    input-enable;
                    input-schmitt-enable;
                };
                tx-pins {
                    pinmux = <GPIOMUX(14, GPO_UART3_PAD_SOUT,
                              GPO_ENABLE, GPI_NONE)>;
                    bias-disable;
                    input-disable;
                    input-schmitt-disable;
                };
            };
        };

        gmac {
            pinctrl-0 = <&gmac_pins_default>;
            pinctrl-names = "default";
        };

        i2c0 {
            pinctrl-0 = <&i2c0_pins_default>;
            pinctrl-names = "default";
        };

        uart3 {
            pinctrl-0 = <&uart3_pins_default>;
            pinctrl-names = "default";
        };
    };

...
