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

title: Linear Technology LTC3676 8-output regulators

maintainers:
  - Tim Harvey <tharvey@gateworks.com>

description: |
  LTC3676 contains eight regulators, 4 switching SW1..SW4 and four LDO1..4 .

properties:
  compatible:
    const: lltc,ltc3676

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  regulators:
    type: object
    additionalProperties: false
    description: |
      List of regulators provided by this controller, must be named
      after their hardware counterparts (SW|LDO)[1-4].

    patternProperties:
      "^(sw[1-4]|ldo[24])$":
        type: object
        unevaluatedProperties: false
        $ref: regulator.yaml#
        description:
          Properties for single SW or LDO regulator. Regulators SW1..SW4 can
          regulate the feedback reference from 412.5mV to 800mV in 12.5 mV
          steps. The output voltage thus ranges between 0.4125 * (1 + R1/R2) V
          and 0.8 * (1 + R1/R2) V.
          Regulators LDO1, LDO2, LDO4 have a fixed 0.725 V reference and thus
          output 0.725 * (1 + R1/R2) V.
          The LDO1 standby regulator can not be disabled and thus should have
          the regulator-always-on property set.

        properties:
          lltc,fb-voltage-divider:
            description:
              An array of two integers containing the resistor values
              R1 and R2 of the feedback voltage divider in ohms.
            $ref: /schemas/types.yaml#/definitions/uint32-array
            minItems: 2
            maxItems: 2

        required:
          - lltc,fb-voltage-divider

    properties:
      ldo1:
        type: object
        unevaluatedProperties: false
        $ref: regulator.yaml#
        description:
          The LDO1 standby regulator can not be disabled and thus should
          have the regulator-always-on property set. See patternProperties
          description above for the rest of the details.

        properties:
          lltc,fb-voltage-divider:
            description:
              An array of two integers containing the resistor values
              R1 and R2 of the feedback voltage divider in ohms.
            $ref: /schemas/types.yaml#/definitions/uint32-array
            minItems: 2
            maxItems: 2

        required:
          - lltc,fb-voltage-divider
          - regulator-always-on

      ldo3:
        type: object
        unevaluatedProperties: false
        $ref: regulator.yaml#
        description:
          The LDO3 regulator is fixed to 1.8 V. See patternProperties
          description above for the rest of the details.

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

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

        pmic@3c {
            compatible = "lltc,ltc3676";
            reg = <0x3c>;

            regulators {
                sw1_reg: sw1 {
                    regulator-min-microvolt = <674400>;
                    regulator-max-microvolt = <1308000>;
                    lltc,fb-voltage-divider = <127000 200000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw2_reg: sw2 {
                    regulator-min-microvolt = <1033310>;
                    regulator-max-microvolt = <200400>;
                    lltc,fb-voltage-divider = <301000 200000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw3_reg: sw3 {
                    regulator-min-microvolt = <674400>;
                    regulator-max-microvolt = <130800>;
                    lltc,fb-voltage-divider = <127000 200000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw4_reg: sw4 {
                    regulator-min-microvolt = <868310>;
                    regulator-max-microvolt = <168400>;
                    lltc,fb-voltage-divider = <221000 200000>;
                    regulator-ramp-delay = <7000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                ldo2_reg: ldo2 {
                    regulator-min-microvolt = <2490375>;
                    regulator-max-microvolt = <2490375>;
                    lltc,fb-voltage-divider = <487000 200000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                ldo3_reg: ldo3 {
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <1800000>;
                    regulator-boot-on;
                };

                ldo4_reg: ldo4 {
                    regulator-min-microvolt = <3023250>;
                    regulator-max-microvolt = <3023250>;
                    lltc,fb-voltage-divider = <634000 200000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
            };
        };
    };