# Copyright 2023 EPAM Systems
# SPDX-License-Identifier: Apache-2.0

description: |
  GPIO-controlled voltage of regulators

  Example of dts node:
    vccq_sd0: regulator-vccq-sd0 {
      compatible = "regulator-gpio";

      regulator-name = "SD0 VccQ";
      regulator-min-microvolt = <1800000>;
      regulator-max-microvolt = <3300000>;

      enable-gpios = <&gpio5 3 GPIO_ACTIVE_HIGH>;

      gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>, <&gpio5 2 GPIO_ACTIVE_HIGH>;
      states = <3300000 2>, <2700000 1>, <1800000 0>;

      regulator-boot-on;
    };

  In the above example, three GPIO pins are used for controlling the regulator:
    * two of them for controlling voltage;
    * third for enabling/disabling the regulator.

include:
  - name: base.yaml
  - name: regulator.yaml
    property-allowlist:
      - regulator-name
      - regulator-init-microvolt
      - regulator-min-microvolt
      - regulator-max-microvolt
      - regulator-always-on
      - regulator-boot-on
      - startup-delay-us

compatible: "regulator-gpio"

properties:
  regulator-name:
    required: true

  gpios:
    type: phandle-array
    required: true
    description: |
      GPIO to use to switch voltage.

  states:
    type: array
    description: |
      Selection of available voltages 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. First value in an array
      item is voltage in microvolts and the second is GPIO group state value.

  enable-gpios:
    type: phandle-array
    description: |
      GPIO to use to enable/disable the regulator.

      Unlike the gpio property in the Linux bindings this array must provide
      the GPIO polarity and open-drain status in the phandle selector. The
      Linux enable-active-high and gpio-open-drain properties are not valid
      for Zephyr devicetree files. Moreover, the driver isn't capable of
      working with more than one GPIO and this property does not have a state
      array. The driver simply sets or clears the appropriate GPIO bit when
      it is requested to enable or disable the regulator.

      Example:
        enable-gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>;
