# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8195-pinctrl.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 MT8195 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>;
        };
      };
    };
