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

title: MT6360 PMIC from MediaTek Integrated

maintainers:
  - Gene Chen <gene_chen@richtek.com>

description: |
  MT6360 is a PMIC device with the following sub modules.
  It is interfaced to host controller using I2C interface.

  This document describes the binding for PMIC device and its sub module.

properties:
  compatible:
    const: mediatek,mt6360

  reg:
    maxItems: 1

  wakeup-source: true

  interrupts:
    maxItems: 1

  interrupt-names:
    const: IRQB

  interrupt-controller: true

  "#interrupt-cells":
    const: 1
    description:
      The first cell is the IRQ number.

  regulators:
    $ref: /schemas/regulator/mt6360-regulator.yaml#

  charger:
    $ref: /schemas/power/supply/mt6360_charger.yaml#

  tcpc:
    $ref: /schemas/usb/mediatek,mt6360-tcpc.yaml#

  led-controller:
    $ref: /schemas/leds/leds-mt6360.yaml#

required:
  - compatible
  - reg
  - interrupts
  - interrupt-controller
  - "#interrupt-cells"

additionalProperties:
  type: object

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

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

            mt6360_charger: charger {
                compatible = "mediatek,mt6360-chg";
                richtek,vinovp-microvolt = <14500000>;

                otg_vbus_regulator: usb-otg-vbus-regulator {
                    regulator-name = "usb-otg-vbus";
                    regulator-min-microvolt = <4425000>;
                    regulator-max-microvolt = <5825000>;
                };
            };

            led-controller {
                compatible = "mediatek,mt6360-led";
                #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 = <150000>;
                };
                led@4 {
                    reg = <4>;
                    function = LED_FUNCTION_FLASH;
                    color = <LED_COLOR_ID_WHITE>;
                    function-enumerator = <1>;
                    led-max-microamp = <200000>;
                    flash-max-microamp = <500000>;
                    flash-max-timeout-us = <1024000>;
                };
                led@5 {
                    reg = <5>;
                    function = LED_FUNCTION_FLASH;
                    color = <LED_COLOR_ID_WHITE>;
                    function-enumerator = <2>;
                    led-max-microamp = <200000>;
                    flash-max-microamp = <500000>;
                    flash-max-timeout-us = <1024000>;
                };
            };

            regulators {
                compatible = "mediatek,mt6360-regulator";
                LDO_VIN3-supply = <&BUCK2>;
                buck1 {
                    regulator-name = "mt6360,buck1";
                    regulator-min-microvolt = <300000>;
                    regulator-max-microvolt = <1300000>;
                    regulator-allowed-modes = <MT6360_OPMODE_NORMAL
                         MT6360_OPMODE_LP
                         MT6360_OPMODE_ULP>;
                };
                BUCK2: buck2 {
                    regulator-name = "mt6360,buck2";
                    regulator-min-microvolt = <300000>;
                    regulator-max-microvolt = <1300000>;
                    regulator-allowed-modes = <MT6360_OPMODE_NORMAL
                         MT6360_OPMODE_LP
                         MT6360_OPMODE_ULP>;
                };
                ldo6 {
                    regulator-name = "mt6360,ldo6";
                    regulator-min-microvolt = <500000>;
                    regulator-max-microvolt = <2100000>;
                    regulator-allowed-modes = <MT6360_OPMODE_NORMAL
                         MT6360_OPMODE_LP>;
                };
                ldo7 {
                    regulator-name = "mt6360,ldo7";
                    regulator-min-microvolt = <500000>;
                    regulator-max-microvolt = <2100000>;
                    regulator-allowed-modes = <MT6360_OPMODE_NORMAL
                         MT6360_OPMODE_LP>;
                };
                ldo1 {
                    regulator-name = "mt6360,ldo1";
                    regulator-min-microvolt = <1200000>;
                    regulator-max-microvolt = <3600000>;
                    regulator-allowed-modes = <MT6360_OPMODE_NORMAL
                         MT6360_OPMODE_LP>;
                };
                ldo2 {
                    regulator-name = "mt6360,ldo2";
                    regulator-min-microvolt = <1200000>;
                    regulator-max-microvolt = <3600000>;
                    regulator-allowed-modes = <MT6360_OPMODE_NORMAL
                         MT6360_OPMODE_LP>;
                };
                ldo3 {
                    regulator-name = "mt6360,ldo3";
                    regulator-min-microvolt = <1200000>;
                    regulator-max-microvolt = <3600000>;
                    regulator-allowed-modes = <MT6360_OPMODE_NORMAL
                         MT6360_OPMODE_LP>;
                };
                ldo5 {
                    regulator-name = "mt6360,ldo5";
                    regulator-min-microvolt = <2700000>;
                    regulator-max-microvolt = <3600000>;
                    regulator-allowed-modes = <MT6360_OPMODE_NORMAL
                         MT6360_OPMODE_LP>;
                };
            };

            tcpc {
                compatible = "mediatek,mt6360-tcpc";
                interrupts-extended = <&gpio26 3 IRQ_TYPE_LEVEL_LOW>;
                interrupt-names = "PD_IRQB";

                connector {
                    compatible = "usb-c-connector";
                    label = "USB-C";
                    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>;
                            };
                        };
                    };
                };
            };
        };
    };
