code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/pwm/renesas,tpu-pwm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Renesas R-Car Timer Pulse Unit PWM Controller

maintainers:
  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

select:
  properties:
    compatible:
      contains:
        const: renesas,tpu
  required:
    - compatible
    - '#pwm-cells'

properties:
  compatible:
    items:
      - enum:
          - renesas,tpu-r8a73a4   # R-Mobile APE6
          - renesas,tpu-r8a7740   # R-Mobile A1
          - renesas,tpu-r8a7742   # RZ/G1H
          - renesas,tpu-r8a7743   # RZ/G1M
          - renesas,tpu-r8a7744   # RZ/G1N
          - renesas,tpu-r8a7745   # RZ/G1E
          - renesas,tpu-r8a7790   # R-Car H2
          - renesas,tpu-r8a7791   # R-Car M2-W
          - renesas,tpu-r8a7792   # R-Car V2H
          - renesas,tpu-r8a7793   # R-Car M2-N
          - renesas,tpu-r8a7794   # R-Car E2
          - renesas,tpu-r8a7795   # R-Car H3
          - renesas,tpu-r8a7796   # R-Car M3-W
          - renesas,tpu-r8a77961  # R-Car M3-W+
          - renesas,tpu-r8a77965  # R-Car M3-N
          - renesas,tpu-r8a77970  # R-Car V3M
          - renesas,tpu-r8a77980  # R-Car V3H
          - renesas,tpu-r8a779a0  # R-Car V3U
      - const: renesas,tpu

  reg:
    # Base address and length of each memory resource used by the PWM
    # controller hardware module.
    maxItems: 1

  interrupts:
    maxItems: 1

  '#pwm-cells':
    # should be 3. See pwm.yaml in this directory for a description of
    # the cells format. The only third cell flag supported by this binding is
    # PWM_POLARITY_INVERTED.
    const: 3

  clocks:
    maxItems: 1

  power-domains:
    maxItems: 1

  resets:
    maxItems: 1

required:
  - compatible
  - reg
  - clocks
  - power-domains

allOf:
  - $ref: pwm.yaml#

  - if:
      not:
        properties:
          compatible:
            contains:
              enum:
                - renesas,tpu-r8a73a4
                - renesas,tpu-r8a7740
    then:
      required:
        - resets

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/r8a7740-clock.h>

    tpu: pwm@e6600000 {
        compatible = "renesas,tpu-r8a7740", "renesas,tpu";
        reg = <0xe6600000 0x148>;
        clocks = <&mstp3_clks R8A7740_CLK_TPU0>;
        power-domains = <&pd_a3sp>;
        #pwm-cells = <3>;
    };


code:
== ST SPEAr SoC PWM controller ==

Required properties:
- compatible: should be one of:
  - "st,spear320-pwm"
  - "st,spear1340-pwm"
- reg: physical base address and length of the controller's registers
- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
  the cells format.

Example:

        pwm: pwm@a8000000 {
            compatible ="st,spear320-pwm";
            reg = <0xa8000000 0x1000>;
            #pwm-cells = <2>;
        };

repo_name: angery/linux


code:
== ST STMPE PWM controller ==

This is a PWM block embedded in the ST Microelectronics STMPE
(ST Multi-Purpose Expander) chips. The PWM is registered as a
subdevices of the STMPE MFD device.

Required properties:
- compatible: should be:
  - "st,stmpe-pwm"
- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
  the cells format.

Example:

pwm0: pwm {
	compatible = "st,stmpe-pwm";
	#pwm-cells = <2>;
};


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) Sunplus Co., Ltd. 2021
%YAML 1.2
---
$id: http://devicetree.org/schemas/pwm/sunplus,sp7021-pwm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Sunplus SoC SP7021 PWM Controller

maintainers:
  - Hammer Hsieh <hammerh0314@gmail.com>

allOf:
  - $ref: pwm.yaml#

properties:
  compatible:
    const: sunplus,sp7021-pwm

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  '#pwm-cells':
    const: 2

unevaluatedProperties: false

required:
  - reg
  - clocks

examples:
  - |
    pwm: pwm@9c007a00 {
      compatible = "sunplus,sp7021-pwm";
      reg = <0x9c007a00 0x80>;
      clocks = <&clkc 0xa2>;
      #pwm-cells = <2>;
    };


code:
Texas Instruments TWL series PWM drivers

Supported PWMs:
On TWL4030 series: PWM1 and PWM2
On TWL6030 series: PWM0 and PWM1

Required properties:
- compatible: "ti,twl4030-pwm" or "ti,twl6030-pwm"
- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
  the cells format.

Example:

twl_pwm: pwm {
	compatible = "ti,twl6030-pwm";
	#pwm-cells = <2>;
};


code:
Texas Instruments TWL series PWM drivers connected to LED terminals

Supported PWMs:
On TWL4030 series: PWMA and PWMB (connected to LEDA and LEDB terminals)
On TWL6030 series: LED PWM (mainly used as charging indicator LED)

Required properties:
- compatible: "ti,twl4030-pwmled" or "ti,twl6030-pwmled"
- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
  the cells format.

Example:

twl_pwmled: pwmled {
	compatible = "ti,twl6030-pwmled";
	#pwm-cells = <2>;
};


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

title: Toshiba Visconti PWM Controller

maintainers:
  - Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>

allOf:
  - $ref: pwm.yaml#

properties:
  compatible:
    items:
      - const: toshiba,visconti-pwm

  reg:
    maxItems: 1

  '#pwm-cells':
    const: 2

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        pwm: pwm@241c0000 {
            compatible = "toshiba,visconti-pwm";
            reg = <0 0x241c0000 0 0x1000>;
            pinctrl-names = "default";
            pinctrl-0 = <&pwm_mux>;
            #pwm-cells = <2>;
        };
    };


code:
VIA/Wondermedia VT8500/WM8xxx series SoC PWM controller

Required properties:
- compatible: should be "via,vt8500-pwm"
- reg: physical base address and length of the controller's registers
- #pwm-cells: should be 3. See pwm.yaml in this directory for a description of
  the cells format. The only third cell flag supported by this binding is
  PWM_POLARITY_INVERTED.
- clocks: phandle to the PWM source clock

Example:

pwm1: pwm@d8220000 {
	#pwm-cells = <3>;
	compatible = "via,vt8500-pwm";
	reg = <0xd8220000 0x1000>;
	clocks = <&clkpwm>;
};


code:
Devicetree binding for regmap

Optional properties:

   little-endian,
   big-endian,
   native-endian:	See common-properties.txt for a definition

Note:
Regmap defaults to little-endian register access on MMIO based
devices, this is by far the most common setting. On CPU
architectures that typically run big-endian operating systems
(e.g. PowerPC), registers can be defined as big-endian and must
be marked that way in the devicetree.

On SoCs that can be operated in both big-endian and little-endian
modes, with a single hardware switch controlling both the endianness
of the CPU and a byteswap for MMIO registers (e.g. many Broadcom MIPS
chips), "native-endian" is used to allow using the same device tree
blob in both cases.

Examples:
Scenario 1 : a register set in big-endian mode.
dev: dev@40031000 {
	      compatible = "syscon";
	      reg = <0x40031000 0x1000>;
	      big-endian;
	      ...
};


code:
Marvell 88PG867/88PG868 voltage regulators

Required properties:
- compatible: one of "marvell,88pg867", "marvell,88pg868";
- reg: I2C slave address.

Optional subnodes for regulators: "buck1", "buck2", using common regulator
bindings given in <Documentation/devicetree/bindings/regulator/regulator.txt>.

Example:

	pg868@19 {
		compatible = "marvell,88pg868";
		reg = <0x19>;

		vcpu: buck1 {
			regulator-boot-on;
			regulator-always-on;
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1350000>;
		};
	};


code:
Marvell 88PM800 regulator

Required properties:
- compatible: "marvell,88pm800"
- reg: I2C slave address
- regulators: A node that houses a sub-node for each regulator within the
  device. Each sub-node is identified using the node's name (or the deprecated
  regulator-compatible property if present), with valid values listed below.
  The content of each sub-node is defined by the standard binding for
  regulators; see regulator.txt.

The valid names for regulators are:

  buck1, buck2, buck3, buck4, buck5, ldo1, ldo2, ldo3, ldo4, ldo5, ldo6, ldo7,
  ldo8, ldo9, ldo10, ldo11, ldo12, ldo13, ldo14, ldo15, ldo16, ldo17, ldo18, ldo19

Example:

	pmic: 88pm800@31 {
		compatible = "marvell,88pm800";
		reg = <0x31>;

		regulators {
			buck1 {
			        regulator-min-microvolt = <600000>;
			        regulator-max-microvolt = <3950000>;
			        regulator-boot-on;
			        regulator-always-on;
			};
			ldo1 {
			        regulator-min-microvolt = <600000>;
			        regulator-max-microvolt = <15000000>;
			        regulator-boot-on;
			        regulator-always-on;
			};
...
		};
	};


code:
Marvell 88PM860x regulator

Required properties:
- compatible: "marvell,88pm860x"
- reg: I2C slave address
- regulators: A node that houses a sub-node for each regulator within the
  device. Each sub-node is identified using the regulator-compatible
  property, with valid values listed below.

Example:

	pmic: 88pm860x@34 {
		compatible = "marvell,88pm860x";
		reg = <0x34>;

		regulators {
			BUCK1 {
			        regulator-min-microvolt = <1000000>;
			        regulator-max-microvolt = <1500000>;
			        regulator-boot-on;
			        regulator-always-on;
			};
			BUCK3 {
			        regulator-min-microvolt = <1000000>;
			        regulator-max-microvolt = <3000000>;
			        regulator-boot-on;
			        regulator-always-on;
			};
		};
	};


code:
ACT88xx regulators
-------------------

Required properties:
- compatible: "active-semi,act8846" or "active-semi,act8865" or "active-semi,act8600"
- reg: I2C slave address

Optional properties:
- system-power-controller: Telling whether or not this pmic is controlling
  the system power. See Documentation/devicetree/bindings/power/power-controller.txt .
- active-semi,vsel-high: Indicates the VSEL pin is high.
  If this property is missing, assume the VSEL pin is low(0).

Optional input supply properties:
- for act8600:
  - vp1-supply: The input supply for DCDC_REG1
  - vp2-supply: The input supply for DCDC_REG2
  - vp3-supply: The input supply for DCDC_REG3
  - inl-supply: The input supply for LDO_REG5, LDO_REG6, LDO_REG7 and LDO_REG8
  SUDCDC_REG4, LDO_REG9 and LDO_REG10 do not have separate supplies.
