# 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
    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
    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>;
          };
        };
      };
    };
