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

title: Mediatek MT8195 Pin Controller

maintainers:
  - Sean Wang <sean.wang@mediatek.com>

description: |
  The Mediatek's Pin controller is used to control SoC pins.

properties:
  compatible:
    const: mediatek,mt8195-pinctrl

  gpio-controller: true

  '#gpio-cells':
    description: |
      Number of cells in GPIO specifier. Since the generic GPIO binding is used,
      the amount of cells must be specified as 2. See the below
      mentioned gpio binding representation for description of particular cells.
    const: 2

  gpio-ranges:
    description: gpio valid number range.
    maxItems: 1

  gpio-line-names: true

  reg:
    description: |
      Physical address base for gpio base registers. There are 8 GPIO
      physical address base in mt8195.
    maxItems: 8

  reg-names:
    description: |
      Gpio base register names.
    maxItems: 8

  interrupt-controller: true

  '#interrupt-cells':
    const: 2

  interrupts:
    description: The interrupt outputs to sysirq.
    maxItems: 1

  mediatek,rsel-resistance-in-si-unit:
    type: boolean
    description: |
      Identifying i2c pins pull up/down type which is RSEL. It can support
      RSEL define or si unit value(ohm) to set different resistance.

# PIN CONFIGURATION NODES
patternProperties:
  '-pins$':
    type: object
    additionalProperties: false
    patternProperties:
      '^pins':
        type: object
        additionalProperties: false
        description: |
          A pinctrl node should contain at least one subnodes 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, pullups, drive strength, input enable/disable and
          input schmitt.
          An example of using macro:
          pincontroller {
            /* GPIO0 set as multifunction GPIO0 */
            gpio-pins {
              pins {
                pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
              }
            };
            /* GPIO8 set as multifunction SDA0 */
            i2c0-pins {
              pins {
                pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
              }
            };
          };
        $ref: "pinmux-node.yaml"

        properties:
          pinmux:
            description: |
              Integer array, represents gpio pin number and mux setting.
              Supported pin number and mux varies for different SoCs, and are
              defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h
              directly.

          drive-strength:
            enum: [2, 4, 6, 8, 10, 12, 14, 16]

          drive-strength-microamp:
            enum: [125, 250, 500, 1000]

          bias-pull-down:
            oneOf:
              - type: boolean
              - enum: [100, 101, 102, 103]
                description: mt8195 pull down PUPD/R0/R1 type define value.
              - enum: [200, 201, 202, 203, 204, 205, 206, 207]
                description: mt8195 pull down RSEL type define value.
              - enum: [75000, 5000]
                description: mt8195 pull down RSEL type si unit value(ohm).
            description: |
              For pull down type is normal, it don't need add RSEL & R1R0 define
              and resistance value.
              For pull down type is PUPD/R0/R1 type, it can add R1R0 define to
              set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
              "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &
              "MTK_PUPD_SET_R1R0_11" define in mt8195.
              For pull down type is RSEL, it can add RSEL define & resistance
              value(ohm) to set different resistance by identifying property
              "mediatek,rsel-resistance-in-si-unit".
              It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001"
              & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011"
              & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101"
              & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111"
              define in mt8195. It can also support resistance value(ohm)
              "75000" & "5000" in mt8195.

              An example of using RSEL define:
              pincontroller {
                i2c0_pin {
                  pins {
                    pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
                    bias-pull-down = <MTK_PULL_SET_RSEL_001>;
                  }
                };
              };
              An example of using si unit resistance value(ohm):
              &pio {
                mediatek,rsel-resistance-in-si-unit;
              }
              pincontroller {
                i2c0_pin {
                  pins {
                    pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
                    bias-pull-down = <75000>;
                  }
                };
              };

          bias-pull-up:
            oneOf:
              - type: boolean
              - enum: [100, 101, 102, 103]
                description: mt8195 pull up PUPD/R0/R1 type define value.
              - enum: [200, 201, 202, 203, 204, 205, 206, 207]
                description: mt8195 pull up RSEL type define value.
              - enum: [1000, 1500, 2000, 3000, 4000, 5000, 10000, 75000]
                description: mt8195 pull up RSEL type si unit value(ohm).
            description: |
              For pull up type is normal, it don't need add RSEL & R1R0 define
              and resistance value.
              For pull up type is PUPD/R0/R1 type, it can add R1R0 define to
              set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
              "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &
              "MTK_PUPD_SET_R1R0_11" define in mt8195.
              For pull up type is RSEL, it can add RSEL define & resistance
              value(ohm) to set different resistance by identifying property
              "mediatek,rsel-resistance-in-si-unit".
              It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001"
              & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011"
              & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101"
              & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111"
              define in mt8195. It can also support resistance value(ohm)
              "1000" & "1500" & "2000" & "3000" & "4000" & "5000" & "10000" &
              "75000" in mt8195.
              An example of using RSEL define:
              pincontroller {
                i2c0-pins {
                  pins {
                    pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
                    bias-pull-up = <MTK_PULL_SET_RSEL_001>;
                  }
                };
              };
              An example of using si unit resistance value(ohm):
              &pio {
                mediatek,rsel-resistance-in-si-unit;
              }
              pincontroller {
                i2c0-pins {
                  pins {
                    pinmux = <PINMUX_GPIO8__FUNC_SDA0>;
                    bias-pull-up = <1000>;
                  }
                };
              };

          bias-disable: true

          output-high: true

          output-low: true

          input-enable: true

          input-disable: true

          input-schmitt-enable: true

          input-schmitt-disable: true

        required:
          - pinmux

allOf:
  - $ref: "pinctrl.yaml#"

required:
  - compatible
  - reg
  - interrupts
  - interrupt-controller
  - '#interrupt-cells'
  - gpio-controller
  - '#gpio-cells'
  - gpio-ranges

additionalProperties: false

examples:
  - |
    #include <dt-bindings/pinctrl/mt8195-pinfunc.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #
    pio: pinctrl@10005000 {
      compatible = "mediatek,mt8195-pinctrl";
      reg = <0x10005000 0x1000>,
            <0x11d10000 0x1000>,
            <0x11d30000 0x1000>,
            <0x11d40000 0x1000>,
            <0x11e20000 0x1000>,
            <0x11eb0000 0x1000>,
            <0x11f40000 0x1000>,
            <0x1000b000 0x1000>;
      reg-names = "iocfg0", "iocfg_bm", "iocfg_bl",
                  "iocfg_br", "iocfg_lm", "iocfg_rb",
                  "iocfg_tl", "eint";
      gpio-controller;
      #gpio-cells = <2>;
      gpio-ranges = <&pio 0 0 144>;
      interrupt-controller;
      interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH 0>;
      #interrupt-cells = <2>;

      pio-pins {
        pins {
          pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
          output-low;
        };
      };

      spi0-pins {
        pins-spi {
          pinmux = <PINMUX_GPIO132__FUNC_SPIM0_CSB>,
                   <PINMUX_GPIO134__FUNC_SPIM0_MO>,
                   <PINMUX_GPIO133__FUNC_SPIM0_CLK>;
          bias-disable;
        };
        pins-spi-mi {
          pinmux = <PINMUX_GPIO135__FUNC_SPIM0_MI>;
          bias-pull-down;
        };
      };

      i2c0-pins {
        pins {
          pinmux = <PINMUX_GPIO8__FUNC_SDA0>,
                   <PINMUX_GPIO9__FUNC_SCL0>;
          bias-disable;
          drive-strength-microamp = <1000>;
        };
      };
    };