- for act8846:
  - vp1-supply: The input supply for REG1
  - vp2-supply: The input supply for REG2
  - vp3-supply: The input supply for REG3
  - vp4-supply: The input supply for REG4
  - inl1-supply: The input supply for REG5, REG6 and REG7
  - inl2-supply: The input supply for REG8 and LDO_REG9
  - inl3-supply: The input supply for REG10, REG11 and REG12
- for act8865:
  - vp1-supply: The input supply for DCDC_REG1
  - vp2-supply: The input supply for DCDC_REG2
  - vp3-supply: The input supply for DCDC_REG3
  - inl45-supply: The input supply for LDO_REG1 and LDO_REG2
  - inl67-supply: The input supply for LDO_REG3 and LDO_REG4

Any standard regulator properties can be used to configure the single regulator.
regulator-initial-mode, regulator-allowed-modes and regulator-mode could be specified
for act8865 using mode values from dt-bindings/regulator/active-semi,8865-regulator.h
file.

The valid names for regulators are:
	- for act8846:
	REG1, REG2, REG3, REG4, REG5, REG6, REG7, REG8, REG9, REG10, REG11, REG12
	- for act8865:
	DCDC_REG1, DCDC_REG2, DCDC_REG3, LDO_REG1, LDO_REG2, LDO_REG3, LDO_REG4.
	- for act8600:
	DCDC_REG1, DCDC_REG2, DCDC_REG3, SUDCDC_REG4, LDO_REG5, LDO_REG6, LDO_REG7,
	LDO_REG8, LDO_REG9, LDO_REG10,

Example:
--------

#include <dt-bindings/regulator/active-semi,8865-regulator.h>

		i2c1: i2c@f0018000 {
			pmic: act8865@5b {
				compatible = "active-semi,act8865";
				reg = <0x5b>;
				active-semi,vsel-high;

				regulators {
					vcc_1v8_reg: DCDC_REG1 {
						regulator-name = "VCC_1V8";
						regulator-min-microvolt = <1800000>;
						regulator-max-microvolt = <1800000>;
						regulator-always-on;
					};

					vcc_1v2_reg: DCDC_REG2 {
						regulator-name = "VCC_1V2";
						regulator-min-microvolt = <1100000>;
						regulator-max-microvolt = <1300000>;
						regulator-always-on;

						regulator-allowed-modes = <ACT8865_REGULATOR_MODE_FIXED>,
									  <ACT8865_REGULATOR_MODE_LOWPOWER>;
						regulator-initial-mode = <ACT8865_REGULATOR_MODE_FIXED>;

						regulator-state-mem {
							regulator-on-in-suspend;
							regulator-suspend-min-microvolt = <1150000>;
							regulator-suspend-max-microvolt = <1150000>;
							regulator-changeable-in-suspend;
							regulator-mode = <ACT8865_REGULATOR_MODE_LOWPOWER>;
						};
					};

					vcc_3v3_reg: DCDC_REG3 {
						regulator-name = "VCC_3V3";
						regulator-min-microvolt = <3300000>;
						regulator-max-microvolt = <3300000>;
						regulator-always-on;
					};

					vddana_reg: LDO_REG1 {
						regulator-name = "VDDANA";
						regulator-min-microvolt = <3300000>;
						regulator-max-microvolt = <3300000>;
						regulator-always-on;

						regulator-allowed-modes = <ACT8865_REGULATOR_MODE_NORMAL>,
									  <ACT8865_REGULATOR_MODE_LOWPOWER>;
						regulator-initial-mode = <ACT8865_REGULATOR_MODE_NORMAL>;

						regulator-state-mem {
							regulator-off-in-suspend;
						};
					};

					vddfuse_reg: LDO_REG2 {
						regulator-name = "FUSE_2V5";
						regulator-min-microvolt = <2500000>;
						regulator-max-microvolt = <2500000>;
					};
				};
			};
		};


code:
Device-Tree bindings for regulators of Active-semi ACT8945A Multi-Function Device

Required properties:
 - compatible: "active-semi,act8945a", please refer to ../mfd/act8945a.txt.

Optional properties:
- active-semi,vsel-high: Indicates if the VSEL pin is set to logic-high.
  If this property is missing, assume the VSEL pin is set to logic-low.

Optional input supply properties:
  - vp1-supply: The input supply for REG_DCDC1
  - vp2-supply: The input supply for REG_DCDC2
  - vp3-supply: The input supply for REG_DCDC3
  - inl45-supply: The input supply for REG_LDO1 and REG_LDO2
  - inl67-supply: The input supply for REG_LDO3 and REG_LDO4

Any standard regulator properties can be used to configure the single regulator.
regulator-initial-mode, regulator-allowed-modes and regulator-mode could be
specified using mode values from dt-bindings/regulator/active-semi,8945a-regulator.h
file.

The valid names for regulators are:
	REG_DCDC1, REG_DCDC2, REG_DCDC3, REG_LDO1, REG_LDO2, REG_LDO3, REG_LDO4.

Example:

#include <dt-bindings/regulator/active-semi,8945a-regulator.h>

	pmic@5b {
		compatible = "active-semi,act8945a";
		reg = <0x5b>;

		active-semi,vsel-high;

		regulators {
			vdd_1v35_reg: REG_DCDC1 {
				regulator-name = "VDD_1V35";
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;

				regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
							  <ACT8945A_REGULATOR_MODE_LOWPOWER>;
				regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-min-microvolt=<1400000>;
					regulator-suspend-max-microvolt=<1400000>;
					regulator-changeable-in-suspend;
					regulator-mode=<ACT8945A_REGULATOR_MODE_LOWPOWER>;
				};
			};

			vdd_1v2_reg: REG_DCDC2 {
				regulator-name = "VDD_1V2";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1300000>;
				regulator-always-on;

				regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
							  <ACT8945A_REGULATOR_MODE_LOWPOWER>;
				regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;

				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vdd_3v3_reg: REG_DCDC3 {
				regulator-name = "VDD_3V3";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vdd_fuse_reg: REG_LDO1 {
				regulator-name = "VDD_FUSE";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <2500000>;
				regulator-always-on;

				regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
							  <ACT8945A_REGULATOR_MODE_LOWPOWER>;
				regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;

				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vdd_3v3_lp_reg: REG_LDO2 {
				regulator-name = "VDD_3V3_LP";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vdd_led_reg: REG_LDO3 {
				regulator-name = "VDD_LED";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			vdd_sdhc_1v8_reg: REG_LDO4 {
				regulator-name = "VDD_SDHC_1V8";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};
		};
	};


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

title: Freescale Anatop Voltage Regulators

maintainers:
  - Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>

allOf:
  - $ref: "regulator.yaml#"

properties:
  compatible:
    const: fsl,anatop-regulator

  regulator-name: true

  anatop-reg-offset:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the anatop MFD register offset.

  anatop-vol-bit-shift:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the bit shift for the register.

  anatop-vol-bit-width:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the number of bits used in the register.

  anatop-min-bit-val:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the minimum value of this register.

  anatop-min-voltage:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the minimum voltage of this regulator.

  anatop-max-voltage:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the maximum voltage of this regulator.

  anatop-delay-reg-offset:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the anatop MFD step time register offset.

  anatop-delay-bit-shift:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the bit shift for the step time register.

  anatop-delay-bit-width:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing the number of bits used in the step time register.

  anatop-enable-bit:
    $ref: '/schemas/types.yaml#/definitions/uint32'
    description: u32 value representing regulator enable bit offset.

  vin-supply:
    description: input supply phandle.

required:
  - compatible
  - regulator-name
  - anatop-reg-offset
  - anatop-vol-bit-shift
  - anatop-vol-bit-width
  - anatop-min-bit-val
  - anatop-min-voltage
  - anatop-max-voltage

unevaluatedProperties: false

examples:
  - |
    regulator-vddpu {
        compatible = "fsl,anatop-regulator";
        regulator-name = "vddpu";
        regulator-min-microvolt = <725000>;
        regulator-max-microvolt = <1300000>;
        regulator-always-on;
        anatop-reg-offset = <0x140>;
        anatop-vol-bit-shift = <9>;
        anatop-vol-bit-width = <5>;
        anatop-delay-reg-offset = <0x170>;
        anatop-delay-bit-shift = <24>;
        anatop-delay-bit-width = <2>;
        anatop-min-bit-val = <1>;
        anatop-min-voltage = <725000>;
        anatop-max-voltage = <1300000>;
    };


code:
Regulator of AMS AS3722 PMIC.
Name of the regulator subnode must be "regulators".

Optional properties:
--------------------
The input supply of regulators are the optional properties on the
regulator node. The AS3722 is having 7 DCDC step-down regulators as
sd[0-6], 10 LDOs as ldo[0-7], ldo[9-11]. The input supply of these
regulators are provided through following properties:
vsup-sd2-supply: Input supply for SD2.
vsup-sd3-supply: Input supply for SD3.
vsup-sd4-supply: Input supply for SD4.
vsup-sd5-supply: Input supply for SD5.
vin-ldo0-supply: Input supply for LDO0.
vin-ldo1-6-supply: Input supply for LDO1 and LDO6.
vin-ldo2-5-7-supply: Input supply for LDO2, LDO5 and LDO7.
vin-ldo3-4-supply: Input supply for LDO3 and LDO4.
vin-ldo9-10-supply: Input supply for LDO9 and LDO10.
vin-ldo11-supply: Input supply for LDO11.

Optional nodes:
--------------
- regulators : Must contain a sub-node per regulator from the list below.
	       Each sub-node should contain the constraints and initialization
	       information for that regulator. See regulator.txt for a
	       description of standard properties for these sub-nodes.
	       Additional custom properties  are listed below.
	       sd[0-6], ldo[0-7], ldo[9-11].

	       Optional sub-node properties:
	       ----------------------------
		ams,ext-control: External control of the rail. The option of
			this properties will tell which external input is
			controlling this rail. Valid values are 0, 1, 2 ad 3.
			0: There is no external control of this rail.
			1: Rail is controlled by ENABLE1 input pin.
			2: Rail is controlled by ENABLE2 input pin.
			3: Rail is controlled by ENABLE3 input pin.
		ams,enable-tracking: Enable tracking with SD1, only supported
			by LDO3.

Example:
-------
	ams3722: ams3722 {
		compatible = "ams,as3722";
		reg = <0x40>;
		...

		regulators {
			vsup-sd2-supply = <...>;
			...

			sd0 {
				regulator-name = "vdd_cpu";
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1400000>;
				regulator-always-on;
				ams,ext-control = <2>;
			};

			sd1 {
				regulator-name = "vdd_core";
				regulator-min-microvolt = <700000>;
				regulator-max-microvolt = <1400000>;
				regulator-always-on;
				ams,ext-control = <1>;
			};

			sd2 {
				regulator-name = "vddio_ddr";
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
			};

			sd4 {
				regulator-name = "avdd-hdmi-pex";
				regulator-min-microvolt = <1050000>;
				regulator-max-microvolt = <1050000>;
				regulator-always-on;
			};

			sd5 {
				regulator-name = "vdd-1v8";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
			};
			....
		};
	};


code:
Motorola CPCAP PMIC voltage regulators
------------------------------------

Requires node properties:
- "compatible" value one of:
    "motorola,cpcap-regulator"
    "motorola,mapphone-cpcap-regulator"
    "motorola,xoom-cpcap-regulator"

Required regulator properties:
- "regulator-name"
- "regulator-enable-ramp-delay"
- "regulator-min-microvolt"
- "regulator-max-microvolt"

Optional regulator properties:
- "regulator-boot-on"

See Documentation/devicetree/bindings/regulator/regulator.txt
for more details about the regulator properties.

Example:

cpcap_regulator: regulator {
	compatible = "motorola,cpcap-regulator";

	cpcap_regulators: regulators {
		sw5: SW5 {
			regulator-min-microvolt = <5050000>;
			regulator-max-microvolt = <5050000>;
			regulator-enable-ramp-delay = <50000>;
			regulator-boot-on;
		};
	};
};


code:
* Dialog Semiconductor DA9210 Multi-phase 12A DCDC BUCK Converter

Required properties:

- compatible:	must be "dlg,da9210"
- reg:		the i2c slave address of the regulator. It should be 0x68.

Optional properties:

- interrupts:	a reference to the DA9210 interrupt, if available.

Any standard regulator properties can be used to configure the single da9210
DCDC.

Example:

	da9210@68 {
		compatible = "dlg,da9210";
		reg = <0x68>;

		interrupt-parent = <...>;
		interrupts = <...>;

		regulator-min-microvolt = <300000>;
		regulator-max-microvolt = <1570000>;
		regulator-min-microamp = <1600000>;
		regulator-max-microamp = <4600000>;
		regulator-boot-on;
	};


code:
* Dialog Semiconductor DA9211/DA9212/DA9213/DA9223/DA9214/DA9224/DA9215/DA9225
 Voltage Regulator

Required properties:
- compatible: "dlg,da9211" or "dlg,da9212" or "dlg,da9213" or "dlg,da9223"
  or "dlg,da9214" or "dlg,da9224" or "dlg,da9215" or "dlg,da9225"
- reg: I2C slave address, usually 0x68.
- interrupts: the interrupt outputs of the controller
- regulators: A node that houses a sub-node for each regulator within the
  device. Each sub-node is identified using the node's name, with valid
  values listed below. The content of each sub-node is defined by the
  standard binding for regulators; see regulator.txt.
  BUCKA and BUCKB.

Optional properties:
- enable-gpios: platform gpio for control of BUCKA/BUCKB.
- Any optional property defined in regulator.txt
  - regulator-initial-mode and regulator-allowed-modes may be specified using
    mode values from dt-bindings/regulator/dlg,da9211-regulator.h

Example 1) DA9211
	pmic: da9211@68 {
		compatible = "dlg,da9211";
		reg = <0x68>;
		interrupts = <3 27>;

		regulators {
			BUCKA {
				regulator-name = "VBUCKA";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <2000000>;
				regulator-max-microamp 	= <5000000>;
				enable-gpios = <&gpio 27 0>;
				regulator-allowed-modes = <DA9211_BUCK_MODE_SYNC
							   DA9211_BUCK_MODE_AUTO>;
			};
		};
	};

Example 2) DA9212
	pmic: da9212@68 {
		compatible = "dlg,da9212";
		reg = <0x68>;
		interrupts = <3 27>;

		regulators {
			BUCKA {
				regulator-name = "VBUCKA";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <2000000>;
				regulator-max-microamp 	= <5000000>;
				enable-gpios = <&gpio 27 0>;
			};
			BUCKB {
				regulator-name = "VBUCKB";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <2000000>;
				regulator-max-microamp 	= <5000000>;
				enable-gpios = <&gpio 17 0>;
			};
		};
	};

Example 3) DA9213
	pmic: da9213@68 {
		compatible = "dlg,da9213";
		reg = <0x68>;
		interrupts = <3 27>;

		regulators {
			BUCKA {
				regulator-name = "VBUCKA";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <3000000>;
				regulator-max-microamp 	= <6000000>;
				enable-gpios = <&gpio 27 0>;
			};
		};
	};

Example 4) DA9223
	pmic: da9223@68 {
		compatible = "dlg,da9223";
		reg = <0x68>;
		interrupts = <3 27>;

		regulators {
			BUCKA {
				regulator-name = "VBUCKA";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <3000000>;
				regulator-max-microamp 	= <6000000>;
				enable-gpios = <&gpio 27 0>;
			};
		};
	};

