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

title: Qualcomm Technologies, Inc. PM8008 Regulator

maintainers:
  - Umang Chheda <quic_uchheda@quicinc.com>

description: |
  PM8008 chips contain 7 LDO regulators along with a top-level chip sleep feature.

properties:
  compatible:
    enum:
      - qcom,pm8008-regulator
      - qcom,pm8010-regulator

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  pm8008_en-supply:
    description:
      Reference to PM8008 chip enable regulator, which manages
      chip enable functionlity of PM8008.

  vdd_l1_l2-supply:
    description:
      Parent supply for LDO1/LDO2 of PM8008.

  vdd_l3_l4-supply:
    description:
      Parent supply for LDO3/LDO4 of PM8008.

  vdd_l5-supply:
    description:
      Parent supply for LDO5 of PM8008.

  vdd_l6-supply:
    description:
      Parent supply for LDO6 of PM8008.

  vdd_l7-supply:
    description:
      Parent supply for LDO7 of PM8008.

patternProperties:
  "^regulator@[0-9a-f]+$":
    type: object
    $ref: /schemas/regulator/regulator.yaml#

    description: |
      Individual regulator devices under PM8008 chip.

    properties:
      reg:
        maxItems: 1
        description: |
          Base address of individual LDO.

      qcom,hpm-min-load:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: |
          Load current in uA which corresponds to the minimum load
          which requires the regulator to be in high power mode.

      qcom,min-dropout-voltage:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: |
          Specifies the minimum voltage in microvolts that the parent
          supply regulator must output above the output of this
          regulator.  It is only meaningful if the corresponding parent
          supply property has been specified in the first level node.

      qcom,init-voltage:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: |
          Specifies the initial voltage in microvolts to for a regulator.

    required:
      - reg

required:
  - compatible
  - pm8008_en-supply

additionalProperties: false

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

    i2c1 {
      status = "okay";
      #address-cells = <1>;
      #size-cells = <0>;

      pm8008i_ldo: pm8008i@9 {
        compatible = "qcom,i2c-pmic";
        reg = <0x9>;
        #address-cells = <1>;
        #size-cells = <0>;


        qcom,pm8008i-regulator {
          compatible = "qcom,pm8008-regulator";
          #address-cells = <1>;
          #size-cells = <0>;

          pm8008_en-supply = <&PM8008I_EN>;
          vdd_l1_l2-supply = <&vreg_s8b_1p2>;
          vdd_l3_l4-supply = <&vreg_bob>;
          vdd_l5-supply = <&vreg_s1b_1p8>;
          vdd_l6-supply = <&vreg_bob>;
          vdd_l7-supply = <&vreg_bob>;


          L1I: pm8008i_l1: regulator@4000 {
            reg = <0x4000>;
            regulator-name = "pm8008i_l1";
            regulator-min-microvolt = <1000000>;
            regulator-max-microvolt = <1200000>;
            qcom,min-dropout-voltage = <160000>;
            qcom,hpm-min-load = <30000>;
          };

          L2I: pm8008i_l2: regulator@4100 {
            reg = <0x4100>;
            regulator-name = "pm8008i_l2";
            regulator-min-microvolt = <950000>;
            regulator-max-microvolt = <1150000>;
            qcom,min-dropout-voltage = <128000>;
            qcom,hpm-min-load = <30000>;
          };

          L3I: pm8008i_l3: regulator@4200 {
            reg = <0x4200>;
            regulator-name = "pm8008i_l3";
            regulator-min-microvolt = <2700000>;
            regulator-max-microvolt = <3000000>;
            qcom,min-dropout-voltage = <144000>;
          };

          L4I: pm8008i_l4: regulator@4300 {
            reg = <0x4300>;
            regulator-name = "pm8008i_l4";
            regulator-min-microvolt = <2700000>;
            regulator-max-microvolt = <2900000>;
            qcom,min-dropout-voltage = <128000>;
          };

          L5I: pm8008i_l5: regulator@4400 {
            reg = <0x4400>;
            regulator-name = "pm8008i_l5";
            regulator-min-microvolt = <1700000>;
            regulator-max-microvolt = <1900000>;
            qcom,min-dropout-voltage = <136000>;
          };

          L6I: pm8008i_l6: regulator@4500 {
            reg = <0x4500>;
            regulator-name = "pm8008i_l6";
            regulator-min-microvolt = <2700000>;
            regulator-max-microvolt = <2900000>;
            qcom,min-dropout-voltage = <128000>;
          };

          L7I: pm8008i_l7: regulator@4600 {
            reg = <0x4600>;
            regulator-name = "pm8008i_l7";
            regulator-min-microvolt = <2700000>;
            regulator-max-microvolt = <3000000>;
            qcom,min-dropout-voltage = <312000>;
          };

        };
      };
    };

...
