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

title: Maxim MAX14577/MAX77836 MicroUSB and Companion Power Management IC

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>

description: |
  This is a part of device tree bindings for Maxim MAX14577/MAX77836 MicroUSB
  Integrated Circuit (MUIC).

  The Maxim MAX14577 is a MicroUSB and Companion Power Management IC which
  includes voltage safeout regulators, charger and MicroUSB management IC.

  The Maxim MAX77836 is a MicroUSB and Companion Power Management IC which
  includes voltage safeout and LDO regulators, charger, fuel-gauge and MicroUSB
  management IC.

properties:
  compatible:
    enum:
      - maxim,max14577
      - maxim,max77836

  interrupts:
    maxItems: 1

  reg:
    maxItems: 1

  wakeup-source: true

  charger:
    $ref: /schemas/power/supply/maxim,max14577.yaml

  extcon:
    type: object
    properties:
      compatible:
        enum:
          - maxim,max14577-muic
          - maxim,max77836-muic

    required:
      - compatible

  regulators:
    $ref: /schemas/regulator/maxim,max14577.yaml

required:
  - compatible
  - interrupts
  - reg
  - charger

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: maxim,max14577
    then:
      properties:
        charger:
          properties:
            compatible:
              const: maxim,max14577-charger
        extcon:
          properties:
            compatible:
              const: maxim,max14577-muic
        regulator:
          properties:
            compatible:
              const: maxim,max14577-regulator
    else:
      properties:
        charger:
          properties:
            compatible:
              const: maxim,max77836-charger
        extcon:
          properties:
            compatible:
              const: maxim,max77836-muic
        regulator:
          properties:
            compatible:
              const: maxim,max77836-regulator

additionalProperties: false

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

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

        pmic@25 {
            compatible = "maxim,max14577";
            reg = <0x25>;
            interrupt-parent = <&gpx1>;
            interrupts = <5 IRQ_TYPE_LEVEL_LOW>;

            extcon {
                compatible = "maxim,max14577-muic";
            };

            regulators {
                compatible = "maxim,max14577-regulator";

                SAFEOUT {
                    regulator-name = "SAFEOUT";
                };

                CHARGER {
                    regulator-name = "CHARGER";
                    regulator-min-microamp = <90000>;
                    regulator-max-microamp = <950000>;
                    regulator-boot-on;
                };
            };

            charger {
                compatible = "maxim,max14577-charger";

                maxim,constant-uvolt = <4350000>;
                maxim,fast-charge-uamp = <450000>;
                maxim,eoc-uamp = <50000>;
                maxim,ovp-uvolt = <6500000>;
            };
        };
    };

  - |
    #include <dt-bindings/interrupt-controller/irq.h>

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

        pmic@25 {
            compatible = "maxim,max77836";
            interrupt-parent = <&gpx1>;
            interrupts = <5 IRQ_TYPE_NONE>;
            reg = <0x25>;
            wakeup-source;

            extcon {
                compatible = "maxim,max77836-muic";
            };

            regulators {
                compatible = "maxim,max77836-regulator";

                SAFEOUT {
                    regulator-name = "SAFEOUT";
                };

                CHARGER {
                    regulator-name = "CHARGER";
                    regulator-min-microamp = <45000>;
                    regulator-max-microamp = <475000>;
                    regulator-boot-on;
                };

                LDO1 {
                    regulator-name = "MOT_2.7V";
                    regulator-min-microvolt = <1100000>;
                    regulator-max-microvolt = <2700000>;
                };

                LDO2 {
                    regulator-name = "UNUSED_LDO2";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <3950000>;
                };
            };

            charger {
                compatible = "maxim,max77836-charger";

                maxim,constant-uvolt = <4350000>;
                maxim,fast-charge-uamp = <225000>;
                maxim,eoc-uamp = <7500>;
                maxim,ovp-uvolt = <6500000>;
            };
        };
    };