Example 5) DA9214
	pmic: da9214@68 {
		compatible = "dlg,da9214";
		reg = <0x68>;
		interrupts = <3 27>;

		regulators {
			BUCKA {
				regulator-name = "VBUCKA";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <3000000>;
				regulator-max-microamp 	= <6000000>;
				enable-gpios = <&gpio 27 0>;
			};
			BUCKB {
				regulator-name = "VBUCKB";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <3000000>;
				regulator-max-microamp 	= <6000000>;
				enable-gpios = <&gpio 17 0>;
			};
		};
	};

Example 6) DA9224
	pmic: da9224@68 {
		compatible = "dlg,da9224";
		reg = <0x68>;
		interrupts = <3 27>;

		regulators {
			BUCKA {
				regulator-name = "VBUCKA";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <3000000>;
				regulator-max-microamp 	= <6000000>;
				enable-gpios = <&gpio 27 0>;
			};
			BUCKB {
				regulator-name = "VBUCKB";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <3000000>;
				regulator-max-microamp 	= <6000000>;
				enable-gpios = <&gpio 17 0>;
			};
		};
	};

Example 7) DA9215
	pmic: da9215@68 {
		compatible = "dlg,da9215";
		reg = <0x68>;
		interrupts = <3 27>;

		regulators {
			BUCKA {
				regulator-name = "VBUCKA";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <4000000>;
				regulator-max-microamp 	= <7000000>;
				enable-gpios = <&gpio 27 0>;
			};
			BUCKB {
				regulator-name = "VBUCKB";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <4000000>;
				regulator-max-microamp 	= <7000000>;
				enable-gpios = <&gpio 17 0>;
			};
		};
	};

Example 8) DA9225
	pmic: da9225@68 {
		compatible = "dlg,da9225";
		reg = <0x68>;
		interrupts = <3 27>;

		regulators {
			BUCKA {
				regulator-name = "VBUCKA";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <4000000>;
				regulator-max-microamp 	= <7000000>;
				enable-gpios = <&gpio 27 0>;
			};
			BUCKB {
				regulator-name = "VBUCKB";
				regulator-min-microvolt = < 300000>;
				regulator-max-microvolt = <1570000>;
				regulator-min-microamp 	= <4000000>;
				regulator-max-microamp 	= <7000000>;
				enable-gpios = <&gpio 17 0>;
			};
		};
	};


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

title: Dialog Semiconductor DA9121 voltage regulator

maintainers:
  - Adam Ward <Adam.Ward.opensource@diasemi.com>

description: |
  Dialog Semiconductor DA9121 Single-channel 10A double-phase buck converter
  Dialog Semiconductor DA9122 Double-channel  5A single-phase buck converter
  Dialog Semiconductor DA9220 Double-channel  3A single-phase buck converter
  Dialog Semiconductor DA9217 Single-channel  6A double-phase buck converter
  Dialog Semiconductor DA9130 Single-channel 10A double-phase buck converter
  Dialog Semiconductor DA9131 Double-channel  5A single-phase buck converter
  Dialog Semiconductor DA9132 Double-channel  3A single-phase buck converter
  Dialog Semiconductor DA9141 Single-channel 40A   quad-phase buck converter
  Dialog Semiconductor DA9142 Single-channel 20A double-phase buck converter

  Device parameter ranges

  The current limits can be set to at/near double the rated current per channel
  to allow for transient peaks.
  Current limit changes when the output is enabled are not supported, as a
  precaution against undefined behaviour.

  |----------------------------------------------|
  |               | range & reset default value  |
  | Device        |------------------------------|
  |               | microvolt    | microamp      |
  |----------------------------------------------|
  | DA9121/DA9130 | Min:  300000 | Min:  7000000 |
  |               | Max: 1900000 | Max: 20000000 |
  |----------------------------------------------|
  | DA9121/DA9131 | Min:  300000 | Min:  3500000 |
  |               | Max: 1900000 | Max: 10000000 |
  |----------------------------------------------|
  | DA9121/DA9131 | Min:  300000 | Min:  3500000 |
  |               | Max: 1900000 | Max:  6000000 |
  |----------------------------------------------|
  | DA9217        | Min:  300000 | Min:  7000000 |
  |               | Max: 1900000 | Max: 12000000 |
  |----------------------------------------------|
  | DA9141        | Min:  300000 | Min: 26000000 |
  |               | Max: 1300000 | Max: 78000000 |
  |----------------------------------------------|
  | DA9142        | Min:  300000 | Min: 13000000 |
  |               | Max: 1300000 | Max: 39000000 |
  |----------------------------------------------|

