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

title: MediaTek MT6370 SubPMIC

maintainers:
  - ChiYuan Huang <cy_huang@richtek.com>

description: |
  MT6370 is a highly-integrated smart power management IC, which includes a
  single cell Li-Ion/Li-Polymer switching battery charger, a USB Type-C &
  Power Delivery (PD) controller, dual flash LED current sources, a RGB LED
  driver, a backlight WLED driver, a display bias driver and a general LDO for
  portable devices.

properties:
  compatible:
    const: mediatek,mt6370

  reg:
    maxItems: 1

  wakeup-source: true

  interrupts:
    maxItems: 1

  interrupt-controller: true

  "#interrupt-cells":
    const: 1

  adc:
    type: object
    additionalProperties: false
    description: |
      Provides 9 channels for system monitoring, including VBUSDIV5 (lower
      accuracy, higher measure range), VBUSDIV2 (higher accuracy, lower
      measure range), VBAT, VSYS, CHG_VDDP, TS_BAT, IBUS, IBAT, and TEMP_JC.

    properties:
      compatible:
        const: mediatek,mt6370-adc

      "#io-channel-cells":
        const: 1

    required:
      - compatible
      - "#io-channel-cells"

  backlight:
    type: object
    $ref: /schemas/leds/backlight/mediatek,mt6370-backlight.yaml#

  charger:
    type: object
    $ref: /schemas/power/supply/mediatek,mt6370-charger.yaml#

  tcpc:
    type: object
    $ref: /schemas/usb/mediatek,mt6370-tcpc.yaml#

  indicator:
    type: object
    $ref: /schemas/leds/mediatek,mt6370-indicator.yaml#

  flashlight:
    type: object
    $ref: /schemas/leds/mediatek,mt6370-flashlight.yaml#

  regulators:
    type: object
    additionalProperties: false
    description: |
      List all supported regulators, which support the control for DisplayBias
      voltages and one general purpose LDO which commonly used to drive the
      vibrator.

    patternProperties:
      "^(dsvbst|vibldo)$":
        $ref: /schemas/regulator/regulator.yaml#
        type: object
        unevaluatedProperties: false

      "^(dsvpos|dsvneg)$":
        $ref: /schemas/regulator/regulator.yaml#
        type: object
        unevaluatedProperties: false

        properties:
          enable-gpios:
            maxItems: 1

required:
  - compatible
  - reg
  - interrupts
  - interrupt-controller
  - "#interrupt-cells"
  - regulators
  - adc
  - backlight
  - indicator
  - tcpc
  - charger
  - flashlight

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/iio/adc/mediatek,mt6370_adc.h>
    #include <dt-bindings/usb/pd.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;

      pmic@34 {
        compatible = "mediatek,mt6370";
        reg = <0x34>;
        wakeup-source;
        interrupts-extended = <&gpio26 3 IRQ_TYPE_LEVEL_LOW>;
        interrupt-controller;
        #interrupt-cells = <1>;

        mt6370_adc: adc {
          compatible = "mediatek,mt6370-adc";
          #io-channel-cells = <1>;
        };

        backlight {
          compatible = "mediatek,mt6370-backlight";
          mediatek,bled-channel-use = /bits/ 8 <15>;
        };

        charger {
          compatible = "mediatek,mt6370-charger";
          interrupts = <68>, <48>, <6>;
          interrupt-names = "uvp_d_evt", "attach_i", "mivr";
          io-channels = <&mt6370_adc MT6370_CHAN_IBUS>;

          mt6370_otg_vbus: usb-otg-vbus-regulator {
            regulator-name = "mt6370-usb-otg-vbus";
            regulator-min-microvolt = <4350000>;
            regulator-max-microvolt = <5800000>;
            regulator-min-microamp = <500000>;
            regulator-max-microamp = <3000000>;
          };
        };

        indicator {
          compatible = "mediatek,mt6370-indicator";
          #address-cells = <1>;
          #size-cells = <0>;

          multi-led@0 {
            reg = <0>;
            function = LED_FUNCTION_INDICATOR;
            color = <LED_COLOR_ID_RGB>;
            led-max-microamp = <24000>;
            #address-cells = <1>;
            #size-cells = <0>;
            led@0 {
              reg = <0>;
              color = <LED_COLOR_ID_RED>;
            };
            led@1 {
              reg = <1>;
              color = <LED_COLOR_ID_GREEN>;
            };
            led@2 {
              reg = <2>;
              color = <LED_COLOR_ID_BLUE>;
            };
          };
          led@3 {
            reg = <3>;
            function = LED_FUNCTION_INDICATOR;
            color = <LED_COLOR_ID_WHITE>;
            led-max-microamp = <6000>;
          };
        };

        flashlight {
          compatible = "mediatek,mt6370-flashlight";
          #address-cells = <1>;
          #size-cells = <0>;
          led@0 {
            reg = <0>;
            led-sources = <0>;
            function = LED_FUNCTION_FLASH;
            color = <LED_COLOR_ID_WHITE>;
            function-enumerator = <1>;
            led-max-microamp = <200000>;
            flash-max-microamp = <500000>;
            flash-max-timeout-us = <1248000>;
          };
          led@1 {
            reg = <1>;
            led-sources = <1>;
            function = LED_FUNCTION_FLASH;
            color = <LED_COLOR_ID_WHITE>;
            function-enumerator = <2>;
            led-max-microamp = <200000>;
            flash-max-microamp = <500000>;
            flash-max-timeout-us = <1248000>;
          };
        };

        tcpc {
          compatible = "mediatek,mt6370-tcpc";
          interrupts-extended = <&gpio26 4 IRQ_TYPE_LEVEL_LOW>;

          connector {
            compatible = "usb-c-connector";
            label = "USB-C";
            vbus-supply = <&mt6370_otg_vbus>;
            data-role = "dual";
            power-role = "dual";
            try-power-role = "sink";
            source-pdos = <PDO_FIXED(5000, 1000, PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
            sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
            op-sink-microwatt = <10000000>;

            ports {
              #address-cells = <1>;
              #size-cells = <0>;

              port@0 {
                reg = <0>;
                endpoint {
                  remote-endpoint = <&usb_hs>;
                };
              };
              port@1 {
                reg = <1>;
                endpoint {
                  remote-endpoint = <&usb_ss>;
                };
              };
              port@2 {
                reg = <2>;
                endpoint {
                  remote-endpoint = <&dp_aux>;
                };
              };
            };
          };
        };

        regulators {
          dsvbst {
            regulator-name = "mt6370-dsv-vbst";
            regulator-min-microvolt = <4000000>;
            regulator-max-microvolt = <6200000>;
          };
          dsvpos {
            regulator-name = "mt6370-dsv-vpos";
            regulator-min-microvolt = <4000000>;
            regulator-max-microvolt = <6000000>;
            regulator-boot-on;
          };
          dsvneg {
            regulator-name = "mt6370-dsv-vneg";
            regulator-min-microvolt = <4000000>;
            regulator-max-microvolt = <6000000>;
            regulator-boot-on;
          };
          vibldo {
            regulator-name = "mt6370-vib-ldo";
            regulator-min-microvolt = <1600000>;
            regulator-max-microvolt = <4000000>;
          };
        };
      };
    };
