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

title: Linear Technology LTC3589 PMIC

maintainers:
  - Frank Li <Frank.li@kernel.org>

description:
  Linear Technology LTC3589, LTC3589-1 and LTC3589-2 are PMICs
  containing three buck regulators, one boost regulator and four
  LDO regulators.

properties:
  compatible:
    enum:
      - lltc,ltc3589
      - lltc,ltc3589-1
      - lltc,ltc3589-2

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  regulators:
    type: object
    additionalProperties: false

    patternProperties:
      "^(sw1|sw2|sw3|bb-out|ldo1|ldo2)$":
        type: object
        unevaluatedProperties: false
        $ref: regulator.yaml#

        properties:
          lltc,fb-voltage-divider:
            description:
              Feedback voltage divider resistor values (R1, R2) in ohms.
              Regulators sw1, sw2, sw3, and ldo2 can regulate the feedback
              reference from 0.3625 V to 0.75 V in 12.5 mV steps. The output
              voltage thus ranges between 0.3625 * (1 + R1/R2) V and
              0.75 * (1 + R1/R2) V. Regulators bb-out and ldo1 have a fixed
              0.8 V reference and thus output 0.8 * (1 + R1/R2) V. The ldo3
              regulator is fixed to 1.8 V on LTC3589 and to 2.8 V on
              LTC3589-1,2. The ldo4 regulator can output between 1.8 V and
              3.3 V on LTC3589 and between 1.2 V and 3.2 V on LTC3589-1,2 in
              four steps. The ldo1 standby regulator can not be disabled and
              thus should have the regulator-always-on property set.
            $ref: /schemas/types.yaml#/definitions/uint32-array
            items:
              - description: R1 in ohms
              - description: R2 in ohms.

        required:
          - lltc,fb-voltage-divider

      "^(ldo3|ldo4)$":
        type: object
        unevaluatedProperties: false
        $ref: regulator.yaml#

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

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

        pmic@34 {
            compatible = "lltc,ltc3589-1";
            reg = <0x34>;

            regulators {
                sw1 {
                    regulator-min-microvolt = <591930>;
                    regulator-max-microvolt = <1224671>;
                    lltc,fb-voltage-divider = <100000 158000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw2 {
                    regulator-min-microvolt = <704123>;
                    regulator-max-microvolt = <1456803>;
                    lltc,fb-voltage-divider = <180000 191000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw3 {
                    regulator-min-microvolt = <1341250>;
                    regulator-max-microvolt = <2775000>;
                    lltc,fb-voltage-divider = <270000 100000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                bb-out {
                    regulator-min-microvolt = <3387341>;
                    regulator-max-microvolt = <3387341>;
                    lltc,fb-voltage-divider = <511000 158000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                ldo1 {
                    regulator-min-microvolt = <1306329>;
                    regulator-max-microvolt = <1306329>;
                    lltc,fb-voltage-divider = <100000 158000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                ldo2 {
                    regulator-min-microvolt = <704123>;
                    regulator-max-microvolt = <1456806>;
                    lltc,fb-voltage-divider = <180000 191000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                ldo3 {
                    regulator-min-microvolt = <2800000>;
                    regulator-max-microvolt = <2800000>;
                    regulator-boot-on;
                };

                ldo4 {
                    regulator-min-microvolt = <1200000>;
                    regulator-max-microvolt = <3200000>;
                };
            };
        };
    };