properties:
  $nodename:
    pattern: "pmic@[0-9a-f]{1,2}"
  compatible:
    enum:
      - dlg,da9121
      - dlg,da9122
      - dlg,da9220
      - dlg,da9217
      - dlg,da9130
      - dlg,da9131
      - dlg,da9132
      - dlg,da9141
      - dlg,da9142

  reg:
    maxItems: 1
    description: Specifies the I2C slave address.

  interrupts:
    maxItems: 1
    description: IRQ line information.

  dlg,irq-polling-delay-passive-ms:
    minimum: 1000
    maximum: 10000
    description: |
      Specify the polling period, measured in milliseconds, between interrupt status
      update checks. Range 1000-10000 ms.

  regulators:
    type: object
    additionalProperties: false
    description: |
      List of regulators provided by the device

    patternProperties:
      "^buck([1-2])$":
        type: object
        $ref: regulator.yaml#
        description: |
          Properties for a single BUCK regulator

        properties:
          regulator-name:
            pattern: "^BUCK([1-2])$"
            description: |
              BUCK2 present in DA9122, DA9220, DA9131, DA9132 only

          regulator-initial-mode:
            enum: [ 0, 1, 2, 3 ]
            description: Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h

          enable-gpios:
            maxItems: 1
            description: Specify a valid GPIO for platform control of the regulator

          dlg,ripple-cancel:
            $ref: "/schemas/types.yaml#/definitions/uint32"
            enum: [ 0, 1, 2, 3 ]
            description: |
              Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h
              Only present on multi-channel devices (DA9122, DA9220, DA9131, DA9132)

        unevaluatedProperties: false

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;
      pmic@68 {
        compatible = "dlg,da9121";
        reg = <0x68>;

        interrupt-parent = <&gpio6>;
        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;

        dlg,irq-polling-delay-passive-ms = <2000>;

        regulators {
          DA9121_BUCK1: buck1 {
            regulator-name = "BUCK1";
            regulator-min-microvolt = <300000>;
            regulator-max-microvolt = <1900000>;
            regulator-min-microamp = <7000000>;
            regulator-max-microamp = <20000000>;
            regulator-boot-on;
            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
            enable-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
          };
        };
      };
    };

  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;
      pmic@68 {
        compatible = "dlg,da9122";
        reg = <0x68>;

        interrupt-parent = <&gpio6>;
        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;

        dlg,irq-polling-delay-passive-ms = <2000>;

        regulators {
          DA9122_BUCK1: buck1 {
            regulator-name = "BUCK1";
            regulator-min-microvolt = <300000>;
            regulator-max-microvolt = <1900000>;
            regulator-min-microamp = <3500000>;
            regulator-max-microamp = <10000000>;
            regulator-boot-on;
            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
            enable-gpios = <&gpio6 1 GPIO_ACTIVE_HIGH>;
            dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
          };
          DA9122_BUCK2: buck2 {
            regulator-name = "BUCK2";
            regulator-min-microvolt = <300000>;
            regulator-max-microvolt = <1900000>;
            regulator-min-microamp = <3500000>;
            regulator-max-microamp = <10000000>;
            regulator-boot-on;
            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
            enable-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>;
            dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
          };
        };
      };
    };
...


code:
Binding for Fairchild FAN53555 regulators

Required properties:
  - compatible: one of "fcs,fan53555", "fcs,fan53526", "silergy,syr827",
		"silergy,syr828" or "tcs,tcs4525".
  - reg: I2C address

Optional properties:
  - fcs,suspend-voltage-selector: declare which of the two available
		voltage selector registers should be used for the suspend
		voltage. The other one is used for the runtime voltage setting
		Possible values are either <0> or <1>
  - vin-supply: regulator supplying the vin pin

Example:

	regulator@40 {
		compatible = "fcs,fan53555";
		regulator-name = "fan53555";
		regulator-min-microvolt = <1000000>;
		regulator-max-microvolt = <1800000>;
		vin-supply = <&parent_reg>;
		fcs,suspend-voltage-selector = <1>;
	};


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/fixed-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Fixed Voltage regulators

maintainers:
  - Liam Girdwood <lgirdwood@gmail.com>
  - Mark Brown <broonie@kernel.org>

description:
  Any property defined as part of the core regulator binding, defined in
  regulator.yaml, can also be used. However a fixed voltage regulator is
  expected to have the regulator-min-microvolt and regulator-max-microvolt
  to be the same.

allOf:
  - $ref: "regulator.yaml#"
  - if:
      properties:
        compatible:
          contains:
            const: regulator-fixed-clock
    then:
      required:
        - clocks
  - if:
      properties:
        compatible:
          contains:
            const: regulator-fixed-domain
    then:
      required:
        - power-domains
        - required-opps

properties:
  compatible:
    enum:
      - regulator-fixed
      - regulator-fixed-clock
      - regulator-fixed-domain

  regulator-name: true

  gpio:
    description: gpio to use for enable control
    maxItems: 1

  clocks:
    description:
      clock to use for enable control. This binding is only available if
      the compatible is chosen to regulator-fixed-clock. The clock binding
      is mandatory if compatible is chosen to regulator-fixed-clock.
    maxItems: 1

  power-domains:
    deprecated: true
    description:
      Power domain to use for enable control. This binding is only
      available if the compatible is chosen to regulator-fixed-domain.
    maxItems: 1

  required-opps:
    deprecated: true
    description:
      Performance state to use for enable control. This binding is only
      available if the compatible is chosen to regulator-fixed-domain. The
      power-domain binding is mandatory if compatible is chosen to
      regulator-fixed-domain.
    maxItems: 1

  startup-delay-us:
    description: startup time in microseconds

  off-on-delay-us:
    description: off delay time in microseconds

  enable-active-high:
    description:
      Polarity of GPIO is Active high. If this property is missing,
      the default assumed is Active low.
    type: boolean

  gpio-open-drain:
    description:
      GPIO is open drain type. If this property is missing then default
      assumption is false.
    type: boolean

  vin-supply:
    description: Input supply phandle.

required:
  - compatible
  - regulator-name

unevaluatedProperties: false

examples:
  - |
    reg_1v8: regulator-1v8 {
      compatible = "regulator-fixed";
      regulator-name = "1v8";
      regulator-min-microvolt = <1800000>;
      regulator-max-microvolt = <1800000>;
      gpio = <&gpio1 16 0>;
      startup-delay-us = <70000>;
      enable-active-high;
      regulator-boot-on;
      gpio-open-drain;
      vin-supply = <&parent_reg>;
    };
    reg_1v8_clk: regulator-1v8-clk {
      compatible = "regulator-fixed-clock";
      regulator-name = "1v8";
      regulator-min-microvolt = <1800000>;
      regulator-max-microvolt = <1800000>;
      clocks = <&clock1>;
      startup-delay-us = <70000>;
      enable-active-high;
      regulator-boot-on;
      vin-supply = <&parent_reg>;
    };
    reg_1v8_domain: regulator-1v8-domain {
      compatible = "regulator-fixed-domain";
      regulator-name = "1v8";
      regulator-min-microvolt = <1800000>;
      regulator-max-microvolt = <1800000>;
      power-domains = <&domain1>;
      required-opps = <&domain1_state1>;
      startup-delay-us = <70000>;
      enable-active-high;
      regulator-boot-on;
      vin-supply = <&parent_reg>;
    };
...


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

title: ChromeOS EC controlled voltage regulators

maintainers:
  - Pi-Hsun Shih <pihsun@chromium.org>

description:
  Any property defined as part of the core regulator binding, defined in
  regulator.yaml, can also be used.

allOf:
  - $ref: "regulator.yaml#"

properties:
  compatible:
    const: google,cros-ec-regulator

  reg:
    maxItems: 1
    description: Identifier for the voltage regulator to ChromeOS EC.

required:
  - compatible
  - reg

unevaluatedProperties: false

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

        cros_ec: ec@0 {
            compatible = "google,cros-ec-spi";
            reg = <0>;
            #address-cells = <1>;
            #size-cells = <0>;
            interrupts = <99 0>;

            regulator@0 {
                compatible = "google,cros-ec-regulator";
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
                reg = <0>;
            };
        };
    };
...


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/gpio-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: GPIO controlled regulators

maintainers:
  - Liam Girdwood <lgirdwood@gmail.com>
  - Mark Brown <broonie@kernel.org>

description:
  Any property defined as part of the core regulator binding, defined in
  regulator.txt, can also be used.

allOf:
  - $ref: "regulator.yaml#"

properties:
  compatible:
    const: regulator-gpio

  regulator-name: true

  enable-gpios:
    description: GPIO to use to enable/disable the regulator.
      Warning, the GPIO phandle flags are ignored and the GPIO polarity is
      controlled solely by the presence of "enable-active-high" DT property.
      This is due to compatibility with old DTs.
    maxItems: 1

  gpios:
    description: Array of one or more GPIO pins used to select the regulator
      voltage/current listed in "states".
    minItems: 1
    maxItems: 8  # Should be enough...

  gpios-states:
    description: |
      On operating systems, that don't support reading back gpio values in
      output mode (most notably linux), this array provides the state of GPIO
      pins set when requesting them from the gpio controller. Systems, that are
      capable of preserving state when requesting the lines, are free to ignore
      this property.
        0: LOW
        1: HIGH
      Default is LOW if nothing else is specified.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    maxItems: 8
    items:
      enum: [0, 1]
      default: 0

  states:
    description: Selection of available voltages/currents provided by this
      regulator and matching GPIO configurations to achieve them. If there are
      no states in the "states" array, use a fixed regulator instead.
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    maxItems: 8
    items:
      items:
        - description: Voltage in microvolts
        - description: GPIO group state value

  startup-delay-us:
    description: startup time in microseconds

  enable-active-high:
    description: Polarity of "enable-gpio" GPIO is active HIGH. Default is
      active LOW.
    type: boolean

  gpio-open-drain:
    description:
      GPIO is open drain type. If this property is missing then default
      assumption is false.
    type: boolean

  regulator-type:
    description: Specifies what is being regulated.
    $ref: /schemas/types.yaml#/definitions/string
    enum:
      - voltage
      - current
    default: voltage

  vin-supply:
    description: Input supply phandle.

required:
  - compatible
  - regulator-name
  - gpios
  - states

unevaluatedProperties: false

examples:
  - |
    gpio-regulator {
      compatible = "regulator-gpio";

      regulator-name = "mmci-gpio-supply";
      regulator-min-microvolt = <1800000>;
      regulator-max-microvolt = <2600000>;
      regulator-boot-on;

      enable-gpios = <&gpio0 23 0x4>;
      gpios = <&gpio0 24 0x4
        &gpio0 25 0x4>;
      states = <1800000 0x3>,
        <2200000 0x2>,
        <2600000 0x1>,
        <2900000 0x0>;

      startup-delay-us = <100000>;
      enable-active-high;
    };
...


code:
Hisilicon Hi655x Voltage regulators

Note:
The Hi655x regulator control is managed by Hi655x PMIC.
So the node of this regulator must be child node of Hi655x
PMIC node.

The driver uses the regulator core framework, so please also
take the bindings of regulator.txt for reference.

The valid names for regulators are:

LDO2_2V8 LDO7_SDIO LDO10_2V85 LDO13_1V8 LDO14_2V8
LDO15_1V8 LDO17_2V5 LDO19_3V0 LDO21_1V8 LDO22_1V2

Example:
        pmic: pmic@f8000000 {
                compatible = "hisilicon,hi655x-pmic";
		...
		regulators {
			ldo2: LDO2@a21 {
				regulator-name = "LDO2_2V8";
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3200000>;
				regulator-enable-ramp-delay = <120>;
			};
			...
		}
	}


code:
Intersil ISL9305/ISL9305H voltage regulator

Required properties:

- compatible: "isil,isl9305" or "isil,isl9305h"
- reg: I2C slave address, usually 0x68.
- regulators: A node that houses a sub-node for each regulator within the
  device. Each sub-node is identified using the node's name, with valid
  values being "dcd1", "dcd2", "ldo1" and "ldo2". The content of each sub-node
  is defined by the standard binding for regulators; see regulator.txt.
