162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/mediatek,mt6370.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: MediaTek MT6370 SubPMIC
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - ChiYuan Huang <cy_huang@richtek.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  MT6370 is a highly-integrated smart power management IC, which includes a
1462306a36Sopenharmony_ci  single cell Li-Ion/Li-Polymer switching battery charger, a USB Type-C &
1562306a36Sopenharmony_ci  Power Delivery (PD) controller, dual flash LED current sources, a RGB LED
1662306a36Sopenharmony_ci  driver, a backlight WLED driver, a display bias driver and a general LDO for
1762306a36Sopenharmony_ci  portable devices.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    const: mediatek,mt6370
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  reg:
2462306a36Sopenharmony_ci    maxItems: 1
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  wakeup-source: true
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  interrupts:
2962306a36Sopenharmony_ci    maxItems: 1
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  interrupt-controller: true
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  "#interrupt-cells":
3462306a36Sopenharmony_ci    const: 1
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  adc:
3762306a36Sopenharmony_ci    type: object
3862306a36Sopenharmony_ci    additionalProperties: false
3962306a36Sopenharmony_ci    description: |
4062306a36Sopenharmony_ci      Provides 9 channels for system monitoring, including VBUSDIV5 (lower
4162306a36Sopenharmony_ci      accuracy, higher measure range), VBUSDIV2 (higher accuracy, lower
4262306a36Sopenharmony_ci      measure range), VBAT, VSYS, CHG_VDDP, TS_BAT, IBUS, IBAT, and TEMP_JC.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci    properties:
4562306a36Sopenharmony_ci      compatible:
4662306a36Sopenharmony_ci        const: mediatek,mt6370-adc
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci      "#io-channel-cells":
4962306a36Sopenharmony_ci        const: 1
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci    required:
5262306a36Sopenharmony_ci      - compatible
5362306a36Sopenharmony_ci      - "#io-channel-cells"
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  backlight:
5662306a36Sopenharmony_ci    type: object
5762306a36Sopenharmony_ci    $ref: /schemas/leds/backlight/mediatek,mt6370-backlight.yaml#
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  charger:
6062306a36Sopenharmony_ci    type: object
6162306a36Sopenharmony_ci    $ref: /schemas/power/supply/mediatek,mt6370-charger.yaml#
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  tcpc:
6462306a36Sopenharmony_ci    type: object
6562306a36Sopenharmony_ci    $ref: /schemas/usb/mediatek,mt6370-tcpc.yaml#
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  indicator:
6862306a36Sopenharmony_ci    type: object
6962306a36Sopenharmony_ci    $ref: /schemas/leds/mediatek,mt6370-indicator.yaml#
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  flashlight:
7262306a36Sopenharmony_ci    type: object
7362306a36Sopenharmony_ci    $ref: /schemas/leds/mediatek,mt6370-flashlight.yaml#
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci  regulators:
7662306a36Sopenharmony_ci    type: object
7762306a36Sopenharmony_ci    additionalProperties: false
7862306a36Sopenharmony_ci    description: |
7962306a36Sopenharmony_ci      List all supported regulators, which support the control for DisplayBias
8062306a36Sopenharmony_ci      voltages and one general purpose LDO which commonly used to drive the
8162306a36Sopenharmony_ci      vibrator.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci    patternProperties:
8462306a36Sopenharmony_ci      "^(dsvbst|vibldo)$":
8562306a36Sopenharmony_ci        $ref: /schemas/regulator/regulator.yaml#
8662306a36Sopenharmony_ci        type: object
8762306a36Sopenharmony_ci        unevaluatedProperties: false
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci      "^(dsvpos|dsvneg)$":
9062306a36Sopenharmony_ci        $ref: /schemas/regulator/regulator.yaml#
9162306a36Sopenharmony_ci        type: object
9262306a36Sopenharmony_ci        unevaluatedProperties: false
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci        properties:
9562306a36Sopenharmony_ci          enable-gpios:
9662306a36Sopenharmony_ci            maxItems: 1
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_cirequired:
9962306a36Sopenharmony_ci  - compatible
10062306a36Sopenharmony_ci  - reg
10162306a36Sopenharmony_ci  - interrupts
10262306a36Sopenharmony_ci  - interrupt-controller
10362306a36Sopenharmony_ci  - "#interrupt-cells"
10462306a36Sopenharmony_ci  - regulators
10562306a36Sopenharmony_ci  - adc
10662306a36Sopenharmony_ci  - backlight
10762306a36Sopenharmony_ci  - indicator
10862306a36Sopenharmony_ci  - tcpc
10962306a36Sopenharmony_ci  - charger
11062306a36Sopenharmony_ci  - flashlight
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ciadditionalProperties: false
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciexamples:
11562306a36Sopenharmony_ci  - |
11662306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
11762306a36Sopenharmony_ci    #include <dt-bindings/leds/common.h>
11862306a36Sopenharmony_ci    #include <dt-bindings/iio/adc/mediatek,mt6370_adc.h>
11962306a36Sopenharmony_ci    #include <dt-bindings/usb/pd.h>
12062306a36Sopenharmony_ci    i2c {
12162306a36Sopenharmony_ci      #address-cells = <1>;
12262306a36Sopenharmony_ci      #size-cells = <0>;
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci      pmic@34 {
12562306a36Sopenharmony_ci        compatible = "mediatek,mt6370";
12662306a36Sopenharmony_ci        reg = <0x34>;
12762306a36Sopenharmony_ci        wakeup-source;
12862306a36Sopenharmony_ci        interrupts-extended = <&gpio26 3 IRQ_TYPE_LEVEL_LOW>;
12962306a36Sopenharmony_ci        interrupt-controller;
13062306a36Sopenharmony_ci        #interrupt-cells = <1>;
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci        mt6370_adc: adc {
13362306a36Sopenharmony_ci          compatible = "mediatek,mt6370-adc";
13462306a36Sopenharmony_ci          #io-channel-cells = <1>;
13562306a36Sopenharmony_ci        };
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci        backlight {
13862306a36Sopenharmony_ci          compatible = "mediatek,mt6370-backlight";
13962306a36Sopenharmony_ci          mediatek,bled-channel-use = /bits/ 8 <15>;
14062306a36Sopenharmony_ci        };
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci        charger {
14362306a36Sopenharmony_ci          compatible = "mediatek,mt6370-charger";
14462306a36Sopenharmony_ci          interrupts = <68>, <48>, <6>;
14562306a36Sopenharmony_ci          interrupt-names = "uvp_d_evt", "attach_i", "mivr";
14662306a36Sopenharmony_ci          io-channels = <&mt6370_adc MT6370_CHAN_IBUS>;
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci          mt6370_otg_vbus: usb-otg-vbus-regulator {
14962306a36Sopenharmony_ci            regulator-name = "mt6370-usb-otg-vbus";
15062306a36Sopenharmony_ci            regulator-min-microvolt = <4350000>;
15162306a36Sopenharmony_ci            regulator-max-microvolt = <5800000>;
15262306a36Sopenharmony_ci            regulator-min-microamp = <500000>;
15362306a36Sopenharmony_ci            regulator-max-microamp = <3000000>;
15462306a36Sopenharmony_ci          };
15562306a36Sopenharmony_ci        };
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci        indicator {
15862306a36Sopenharmony_ci          compatible = "mediatek,mt6370-indicator";
15962306a36Sopenharmony_ci          #address-cells = <1>;
16062306a36Sopenharmony_ci          #size-cells = <0>;
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci          multi-led@0 {
16362306a36Sopenharmony_ci            reg = <0>;
16462306a36Sopenharmony_ci            function = LED_FUNCTION_INDICATOR;
16562306a36Sopenharmony_ci            color = <LED_COLOR_ID_RGB>;
16662306a36Sopenharmony_ci            led-max-microamp = <24000>;
16762306a36Sopenharmony_ci            #address-cells = <1>;
16862306a36Sopenharmony_ci            #size-cells = <0>;
16962306a36Sopenharmony_ci            led@0 {
17062306a36Sopenharmony_ci              reg = <0>;
17162306a36Sopenharmony_ci              color = <LED_COLOR_ID_RED>;
17262306a36Sopenharmony_ci            };
17362306a36Sopenharmony_ci            led@1 {
17462306a36Sopenharmony_ci              reg = <1>;
17562306a36Sopenharmony_ci              color = <LED_COLOR_ID_GREEN>;
17662306a36Sopenharmony_ci            };
17762306a36Sopenharmony_ci            led@2 {
17862306a36Sopenharmony_ci              reg = <2>;
17962306a36Sopenharmony_ci              color = <LED_COLOR_ID_BLUE>;
18062306a36Sopenharmony_ci            };
18162306a36Sopenharmony_ci          };
18262306a36Sopenharmony_ci          led@3 {
18362306a36Sopenharmony_ci            reg = <3>;
18462306a36Sopenharmony_ci            function = LED_FUNCTION_INDICATOR;
18562306a36Sopenharmony_ci            color = <LED_COLOR_ID_WHITE>;
18662306a36Sopenharmony_ci            led-max-microamp = <6000>;
18762306a36Sopenharmony_ci          };
18862306a36Sopenharmony_ci        };
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci        flashlight {
19162306a36Sopenharmony_ci          compatible = "mediatek,mt6370-flashlight";
19262306a36Sopenharmony_ci          #address-cells = <1>;
19362306a36Sopenharmony_ci          #size-cells = <0>;
19462306a36Sopenharmony_ci          led@0 {
19562306a36Sopenharmony_ci            reg = <0>;
19662306a36Sopenharmony_ci            led-sources = <0>;
19762306a36Sopenharmony_ci            function = LED_FUNCTION_FLASH;
19862306a36Sopenharmony_ci            color = <LED_COLOR_ID_WHITE>;
19962306a36Sopenharmony_ci            function-enumerator = <1>;
20062306a36Sopenharmony_ci            led-max-microamp = <200000>;
20162306a36Sopenharmony_ci            flash-max-microamp = <500000>;
20262306a36Sopenharmony_ci            flash-max-timeout-us = <1248000>;
20362306a36Sopenharmony_ci          };
20462306a36Sopenharmony_ci          led@1 {
20562306a36Sopenharmony_ci            reg = <1>;
20662306a36Sopenharmony_ci            led-sources = <1>;
20762306a36Sopenharmony_ci            function = LED_FUNCTION_FLASH;
20862306a36Sopenharmony_ci            color = <LED_COLOR_ID_WHITE>;
20962306a36Sopenharmony_ci            function-enumerator = <2>;
21062306a36Sopenharmony_ci            led-max-microamp = <200000>;
21162306a36Sopenharmony_ci            flash-max-microamp = <500000>;
21262306a36Sopenharmony_ci            flash-max-timeout-us = <1248000>;
21362306a36Sopenharmony_ci          };
21462306a36Sopenharmony_ci        };
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci        tcpc {
21762306a36Sopenharmony_ci          compatible = "mediatek,mt6370-tcpc";
21862306a36Sopenharmony_ci          interrupts-extended = <&gpio26 4 IRQ_TYPE_LEVEL_LOW>;
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci          connector {
22162306a36Sopenharmony_ci            compatible = "usb-c-connector";
22262306a36Sopenharmony_ci            label = "USB-C";
22362306a36Sopenharmony_ci            vbus-supply = <&mt6370_otg_vbus>;
22462306a36Sopenharmony_ci            data-role = "dual";
22562306a36Sopenharmony_ci            power-role = "dual";
22662306a36Sopenharmony_ci            try-power-role = "sink";
22762306a36Sopenharmony_ci            source-pdos = <PDO_FIXED(5000, 1000, PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
22862306a36Sopenharmony_ci            sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
22962306a36Sopenharmony_ci            op-sink-microwatt = <10000000>;
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci            ports {
23262306a36Sopenharmony_ci              #address-cells = <1>;
23362306a36Sopenharmony_ci              #size-cells = <0>;
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci              port@0 {
23662306a36Sopenharmony_ci                reg = <0>;
23762306a36Sopenharmony_ci                endpoint {
23862306a36Sopenharmony_ci                  remote-endpoint = <&usb_hs>;
23962306a36Sopenharmony_ci                };
24062306a36Sopenharmony_ci              };
24162306a36Sopenharmony_ci              port@1 {
24262306a36Sopenharmony_ci                reg = <1>;
24362306a36Sopenharmony_ci                endpoint {
24462306a36Sopenharmony_ci                  remote-endpoint = <&usb_ss>;
24562306a36Sopenharmony_ci                };
24662306a36Sopenharmony_ci              };
24762306a36Sopenharmony_ci              port@2 {
24862306a36Sopenharmony_ci                reg = <2>;
24962306a36Sopenharmony_ci                endpoint {
25062306a36Sopenharmony_ci                  remote-endpoint = <&dp_aux>;
25162306a36Sopenharmony_ci                };
25262306a36Sopenharmony_ci              };
25362306a36Sopenharmony_ci            };
25462306a36Sopenharmony_ci          };
25562306a36Sopenharmony_ci        };
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci        regulators {
25862306a36Sopenharmony_ci          dsvbst {
25962306a36Sopenharmony_ci            regulator-name = "mt6370-dsv-vbst";
26062306a36Sopenharmony_ci            regulator-min-microvolt = <4000000>;
26162306a36Sopenharmony_ci            regulator-max-microvolt = <6200000>;
26262306a36Sopenharmony_ci          };
26362306a36Sopenharmony_ci          dsvpos {
26462306a36Sopenharmony_ci            regulator-name = "mt6370-dsv-vpos";
26562306a36Sopenharmony_ci            regulator-min-microvolt = <4000000>;
26662306a36Sopenharmony_ci            regulator-max-microvolt = <6000000>;
26762306a36Sopenharmony_ci            regulator-boot-on;
26862306a36Sopenharmony_ci          };
26962306a36Sopenharmony_ci          dsvneg {
27062306a36Sopenharmony_ci            regulator-name = "mt6370-dsv-vneg";
27162306a36Sopenharmony_ci            regulator-min-microvolt = <4000000>;
27262306a36Sopenharmony_ci            regulator-max-microvolt = <6000000>;
27362306a36Sopenharmony_ci            regulator-boot-on;
27462306a36Sopenharmony_ci          };
27562306a36Sopenharmony_ci          vibldo {
27662306a36Sopenharmony_ci            regulator-name = "mt6370-vib-ldo";
27762306a36Sopenharmony_ci            regulator-min-microvolt = <1600000>;
27862306a36Sopenharmony_ci            regulator-max-microvolt = <4000000>;
27962306a36Sopenharmony_ci          };
28062306a36Sopenharmony_ci        };
28162306a36Sopenharmony_ci      };
28262306a36Sopenharmony_ci    };
283