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

title: PFUZE100 family of regulators

maintainers:
  - Robin Gong <yibin.gong@nxp.com>

description: |
  The valid names for regulators are:
  --PFUZE100
  sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6
  --PFUZE200
  sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6,coin
  --PFUZE3000
  sw1a,sw1b,sw2,sw3,swbst,vsnvs,vrefddr,vldo1,vldo2,vccsd,v33,vldo3,vldo4
  --PFUZE3001
  sw1,sw2,sw3,vsnvs,vldo1,vldo2,vccsd,v33,vldo3,vldo4

  Each regulator is defined using the standard binding for regulators.

properties:
  $nodename:
    pattern: "^pmic@[0-9]$"

  compatible:
    enum:
      - fsl,pfuze100
      - fsl,pfuze200
      - fsl,pfuze3000
      - fsl,pfuze3001

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  fsl,pfuze-support-disable-sw:
    $ref: /schemas/types.yaml#/definitions/flag
    description: |
      Boolean, if present disable all unused switch regulators to save power
      consumption. Attention, ensure that all important regulators
      (e.g. DDR ref, DDR supply) has set the "regulator-always-on" property.
      If not present, the switched regulators are always on and can't be
      disabled. This binding is a workaround to keep backward compatibility
      with old dtb's which rely on the fact that the switched regulators are
      always on and don't mark them explicit as "regulator-always-on".

  fsl,pmic-stby-poweroff:
    $ref: /schemas/types.yaml#/definitions/flag
    description: |
      if present, configure the PMIC to shutdown all
      power rails when PMIC_STBY_REQ line is asserted during the power off sequence.
      Use this option if the SoC should be powered off by external power management
      IC (PMIC) on PMIC_STBY_REQ signal.
      As opposite to PMIC_STBY_REQ boards can implement PMIC_ON_REQ signal.

  regulators:
    type: object
    description: |
      list of regulators provided by this controller.

    patternProperties:
      "^sw([1-4]|[1-4][a-c]|[1-4][a-c][a-c])$":
        $ref: regulator.yaml#
        type: object
        unevaluatedProperties: false

      "^vgen[1-6]$":
        $ref: regulator.yaml#
        type: object
        unevaluatedProperties: false

      "^vldo[1-4]$":
        $ref: regulator.yaml#
        type: object
        unevaluatedProperties: false

      "^(vsnvs|vref|vrefddr|swbst|coin|v33|vccsd)$":
        $ref: regulator.yaml#
        type: object
        unevaluatedProperties: false

    additionalProperties: false

required:
  - compatible
  - reg

additionalProperties: false

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

        pmic@8 {
            compatible = "fsl,pfuze100";
            reg = <0x08>;

            regulators {
                sw1a_reg: sw1ab {
                    regulator-min-microvolt = <300000>;
                    regulator-max-microvolt = <1875000>;
                    regulator-boot-on;
                    regulator-always-on;
                    regulator-ramp-delay = <6250>;
                };

                sw1c_reg: sw1c {
                    regulator-min-microvolt = <300000>;
                    regulator-max-microvolt = <1875000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw2_reg: sw2 {
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw3a_reg: sw3a {
                    regulator-min-microvolt = <400000>;
                    regulator-max-microvolt = <1975000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw3b_reg: sw3b {
                    regulator-min-microvolt = <400000>;
                    regulator-max-microvolt = <1975000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                sw4_reg: sw4 {
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <3300000>;
                };

                swbst_reg: swbst {
                    regulator-min-microvolt = <5000000>;
                    regulator-max-microvolt = <5150000>;
                };

                snvs_reg: vsnvs {
                    regulator-min-microvolt = <1000000>;
                    regulator-max-microvolt = <3000000>;
                    regulator-boot-on;
                    regulator-always-on;
                };

                vref_reg: vrefddr {
                    regulator-boot-on;
                    regulator-always-on;
                };

                vgen1_reg: vgen1 {
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1550000>;
                };

                vgen2_reg: vgen2 {
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1550000>;
                };

                vgen3_reg: vgen3 {
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <3300000>;
                };

                vgen4_reg: vgen4 {
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-always-on;
                };

                vgen5_reg: vgen5 {
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-always-on;
                };

                vgen6_reg: vgen6 {
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-always-on;
                };
            };
        };
    };