- VINDCD1-supply: A phandle to a regulator node supplying VINDCD1.
  VINDCD2-supply: A phandle to a regulator node supplying VINDCD2.
  VINLDO1-supply: A phandle to a regulator node supplying VINLDO1.
  VINLDO2-supply: A phandle to a regulator node supplying VINLDO2.

Optional properties:
- Per-regulator optional properties are defined in regulator.txt

Example

	pmic: isl9305@68 {
		compatible = "isil,isl9305";
		reg = <0x68>;

		VINDCD1-supply = <&system_power>;
		VINDCD2-supply = <&system_power>;
		VINLDO1-supply = <&system_power>;
		VINLDO2-supply = <&system_power>;

		regulators {
			dcd1 {
			        regulator-name = "VDD_DSP";
				regulator-always-on;
                        };
		};
	};


code:
TI LMU LM363x regulator device tree bindings

LM363x regulator driver supports LM3631 and LM3632.
LM3631 has five regulators and LM3632 supports three regulators.

Required property:
  - compatible: "ti,lm363x-regulator"

Optional properties:
  LM3632 has external enable pins for two LDOs.
  - enable-gpios: Two GPIO specifiers for Vpos and Vneg control pins.
                  The first entry is Vpos, the second is Vneg enable pin.

Child nodes:
  LM3631
  - vboost
  - vcont
  - voref
  - vpos
  - vneg

  LM3632
  - vboost
  - vpos
  - vneg

  Optional properties of a child node:
  Each sub-node should contain the constraints and initialization.
  Please refer to [1].

Examples: Please refer to ti-lmu dt-bindings [2].

lm3631@29 {
	compatible = "ti,lm3631";
	reg = <0x29>;

	regulators {
		compatible = "ti,lm363x-regulator";

		vboost {
			regulator-name = "lcd_boost";
			regulator-min-microvolt = <4500000>;
			regulator-max-microvolt = <6350000>;
			regulator-always-on;
		};

		vcont {
			regulator-name = "lcd_vcont";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <3300000>;
		};

		voref {
			regulator-name = "lcd_voref";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};

		vpos {
			regulator-name = "lcd_vpos";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
			regulator-boot-on;
		};

		vneg {
			regulator-name = "lcd_vneg";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
			regulator-boot-on;
		};
	};
};

lm3632@11 {
	compatible = "ti,lm3632";
	reg = <0x11>;

	regulators {
		compatible = "ti,lm363x-regulator";

		/* GPIO1_16 for Vpos, GPIO1_28 is for Vneg */
		enable-gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>,
				<&gpio1 28 GPIO_ACTIVE_HIGH>;

		vboost {
			regulator-name = "lcd_boost";
			regulator-min-microvolt = <4500000>;
			regulator-max-microvolt = <6400000>;
			regulator-always-on;
		};

		vpos {
			regulator-name = "lcd_vpos";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};

		vneg {
			regulator-name = "lcd_vneg";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};
	};
};

[1] ../regulator/regulator.txt
[2] ../mfd/ti-lmu.txt


code:
Binding for TI/National Semiconductor LP872x Driver

Required properties:
  - compatible: "ti,lp8720" or "ti,lp8725"
  - reg: I2C slave address. 0x7d = LP8720, 0x7a = LP8725

Optional properties:
  - ti,general-config: the value of LP872X_GENERAL_CFG register (u8)
    (LP8720)
    bit[2]: BUCK output voltage control by external DVS pin or register
            1 = external pin, 0 = bit7 of register 08h
    bit[1]: sleep control by external DVS pin or register
            1 = external pin, 0 = bit6 of register 08h
    bit[0]: time step unit(usec). 1 = 25, 0 = 50

    (LP8725)
    bit[7:6]: time step unit(usec). 00 = 32, 01 = 64, 10 = 128, 11 = 256
    bit[4]:   BUCK2 enable control. 1 = enable, 0 = disable
    bit[3]:   BUCK2 output voltage register address. 1 = 0Ah, 0 = 0Bh
    bit[2]:   BUCK1 output voltage control by external DVS pin or register
              1 = register 08h, 0 = DVS
    bit[1]:   LDO sleep control. 1 = sleep mode, 0 = normal
    bit[0]:   BUCK1 enable control, 1 = enable, 0 = disable

    For more details, please see the datasheet.

  - ti,update-config: define it when LP872X_GENERAL_CFG register should be set
  - ti,dvs-gpio: GPIO specifier for external DVS pin control of LP872x devices.
  - ti,dvs-vsel: DVS selector. 0 = SEL_V1, 1 = SEL_V2.
  - ti,dvs-state: initial DVS pin state. 0 = DVS_LOW, 1 = DVS_HIGH.
  - enable-gpios: GPIO specifier for EN pin control of LP872x devices.

  Sub nodes for regulator_init_data
    LP8720 has maximum 6 nodes. (child name: ldo1 ~ 5 and buck)
    LP8725 has maximum 9 nodes. (child name: ldo1 ~ 5, lilo1,2 and buck1,2)
    For more details, please see the following binding document.
    (Documentation/devicetree/bindings/regulator/regulator.txt)

Datasheet
  - LP8720: https://www.ti.com/lit/ds/symlink/lp8720.pdf
  - LP8725: https://www.ti.com/lit/ds/symlink/lp8725.pdf

Example 1) LP8720

lp8720@7d {
	compatible = "ti,lp8720";
	reg = <0x7d>;

	/* external DVS pin used, timestep is 25usec */
	ti,general-config = /bits/ 8 <0x03>;
	ti,update-config;

	/*
	 * The dvs-gpio depends on the processor environment.
	 * For example, following GPIO specifier means GPIO134 in OMAP4.
	 */
	ti,dvs-gpio = <&gpio5 6 0>;
	ti,dvs-vsel = /bits/ 8 <1>;		/* SEL_V2 */
	ti,dvs-state = /bits/ 8 <1>;		/* DVS_HIGH */

	vaf: ldo1 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
	};

	vmmc: ldo2 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
	};

	vcam_io: ldo3 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
	};

	vcam_core: ldo4 {
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <2850000>;
		regulator-boot-on;
	};

	vcam: ldo5 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
	};

	vcc: buck {
		regulator-name = "VBUCK";
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <2300000>;
	};
};

Example 2) LP8725

lp8725@7a {
	compatible = "ti,lp8725";
	reg = <0x7a>;

	/* Enable BUCK1,2, no DVS, normal LDO mode, timestep is 256usec */
	ti,general-config = /bits/ 8 <0xdd>;
	ti,update-config;

	vcam_io: ldo1 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
	};

	vcam_core: ldo2 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
	};

	vcam: ldo3 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
	};

	vcmmb_io: ldo4 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
	};

	vcmmb_core: ldo5 {
		regulator-min-microvolt = <1200000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
	};

	vaux1: lilo1 {
		regulator-name = "VAUX1";
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <3300000>;
	};

	vaux2: lilo2 {
		regulator-name = "VAUX2";
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <3300000>;
	};

	vcc1: buck1 {
		regulator-name = "VBUCK1";
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <3000000>;
		regulator-min-microamp  = <460000>;
		regulator-max-microamp  = <1370000>;
		regulator-boot-on;
	};

	vcc2: buck2 {
		regulator-name = "VBUCK2";
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <3000000>;
		regulator-min-microamp  = <460000>;
		regulator-max-microamp  = <1370000>;
		regulator-boot-on;
	};
};


code:
Linear Technology LTC3589, LTC3589-1, and LTC3589-2 8-output regulators

Required properties:
- compatible: "lltc,ltc3589", "lltc,ltc3589-1" or "lltc,ltc3589-2"
- reg: I2C slave address

Required child node:
- regulators: Contains eight regulator child nodes sw1, sw2, sw3, bb-out,
  ldo1, ldo2, ldo3, and ldo4, specifying the initialization data as
  documented in Documentation/devicetree/bindings/regulator/regulator.txt.

Each regulator is defined using the standard binding for regulators. The
nodes for sw1, sw2, sw3, bb-out, ldo1, and ldo2 additionally need to specify
the resistor values of their external feedback voltage dividers:

Required properties (not on ldo3, ldo4):
- lltc,fb-voltage-divider: An array of two integers containing the resistor
  values R1 and R2 of the feedback voltage divider 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.

Example:

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

		regulators {
			sw1_reg: 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_reg: 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_reg: 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_reg: bb-out {
				regulator-min-microvolt = <3387341>;
				regulator-max-microvolt = <3387341>;
				lltc,fb-voltage-divider = <511000 158000>;
				regulator-boot-on;
				regulator-always-on;
			};

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

			ldo2_reg: 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_reg: ldo3 {
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				regulator-boot-on;
			};

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


code:
Linear Technology LTC3676 8-output regulators

Required properties:
- compatible: "lltc,ltc3676"
- reg: I2C slave address

Required child node:
- regulators: Contains eight regulator child nodes sw1, sw2, sw3, sw4,
  ldo1, ldo2, ldo3, and ldo4, specifying the initialization data as
  documented in Documentation/devicetree/bindings/regulator/regulator.txt.

Each regulator is defined using the standard binding for regulators. The
nodes for sw1, sw2, sw3, sw4, ldo1, ldo2 and ldo4 additionally need to specify
the resistor values of their external feedback voltage dividers:

Required properties (not on ldo3):
- lltc,fb-voltage-divider: An array of two integers containing the resistor
  values R1 and R2 of the feedback voltage divider in ohms.

Regulators sw1, sw2, sw3, 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, and ldo4 have a fixed 0.725 V reference and thus output
0.725 * (1 + R1/R2) V. The ldo3 regulator is fixed to 1.8 V.  The ldo1 standby
regulator can not be disabled and thus should have the regulator-always-on
property set.

Example:

	ltc3676: 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;
			};
		};
	};


code:
Maxim MAX1586 voltage regulator

Required properties:
- compatible: must be "maxim,max1586"
- reg: I2C slave address, usually 0x14
- v3-gain: integer specifying the V3 gain as per datasheet
           (1 + R24/R25 + R24/185.5kOhm)
- any required generic properties defined in regulator.txt

Example:

	i2c_master {
		max1586@14 {
			compatible = "maxim,max1586";
			reg = <0x14>;
			v3-gain = <1000000>;

			regulators {
				vcc_core: v3 {
					regulator-name = "vcc_core";
					regulator-compatible = "Output_V3";
					regulator-min-microvolt = <1000000>;
					regulator-max-microvolt = <1705000>;
					regulator-always-on;
				};
			};
		};
	};


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/max77650-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Regulator driver for MAX77650 PMIC from Maxim Integrated.

