# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/maxim,max77802.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Maxim MAX77802 Power Management IC

maintainers:
  - Javier Martinez Canillas <javier@dowhile0.org>
  - Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>

description: |
  This is a part of device tree bindings for Maxim MAX77802 Power Management
  Integrated Circuit (PMIC).

  The Maxim MAX77802 is a Power Management IC which includes voltage and
  current regulators (10 high efficiency Buck regulators and 32 Low-DropOut
  (LDO)), RTC and clock outputs.

  The MAX77802 provides two 32.768khz clock outputs that can be controlled
  (gated/ungated) over I2C.  The clock IDs are defined as preprocessor macros
  in dt-bindings/clock/maxim,max77802.h.

properties:
  compatible:
    const: maxim,max77802

  '#clock-cells':
    const: 1

  interrupts:
    maxItems: 1

  reg:
    maxItems: 1

  regulators:
    $ref: /schemas/regulator/maxim,max77802.yaml
    description:
      List of child nodes that specify the regulators.

  inb1-supply:
    description: Power supply for buck1
  inb2-supply:
    description: Power supply for buck2
  inb3-supply:
    description: Power supply for buck3
  inb4-supply:
    description: Power supply for buck4
  inb5-supply:
    description: Power supply for buck5
  inb6-supply:
    description: Power supply for buck6
  inb7-supply:
    description: Power supply for buck7
  inb8-supply:
    description: Power supply for buck8
  inb9-supply:
    description: Power supply for buck9
  inb10-supply:
    description: Power supply for buck10

  inl1-supply:
    description: Power supply for LDO8, LDO15
  inl2-supply:
    description: Power supply for LDO17, LDO27, LDO30, LDO35
  inl3-supply:
    description: Power supply for LDO3, LDO5, LDO7, LDO7
  inl4-supply:
    description: Power supply for LDO10, LDO11, LDO13, LDO14
  inl5-supply:
    description: Power supply for LDO9, LDO19
  inl6-supply:
    description: Power supply for LDO4, LDO21, LDO24, LDO33
  inl7-supply:
    description: Power supply for LDO18, LDO20, LDO28, LDO29
  inl9-supply:
    description: Power supply for LDO12, LDO23, LDO25, LDO26, LDO32, LDO34
  inl10-supply:
    description: Power supply for LDO1, LDO2

  wakeup-source: true

required:
  - compatible
  - '#clock-cells'
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/maxim,max77802.h>

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

        pmic@9 {
            compatible = "maxim,max77802";
            interrupt-parent = <&gpx3>;
            interrupts = <1 IRQ_TYPE_NONE>;
            pinctrl-names = "default";
            pinctrl-0 = <&max77802_irq>, <&pmic_selb>,
                        <&pmic_dvs_1>, <&pmic_dvs_2>, <&pmic_dvs_3>;
            wakeup-source;
            reg = <0x9>;
            #clock-cells = <1>;

            inb1-supply = <&tps65090_dcdc2>;
            inb2-supply = <&tps65090_dcdc1>;
            inb3-supply = <&tps65090_dcdc2>;
            inb4-supply = <&tps65090_dcdc2>;
            inb5-supply = <&tps65090_dcdc1>;
            inb6-supply = <&tps65090_dcdc2>;
            inb7-supply = <&tps65090_dcdc1>;
            inb8-supply = <&tps65090_dcdc1>;
            inb9-supply = <&tps65090_dcdc1>;
            inb10-supply = <&tps65090_dcdc1>;

            inl1-supply = <&buck5_reg>;
            inl2-supply = <&buck7_reg>;
            inl3-supply = <&buck9_reg>;
            inl4-supply = <&buck9_reg>;
            inl5-supply = <&buck9_reg>;
            inl6-supply = <&tps65090_dcdc2>;
            inl7-supply = <&buck9_reg>;
            inl9-supply = <&tps65090_dcdc2>;
            inl10-supply = <&buck7_reg>;

            regulators {
                BUCK1 {
                    regulator-name = "vdd_mif";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1300000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-ramp-delay = <12500>;
                    regulator-state-mem {
                        regulator-off-in-suspend;
                    };
                };

                BUCK2 {
                    regulator-name = "vdd_arm";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1500000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-ramp-delay = <12500>;
                    regulator-coupled-with = <&buck3_reg>;
                    regulator-coupled-max-spread = <300000>;
                    regulator-state-mem {
                        regulator-off-in-suspend;
                    };
                };

                // ...

                BUCK10 {
                    regulator-name = "vdd_1v8";
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <1800000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                    };
                };

                LDO1 {
                    regulator-name = "vdd_1v0";
                    regulator-min-microvolt = <1000000>;
                    regulator-max-microvolt = <1000000>;
                    regulator-always-on;
                    regulator-initial-mode = <MAX77802_OPMODE_NORMAL>;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                        regulator-mode = <MAX77802_OPMODE_LP>;
                    };
                };

                // ...

                LDO35 {
                    regulator-name = "ldo_35";
                    regulator-min-microvolt = <1200000>;
                    regulator-max-microvolt = <1200000>;
                };
            };
        };
    };
