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

title: MediaTek MT8188 Pin Controller

maintainers:
  - Hui Liu <hui.liu@mediatek.com>

description:
  The MediaTek's MT8188 Pin controller is used to control SoC pins.

properties:
  compatible:
    const: mediatek,mt8188-pinctrl

  gpio-controller: true

  '#gpio-cells':
    description:
      Number of cells in GPIO specifier, should be two. The first cell is the
      pin number, the second cell is used to specify optional parameters which
      are defined in <dt-bindings/gpio/gpio.h>.
    const: 2

  gpio-ranges:
    maxItems: 1

  gpio-line-names: true

  reg:
    items:
      - description: gpio registers base address
      - description: rm group io configuration registers base address
      - description: lt group io configuration registers base address
      - description: lm group io configuration registers base address
      - description: rt group io configuration registers base address
      - description: eint registers base address

  reg-names:
    items:
      - const: iocfg0
      - const: iocfg_rm
      - const: iocfg_lt
      - const: iocfg_lm
      - const: iocfg_rt
      - const: eint

  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:
      We provide two methods to select the resistance for I2C when pull up or
      pull down. The first is by RSEL definition value, another one is by
      resistance value(ohm). This flag is used to identify if the method is
      resistance(si unit) value.

# PIN CONFIGURATION NODES
patternProperties:
  '-pins$':
    type: object
    additionalProperties: false

    patternProperties:
      '^pins':
        type: object
        $ref: /schemas/pinctrl/pincfg-node.yaml
        additionalProperties: false
        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, pullups, drive strength, input enable/disable and input
          schmitt.

        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/mediatek,mt8188-pinfunc.h
              directly, for this SoC.

          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: mt8188 pull down PUPD/R0/R1 type define value.
              - enum: [200, 201, 202, 203, 204, 205, 206, 207]
                description: mt8188 pull down RSEL type define value.
              - enum: [75000, 5000]
                description: mt8188 pull down RSEL type si unit value(ohm).
            description: |
              For pull down type is normal, it doesn'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 mt8188.
              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
              mt8188. It can also support resistance value(ohm) "75000" & "5000"
              in mt8188.

          bias-pull-up:
            oneOf:
              - type: boolean
              - enum: [100, 101, 102, 103]
                description: mt8188 pull up PUPD/R0/R1 type define value.
              - enum: [200, 201, 202, 203, 204, 205, 206, 207]
                description: mt8188 pull up RSEL type define value.
              - enum: [1000, 1500, 2000, 3000, 4000, 5000, 10000, 75000]
                description: mt8188 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 mt8188.
              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
              mt8188. It can also support resistance value(ohm) "1000" & "1500"
              & "2000" & "3000" & "4000" & "5000" & "10000" & "75000" in mt8188.

          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

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

additionalProperties: false

examples:
  - |
    #include <dt-bindings/pinctrl/mediatek,mt8188-pinfunc.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    pio: pinctrl@10005000 {
        compatible = "mediatek,mt8188-pinctrl";
        reg = <0x10005000 0x1000>,
              <0x11c00000 0x1000>,
              <0x11e10000 0x1000>,
              <0x11e20000 0x1000>,
              <0x11ea0000 0x1000>,
              <0x1000b000 0x1000>;
        reg-names = "iocfg0", "iocfg_rm",
                    "iocfg_lt", "iocfg_lm", "iocfg_rt",
                    "eint";
        gpio-controller;
        #gpio-cells = <2>;
        gpio-ranges = <&pio 0 0 176>;
        interrupt-controller;
        interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH 0>;
        #interrupt-cells = <2>;

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

        spi0-pins {
            pins-spi {
                pinmux = <PINMUX_GPIO75__FUNC_O_SPIM1_CSB>,
                         <PINMUX_GPIO76__FUNC_O_SPIM1_CLK>,
                         <PINMUX_GPIO77__FUNC_B0_SPIM1_MOSI>;
                drive-strength = <6>;
            };
            pins-spi-mi {
                pinmux = <PINMUX_GPIO78__FUNC_B0_SPIM1_MISO>;
                bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
            };
        };

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