maintainers:
  - Bartosz Golaszewski <bgolaszewski@baylibre.com>

description: |
  This module is part of the MAX77650 MFD device. For more details
  see Documentation/devicetree/bindings/mfd/max77650.yaml.

  The regulator controller is represented as a sub-node of the PMIC node
  on the device tree.

  The device has a single LDO regulator and a SIMO buck-boost regulator with
  three independent power rails.

properties:
  compatible:
    const: maxim,max77650-regulator

patternProperties:
  "^regulator-(ldo|sbb[0-2])$":
    $ref: "regulator.yaml#"
    unevaluatedProperties: false

required:
  - compatible
additionalProperties: false

...


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/max8660.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Maxim MAX8660 voltage regulator

maintainers:
  - Daniel Mack <zonque@gmail.com>

properties:
  $nodename:
    pattern: "pmic@[0-9a-f]{1,2}"
  compatible:
    enum:
      - maxim,max8660
      - maxim,max8661

  reg:
    maxItems: 1

  regulators:
    type: object

    patternProperties:
      "^regulator-.+$":
        $ref: "regulator.yaml#"
        unevaluatedProperties: false

    additionalProperties: false

additionalProperties: false

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

      pmic@34 {
        compatible = "maxim,max8660";
        reg = <0x34>;

        regulators {
          regulator-V3 {
            regulator-min-microvolt = <725000>;
            regulator-max-microvolt = <1800000>;
          };

          regulator-V4 {
            regulator-min-microvolt = <725000>;
            regulator-max-microvolt = <1800000>;
          };

          regulator-V5 {
            regulator-min-microvolt = <1700000>;
            regulator-max-microvolt = <2000000>;
          };

          regulator-V6 {
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <3300000>;
          };

          regulator-V7 {
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <3300000>;
          };
        };
      };
    };
...


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/max8893.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Regulator driver for MAX8893 PMIC from Maxim Integrated.

maintainers:
  - Sergey Larin <cerg2010cerg2010@mail.ru>

description: |
  The device has 5 LDO regulators and a single BUCK regulator.
  Programming is done through I2C bus.

properties:
  compatible:
    const: maxim,max8893

  reg:
    maxItems: 1

  regulators:
    type: object

    patternProperties:
      "^(ldo[1-5]|buck)$":
        $ref: "regulator.yaml#"

    additionalProperties: false

additionalProperties: false

required:
  - compatible
  - reg
  - regulators

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

            pmic@3e {
                    compatible = "maxim,max8893";
                    reg = <0x3e>;

                    regulators {
                            /* Front camera - s5k6aafx, back - m5mo */
                            /* Numbers used to indicate the sequence */
                            front_1_back_1: buck {
                                    regulator-name = "cam_isp_core_1v2";
                                    regulator-min-microvolt = <1200000>;
                                    regulator-max-microvolt = <1200000>;
                            };

                            front_4_back_5: ldo1 {
                                    regulator-name = "vt_io_1v8,cam_isp_1v8";
                                    regulator-min-microvolt = <1800000>;
                                    regulator-max-microvolt = <1800000>;
                            };

                            front_3_back_4: ldo2 {
                                    regulator-name = "vt_core_1v5";
                                    regulator-min-microvolt = <1500000>;
                                    regulator-max-microvolt = <1500000>;
                            };

                            front_5_back_6: ldo3 {
                                    regulator-name = "vt_cam_1v8,vt_sensor_io_1v8";
                                    regulator-min-microvolt = <1800000>;
                                    regulator-max-microvolt = <1800000>;
                            };

                            ldo4 {
                                    /* not used */
                            };

                            back_7: ldo5 {
                                    regulator-name = "cam_sensor_io_1v8";
                                    regulator-min-microvolt = <1800000>;
                                    regulator-max-microvolt = <1800000>;
                            };
                    };
            };
    };
...


code:
MAX8907 regulator

Required properties:
- compatible: "maxim,max8907"
- reg: I2C slave address
- interrupts: The interrupt output of the controller
- mbatt-supply: The input supply for MBATT, BBAT, SDBY, VRTC.
- in-v1-supply: The input supply for SD1.
- in-v2-supply: The input supply for SD2.
- in-v3-supply: The input supply for SD3.
- in1-supply: The input supply for LDO1.
...
- in20-supply: The input supply for LDO20.
- regulators: A node that houses a sub-node for each regulator within the
  device. Each sub-node is identified using the node's name (or the deprecated
  regulator-compatible property if present), with valid values listed below.
  The content of each sub-node is defined by the standard binding for
  regulators; see regulator.txt.

Optional properties:
- maxim,system-power-controller: Boolean property indicating that the PMIC
  controls the overall system power.

The valid names for regulators are:

  sd1, sd2, sd3, ldo1, ldo2, ldo3, ldo4, ldo5, ldo6, ldo7, ldo8, ldo9, ldo10,
  ldo11, ldo12, ldo13, ldo14, ldo15, ldo16, ldo17, ldo18, ldo19, ldo20, out5v,
  out33v, bbat, sdby, vrtc.

Example:

		max8907@3c {
			compatible = "maxim,max8907";
			reg = <0x3c>;
			interrupts = <0 86 0x4>;

			maxim,system-power-controller;

			mbatt-supply = <&some_reg>;
			in-v1-supply = <&mbatt_reg>;
			...
			in1-supply = <&mbatt_reg>;
			...

			regulators {
				mbatt_reg: mbatt {
					regulator-name = "vbat_pmu";
					regulator-min-microvolt = <5000000>;
					regulator-max-microvolt = <5000000>;
					regulator-always-on;
				};

				sd1 {
					regulator-name = "nvvdd_sv1,vdd_cpu_pmu";
					regulator-min-microvolt = <1000000>;
					regulator-max-microvolt = <1000000>;
					regulator-always-on;
				};

				sd2 {
					regulator-name = "nvvdd_sv2,vdd_core";
					regulator-min-microvolt = <1200000>;
					regulator-max-microvolt = <1200000>;
					regulator-always-on;
				};
...
			};
		};
	};


code:
Max8925 Voltage regulators

Required nodes:
-nodes:
  - SDV1 for SDV SDV1
  - SDV2 for SDV SDV2
  - SDV3 for SDV SDV3
  - LDO1 for LDO LDO1
  - LDO2 for LDO LDO2
  - LDO3 for LDO LDO3
  - LDO4 for LDO LDO4
  - LDO5 for LDO LDO5
  - LDO6 for LDO LDO6
  - LDO7 for LDO LDO7
  - LDO8 for LDO LDO8
  - LDO9 for LDO LDO9
  - LDO10 for LDO LDO10
  - LDO11 for LDO LDO11
  - LDO12 for LDO LDO12
  - LDO13 for LDO LDO13
  - LDO14 for LDO LDO14
  - LDO15 for LDO LDO15
  - LDO16 for LDO LDO16
  - LDO17 for LDO LDO17
  - LDO18 for LDO LDO18
  - LDO19 for LDO LDO19
  - LDO20 for LDO LDO20

Optional properties:
- Any optional property defined in bindings/regulator/regulator.txt

Example:

	SDV1 {
		regulator-min-microvolt = <637500>;
		regulator-max-microvolt = <1425000>;
		regulator-boot-on;
		regulator-always-on;
	};


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

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

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

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

  See also Documentation/devicetree/bindings/mfd/maxim,max14577.yaml for
  additional information and example.

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

  CHARGER:
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description: |
      Current regulator.

    properties:
      regulator-min-microvolt: false
      regulator-max-microvolt: false

  SAFEOUT:
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description: |
      Safeout LDO regulator (fixed voltage).

    properties:
      regulator-min-microamp: false
      regulator-max-microamp: false
      regulator-min-microvolt:
        const: 4900000
      regulator-max-microvolt:
        const: 4900000

patternProperties:
  "^LDO[12]$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description: |
      Current regulator.

    properties:
      regulator-min-microamp: false
      regulator-max-microamp: false
      regulator-min-microvolt:
        minimum: 800000
      regulator-max-microvolt:
        maximum: 3950000

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: maxim,max14577-regulator
    then:
      properties:
        LDO1: false
        LDO2: false

additionalProperties: false


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

title: Maxim Integrated MAX20086-MAX20089 Camera Power Protector

maintainers:
  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>

description: |
  The MAX20086-MAX20089 are dual/quad camera power protectors, designed to
  deliver power over coax for radar and camera modules. They support
  software-configurable output switching and monitoring. The output voltage and
  current limit are fixed by the hardware design.

properties:
  compatible:
    enum:
      - maxim,max20086
      - maxim,max20087
      - maxim,max20088
      - maxim,max20089

  reg:
    maxItems: 1

  enable-gpios:
    maxItems: 1
    description: GPIO connected to the EN pin, active high

  in-supply:
    description: Input supply for the camera outputs (IN pin, 3.0V to 15.0V)

  vdd-supply:
    description: Input supply for the device (VDD pin, 3.0V to 5.5V)

  regulators:
    type: object

    patternProperties:
      "^OUT[1-4]$":
        type: object
        $ref: regulator.yaml#

    additionalProperties: false

required:
  - compatible
  - reg
  - in-supply
  - vdd-supply
  - regulators

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - maxim,max20088
              - maxim,max20089
    then:
      properties:
        regulators:
          properties:
            OUT3: false
            OUT4: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

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

        regulator@28 {
            compatible = "maxim,max20087";
            reg = <0x28>;

            in-supply = <&reg_12v0>;
            vdd-supply = <&reg_3v3>;

            enable-gpios = <&gpio 108 GPIO_ACTIVE_HIGH>;

            regulators {
                OUT1 {
                    regulator-name = "VOUT1";
                };
                OUT2 {
                    regulator-name = "VOUT2";
                };
                OUT3 {
                    regulator-name = "VOUT3";
                };
                OUT4 {
                    regulator-name = "VOUT4";
                };
            };
        };
    };
...


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

title: Maxim MAX77686 Power Management IC regulators

maintainers:
  - Chanwoo Choi <cw00.choi@samsung.com>
  - Krzysztof Kozlowski <krzk@kernel.org>

description: |
  This is a part of device tree bindings for Maxim MAX77686 Power Management
  Integrated Circuit (PMIC).

  The Maxim MAX77686 provides high-efficiency Buck and 26 Low-DropOut (LDO)
  regulators.

  See also Documentation/devicetree/bindings/mfd/maxim,max77686.yaml for
  additional information and example.

patternProperties:
  # 26 LDOs
  "^LDO([1-9]|1[0-9]|2[3-6])$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description: |
      Properties for single LDO regulator.
      Regulators which can be turned off during system suspend:
        LDO2, LDO6-8, LDO10-12, LDO14-16

    required:
      - regulator-name

  # LDO20-LDO22 with maxim,ena-gpios
  "^LDO2[0-2]$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description: |
      Properties for single LDO regulator.

    properties:
      maxim,ena-gpios:
        maxItems: 1
        description: |
          GPIO specifier to enable the GPIO control (on/off) for regulator.

    required:
      - regulator-name

  # 9 bucks
  "^BUCK[1-7]$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description: |
      Properties for single BUCK regulator.
      Regulators which can be turned off during system suspend:
      BUCK[1-4]

    required:
      - regulator-name

  "^BUCK[89]$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description: |
      Properties for single BUCK regulator.

    properties:
      maxim,ena-gpios:
        maxItems: 1
        description: |
          GPIO specifier to enable the GPIO control (on/off) for regulator.

    required:
      - regulator-name

additionalProperties: false


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

title: Maxim MAX77693 MicroUSB and Companion Power Management IC regulators

maintainers:
  - Chanwoo Choi <cw00.choi@samsung.com>
  - Krzysztof Kozlowski <krzk@kernel.org>

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

  See also Documentation/devicetree/bindings/mfd/maxim,max77693.yaml for
  additional information and example.

properties:
  CHARGER:
    type: object
    $ref: regulator.yaml#
    additionalProperties: false
    description: |
      Current regulator.

    properties:
      regulator-name: true
      regulator-always-on: true
      regulator-boot-on: true
      regulator-min-microamp:
        minimum: 60000
      regulator-max-microamp:
        maximum: 2580000

    required:
      - regulator-name

patternProperties:
  "^ESAFEOUT[12]$":
    type: object
    $ref: regulator.yaml#
    additionalProperties: false
    description: |
      Safeout LDO regulator.

    properties:
      regulator-name: true
      regulator-always-on: true
      regulator-boot-on: true
      regulator-min-microvolt:
        minimum: 3300000
      regulator-max-microvolt:
        maximum: 4950000

    required:
      - regulator-name

additionalProperties: false


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

title: Maxim MAX77802 Power Management IC regulators

maintainers:
  - Javier Martinez Canillas <javier@dowhile0.org>
  - Krzysztof Kozlowski <krzk@kernel.org>

description: |
  This is a part of device tree bindings for Maxim MAX77802 Power Management
  Integrated Circuit (PMIC).

  The Maxim MAX77686 provides 10 high-efficiency Buck and 32 Low-DropOut (LDO)
  regulators.

  See also Documentation/devicetree/bindings/mfd/maxim,max77802.yaml for
  additional information and example.

  Certain regulators support "regulator-initial-mode" and "regulator-mode".
  The valid modes list is defined in the dt-bindings/regulator/maxim,max77802.h
  and their meaning is::
    1 - Normal regulator voltage output mode.
    3 - Low Power which reduces the quiescent current down to only 1uA

  The standard "regulator-mode" property can only be used for regulators that
  support changing their mode to Low Power Mode during suspend. These
  regulators are:: bucks 2-4 and LDOs 1-35. Also, it only takes effect if the
  regulator has been enabled for the given suspend state using
  "regulator-on-in-suspend" and has not been disabled for that state using
  "regulator-off-in-suspend".

patternProperties:
  # LDO1, LDO3, LDO20, LDO21
  "^LDO([13]|2[01])$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description:
      LDOs supporting the regulator-initial-mode property and changing their
      mode during normal operation.

  # LDO2, LDO4-15, LDO17-19, LDO23-30, LDO32-35
  "^LDO([24-9]|1[0-5789]|2[3-9]|3[02345])$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description:
      LDOs supporting the regulator-mode property (changing mode to Low Power
      Mode during suspend).

    properties:
      regulator-initial-mode: false

  # buck2-4
  "^BUCK[2-4]$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false
    description:
      bucks supporting the regulator-mode property (changing mode to Low Power
      Mode during suspend).

    properties:
      regulator-initial-mode: false

  # buck1, buck5-10
  "^BUCK([15-9]|10)$":
    type: object
    $ref: regulator.yaml#
    unevaluatedProperties: false

    properties:
      regulator-initial-mode: false

    patternProperties:
      "^regulator-state-(standby|mem|disk)$":
        type: object
        additionalProperties: true
        properties:
          regulator-mode: false

additionalProperties: false


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

title: Maxim Integrated MAX77826 PMIC

maintainers:
  - Iskren Chernev <iskren.chernev@gmail.com>

properties:
  $nodename:
    pattern: "pmic@[0-9a-f]{1,2}"
  compatible:
    enum:
      - maxim,max77826

  reg:
    maxItems: 1

  regulators:
    type: object
    $ref: regulator.yaml#
    description: |
      list of regulators provided by this controller, must be named
      after their hardware counterparts LDO[1-15], BUCK and BUCKBOOST

    patternProperties:
      "^LDO([1-9]|1[0-5])$":
        type: object
        $ref: regulator.yaml#

      "^BUCK|BUCKBOOST$":
        type: object
        $ref: regulator.yaml#

    additionalProperties: false

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

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

        pmic@69 {
            compatible = "maxim,max77826";
            reg = <0x69>;

            regulators {
                LDO2 {
                    regulator-min-microvolt = <650000>;
                    regulator-max-microvolt = <3587500>;
                };
            };
       };
     };
...


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

title: Maxim MAX77843 MicroUSB and Companion Power Management IC regulators

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

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

  See also Documentation/devicetree/bindings/mfd/maxim,max77843.yaml for
  additional information and example.

properties:
  compatible:
    const: maxim,max77843-regulator

  CHARGER:
    type: object
    $ref: regulator.yaml#
    additionalProperties: false
    description: |
      Current regulator.

    properties:
      regulator-name: true
      regulator-always-on: true
      regulator-boot-on: true
      regulator-min-microamp:
        minimum: 100000
      regulator-max-microamp:
        maximum: 3150000

    required:
      - regulator-name

patternProperties:
  "^SAFEOUT[12]$":
    type: object
    $ref: regulator.yaml#
    additionalProperties: false
    description: |
      Safeout LDO regulator.

    properties:
      regulator-name: true
      regulator-always-on: true
      regulator-boot-on: true
      regulator-min-microvolt:
        minimum: 3300000
      regulator-max-microvolt:
        maximum: 4950000

    required:
      - regulator-name

required:
  - compatible

additionalProperties: false


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

title: Maxim MAX8952 voltage regulator

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

allOf:
  - $ref: regulator.yaml#

properties:
  compatible:
    const: maxim,max8952

  max8952,default-mode:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2, 3]
    description: |
      index of default DVS voltage

  max8952,dvs-mode-microvolt:
    minItems: 4
    maxItems: 4
    items:
      minimum: 770000
      maximum: 1400000
    description: |
      Array of 4 integer values defining DVS voltages in microvolts. All values
      must be from range <770000, 1400000>.

  max8952,en-gpio:
    maxItems: 1
    description: |
      GPIO used to control enable status of regulator

  max8952,ramp-speed:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2, 3, 4, 5, 6, 7]
    default: 0
    description: |
      Voltage ramp speed, values map to:
       - 0: 32mV/us
       - 1: 16mV/us
       - 2: 8mV/us
       - 3: 4mV/us
       - 4: 2mV/us
       - 5: 1mV/us
       - 6: 0.5mV/us
       - 7: 0.25mV/us
      Defaults to 32mV/us if not specified.

  max8952,sync-freq:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1, 2]
    default: 0
    description: |
      Sync frequency, values map to:
       - 0: 26 MHz
       - 1: 13 MHz
       - 2: 19.2 MHz
      Defaults to 26 MHz if not specified.

  max8952,vid-gpios:
    minItems: 2
    maxItems: 2
    description: |
      Array of two GPIO pins used for DVS voltage selection

  reg:
    maxItems: 1

required:
  - compatible
  - max8952,dvs-mode-microvolt
  - reg

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

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

        pmic@60 {
            compatible = "maxim,max8952";
            reg = <0x60>;

            max8952,vid-gpios = <&gpx0 3 GPIO_ACTIVE_HIGH>,
                                <&gpx0 4 GPIO_ACTIVE_HIGH>;
            max8952,default-mode = <0>;
            max8952,dvs-mode-microvolt = <1250000>, <1200000>,
                                         <1050000>, <950000>;
            max8952,sync-freq = <0>;
            max8952,ramp-speed = <0>;

            regulator-name = "VARM_1.2V_C210";
            regulator-min-microvolt = <770000>;
            regulator-max-microvolt = <1400000>;
            regulator-always-on;
            regulator-boot-on;
        };
    };


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

title: Maxim MAX8973/MAX77621 voltage regulator

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

allOf:
  - $ref: regulator.yaml#

properties:
  compatible:
    enum:
      - maxim,max8973
      - maxim,max77621

  junction-warn-millicelsius:
    description: |
      Junction warning temperature threshold in millicelsius. If die
      temperature crosses this level then device generates the warning
      interrupts.
      Please note that thermal functionality is only supported on MAX77621. The
      supported threshold warning temperature for MAX77621 are 120 degC and 140
      degC.

  maxim,dvs-gpio:
    maxItems: 1
    description: |
      GPIO which is connected to DVS pin of device.

  maxim,dvs-default-state:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [0, 1]
    description: |
      Default state of GPIO during initialisation.
      1 for HIGH and 0 for LOW.

  maxim,externally-enable:
    type: boolean
    description: |
      Externally control the regulator output enable/disable.

  maxim,enable-gpio:
    maxItems: 1
    description: |
      GPIO for enable control. If the valid GPIO is provided then externally
      enable control will be considered.

  maxim,enable-remote-sense:
    type: boolean
    description: Enable remote sense.

  maxim,enable-falling-slew-rate:
    type: boolean
    description: Enable falling slew rate.

  maxim,enable-active-discharge:
    type: boolean
    description: Eable active discharge.

  maxim,enable-frequency-shift:
    type: boolean
    description: Enable 9% frequency shift.

  maxim,enable-bias-control:
    type: boolean
    description: |
      Enable bias control which can reduce the startup delay to 20us from 220us.

  maxim,enable-etr:
    type: boolean
    description: Enable Enhanced Transient Response.

  maxim,enable-high-etr-sensitivity:
    type: boolean
    description: |
      Enhanced transient response circuit is enabled and set for high
      sensitivity. If this property is available then etr will be enable
      default.
      Enhanced transient response (ETR) will affect the configuration of CKADV.

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

required:
  - compatible
  - reg

unevaluatedProperties: false

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

        regulator@1b {
            compatible = "maxim,max8973";
            reg = <0x1b>;

            regulator-min-microvolt = <935000>;
            regulator-max-microvolt = <1200000>;
            regulator-boot-on;
            regulator-always-on;
        };
    };

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

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

        regulator@1b {
            compatible = "maxim,max77621";
            reg = <0x1b>;
            interrupts = <1 IRQ_TYPE_LEVEL_LOW>;

            regulator-always-on;
            regulator-boot-on;
            regulator-min-microvolt = <800000>;
            regulator-max-microvolt = <1231250>;
            regulator-name = "PPVAR_CPU";
            regulator-ramp-delay = <12500>;
            maxim,dvs-default-state = <1>;
            maxim,enable-active-discharge;
            maxim,enable-bias-control;
            maxim,enable-etr;
            maxim,enable-gpio = <&pmic 5 GPIO_ACTIVE_HIGH>;
            maxim,externally-enable;
        };
    };


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

title: Maxim MAX8997 Power Management IC

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

description: |
  The Maxim MAX8997 is a Power Management IC which includes voltage and current
  regulators, charger controller with fuel gauge, RTC, clock outputs, haptic
  motor driver, flash LED driver and Micro-USB Interface Controller.

  The binding here is not complete and describes only regulator and charger
  controller parts.

properties:
  compatible:
    const: maxim,max8997-pmic

  charger-supply:
    description: |
      Regulator node for charging current.

  interrupts:
    items:
      - description: irq1 interrupt
      - description: alert interrupt

  max8997,pmic-buck1-dvs-voltage:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 8
    description: |
      A set of 8 voltage values in micro-volt (uV) units for buck1 when
      changing voltage using GPIO DVS.
      If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
      specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
      specify at least one voltage level (which would be a safe operating
      voltage).

  max8997,pmic-buck2-dvs-voltage:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 8
    description: |
      A set of 8 voltage values in micro-volt (uV) units for buck2 when
      changing voltage using GPIO DVS.
      If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
      specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
      specify at least one voltage level (which would be a safe operating
      voltage).

  max8997,pmic-buck5-dvs-voltage:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 8
    description: |
      A set of 8 voltage values in micro-volt (uV) units for buck5 when
      changing voltage using GPIO DVS.
      If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
      specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
      specify at least one voltage level (which would be a safe operating
      voltage).

  max8997,pmic-buck1-uses-gpio-dvs:
    type: boolean
    description: |
      buck1 can be controlled by GPIO DVS.

  max8997,pmic-buck2-uses-gpio-dvs:
    type: boolean
    description: |
      buck2 can be controlled by GPIO DVS.

  max8997,pmic-buck5-uses-gpio-dvs:
    type: boolean
    description: |
      buck5 can be controlled by GPIO DVS.

  max8997,pmic-buck125-default-dvs-idx:
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 0
    maximum: 7
    default: 0
    description: |
      Default voltage setting selected from the possible 8 options selectable
      by the dvs gpios. The value of this property should be between 0 and 7.
      If not specified or if out of range, the default value of this property
      is set to 0.

  max8997,pmic-buck125-dvs-gpios:
    minItems: 3
    maxItems: 3
    description: |
      GPIO specifiers for three host gpio's used for DVS.

  max8997,pmic-ignore-gpiodvs-side-effect:
    type: boolean
    description: |
      When GPIO-DVS mode is used for multiple bucks, changing the voltage value
      of one of the bucks may affect that of another buck, which is the side
      effect of the change (set_voltage).  Use this property to ignore such
      side effects and change the voltage.

  reg:
    maxItems: 1

  regulators:
    type: object
    additionalProperties: false
    description:
      List of child nodes that specify the regulators.

    patternProperties:
      # 1-18 and 21 LDOs
      "^LDO([1-9]|1[0-8]|21)$":
        type: object
        $ref: regulator.yaml#
        description:
          Properties for single LDO regulator.

        properties:
          regulator-name: true

        required:
          - regulator-name

        unevaluatedProperties: false

      # 7 bucks
      "^BUCK[1-7]$":
        type: object
        $ref: regulator.yaml#
        description:
          Properties for single BUCK regulator.

        properties:
          regulator-name: true

        required:
          - regulator-name

        unevaluatedProperties: false

      "^EN32KHZ_[AC]P$":
        type: object
        $ref: regulator.yaml#
        description:
          32768 Hz clock output (modelled as regulator)

        properties:
          regulator-name: true
          regulator-always-on: true
          regulator-boot-on: true

        required:
          - regulator-name

        additionalProperties: false

    properties:
      CHARGER:
        type: object
        $ref: regulator.yaml#
        description: main battery charger current control

        properties:
          regulator-name: true

        required:
          - regulator-name

        unevaluatedProperties: false

      CHARGER_CV:
        type: object
        $ref: regulator.yaml#
        description: main battery charger voltage control

        properties:
          regulator-name: true

        required:
          - regulator-name

        unevaluatedProperties: false

      CHARGER_TOPOFF:
        type: object
        $ref: regulator.yaml#
        description: end of charge current threshold level

        properties:
          regulator-name: true

        required:
          - regulator-name

        unevaluatedProperties: false

      ENVICHG:
        type: object
        $ref: regulator.yaml#
        description: |
          Battery Charging Current Monitor Output. This is a fixed voltage type
          regulator
        properties:
          regulator-name: true

        required:
          - regulator-name

        unevaluatedProperties: false

      ESAFEOUT1:
        type: object
        $ref: regulator.yaml#
        description: LDO19

        properties:
          regulator-name: true

        required:
          - regulator-name

        unevaluatedProperties: false

      ESAFEOUT2:
        type: object
        $ref: regulator.yaml#
        description: LDO20

        properties:
          regulator-name: true

        required:
          - regulator-name

        unevaluatedProperties: false

required:
  - compatible
  - max8997,pmic-buck1-dvs-voltage
  - max8997,pmic-buck2-dvs-voltage
  - max8997,pmic-buck5-dvs-voltage
  - reg
  - regulators

dependencies:
  max8997,pmic-buck1-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
  max8997,pmic-buck2-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
  max8997,pmic-buck5-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]

additionalProperties: false

if:
  anyOf:
    - required:
        - max8997,pmic-buck1-uses-gpio-dvs
    - required:
        - max8997,pmic-buck2-uses-gpio-dvs
    - required:
        - max8997,pmic-buck5-uses-gpio-dvs
then:
  properties:
    max8997,pmic-buck1-dvs-voltage:
      minItems: 8
      maxItems: 8
    max8997,pmic-buck2-dvs-voltage:
      minItems: 8
      maxItems: 8
    max8997,pmic-buck5-dvs-voltage:
      minItems: 8
      maxItems: 8

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

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

        pmic@66 {
            compatible = "maxim,max8997-pmic";
            reg = <0x66>;

            interrupts-extended = <&gpx0 7 IRQ_TYPE_LEVEL_LOW>,
                                  <&gpx2 3 IRQ_TYPE_EDGE_FALLING>;

            max8997,pmic-buck1-uses-gpio-dvs;
            max8997,pmic-buck2-uses-gpio-dvs;
            max8997,pmic-buck5-uses-gpio-dvs;

            max8997,pmic-ignore-gpiodvs-side-effect;
            max8997,pmic-buck125-default-dvs-idx = <0>;

            max8997,pmic-buck125-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
                                             <&gpx0 6 GPIO_ACTIVE_HIGH>,
                                             <&gpl0 0 GPIO_ACTIVE_HIGH>;

            max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
                                             <1250000>, <1200000>,
                                             <1150000>, <1100000>,
                                             <1000000>, <950000>;

            max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
                                             <950000>,  <900000>,
                                             <1100000>, <1000000>,
                                             <950000>,  <900000>;

            max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
                                             <1200000>, <1200000>,
                                             <1200000>, <1200000>,
                                             <1200000>, <1200000>;

            pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>;
            pinctrl-names = "default";

            charger-supply = <&charger_reg>;

            regulators {
                LDO1 {
                    regulator-name = "VADC_3.3V_C210";
                    regulator-min-microvolt = <3300000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-always-on;
                };

                LDO2 {
                    regulator-name = "VALIVE_1.1V_C210";
                    regulator-min-microvolt = <1100000>;
                    regulator-max-microvolt = <1100000>;
                    regulator-always-on;
                };

                BUCK1 {
                    regulator-name = "VARM_1.2V_C210";
                    regulator-min-microvolt = <65000>;
                    regulator-max-microvolt = <2225000>;
                    regulator-always-on;
                };

                // ...

                BUCK7 {
                    regulator-name = "VCC_SUB_2.0V";
                    regulator-min-microvolt = <2000000>;
                    regulator-max-microvolt = <2000000>;
                    regulator-always-on;
                };

                ESAFEOUT1 {
                    regulator-name = "SAFEOUT1";
                };

                ESAFEOUT2 {
                    regulator-name = "SAFEOUT2";
                    regulator-boot-on;
                };

                EN32KHZ_AP {
                    regulator-name = "EN32KHZ_AP";
                    regulator-always-on;
                };

                EN32KHZ_CP {
                    regulator-name = "EN32KHZ_CP";
                    regulator-always-on;
                };

                CHARGER {
                    regulator-name = "CHARGER";
                    regulator-min-microamp = <200000>;
                    regulator-max-microamp = <950000>;
                };

                CHARGER_CV {
                    regulator-name = "CHARGER_CV";
                    regulator-min-microvolt = <4200000>;
                    regulator-max-microvolt = <4200000>;
                    regulator-always-on;
                };

                CHARGER_TOPOFF {
                    regulator-name = "CHARGER_TOPOFF";
                    regulator-min-microamp = <200000>;
                    regulator-max-microamp = <200000>;
                    regulator-always-on;
                };
            };
        };
    };

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

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

        pmic@66 {
            compatible = "maxim,max8997-pmic";
            reg = <0x66>;

            interrupt-parent = <&gpx0>;
            interrupts = <4 IRQ_TYPE_LEVEL_LOW>,
                         <3 IRQ_TYPE_EDGE_FALLING>;
            pinctrl-names = "default";
            pinctrl-0 = <&max8997_irq>;

            max8997,pmic-buck1-dvs-voltage = <1350000>;
            max8997,pmic-buck2-dvs-voltage = <1100000>;
            max8997,pmic-buck5-dvs-voltage = <1200000>;

            regulators {
                LDO1 {
                    regulator-name = "VDD_ABB_3.3V";
                    regulator-min-microvolt = <3300000>;
                    regulator-max-microvolt = <3300000>;
                };

                // ...

                BUCK1 {
                    regulator-name = "VDD_ARM_1.2V";
                    regulator-min-microvolt = <950000>;
                    regulator-max-microvolt = <1350000>;
                    regulator-always-on;
                    regulator-boot-on;
                };

                // ...

                EN32KHZ_AP {
                    regulator-name = "EN32KHZ_AP";
                    regulator-always-on;
                };
            };
        };
    };