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

title: Bindings for the Generic PWM Regulator

maintainers:
  - Brian Norris <briannorris@chromium.org>
  - Lee Jones <lee@kernel.org>
  - Alexandre Courbot <acourbot@nvidia.com>

description: |
  Currently supports 2 modes of operation:

  Voltage Table:
    When in this mode, a voltage table (See below) of predefined voltage <=>
    duty-cycle values must be provided via DT. Limitations are that the
    regulator can only operate at the voltages supplied in the table.
    Intermediary duty-cycle values which would normally allow finer grained
    voltage selection are ignored and rendered useless.  Although more control
    is given to the user if the assumptions made in continuous-voltage mode do
    not reign true.

  Continuous Voltage:
    This mode uses the regulator's maximum and minimum supplied voltages
    specified in the regulator-{min,max}-microvolt properties to calculate
    appropriate duty-cycle values.  This allows for a much more fine grained
    solution when compared with voltage-table mode above.  This solution does
    make an assumption that a %50 duty-cycle value will cause the regulator
    voltage to run at half way between the supplied max_uV and min_uV values.

  If voltage-table is provided, then the device will be used in Voltage Table
  Mode.  If no voltage-table is provided, then the device will be used in
  Continuous Voltage Mode.

allOf:
  - $ref: regulator.yaml#

properties:
  compatible:
    const: pwm-regulator

  pwms:
    maxItems: 1

  voltage-table:
    description: Voltage and Duty-Cycle table.
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    items:
      items:
        - description: voltage in microvolts (uV)
        - description: duty-cycle in percent (%)

  enable-gpios:
    description: Regulator enable GPIO
    maxItems: 1

   # Optional properties for Continuous mode:
  pwm-dutycycle-unit:
    description:
      Integer value encoding the duty cycle unit. If not
        defined, <100> is assumed, meaning that
        pwm-dutycycle-range contains values expressed in
        percent.
    default: 100

  pwm-dutycycle-range:
    description:
      Should contain 2 entries. The first entry is encoding
        the dutycycle for regulator-min-microvolt and the
        second one the dutycycle for regulator-max-microvolt.
        Duty cycle values are expressed in pwm-dutycycle-unit.
        If not defined, <0 100> is assumed.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    items:
      - description: the dutycycle for regulator-min-microvolt
      - description: the dutycycle for regulator-max-microvolt
    default: [ 0 100 ]

required:
  - compatible
  - pwms

unevaluatedProperties: false

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

    // Continuous Voltage With Enable GPIO Example:
    regulator {
        compatible = "pwm-regulator";
        pwms = <&pwm1 0 8448 0>;
        enable-gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
        regulator-min-microvolt = <1016000>;
        regulator-max-microvolt = <1114000>;
        regulator-name = "vdd_logic";
        /* unit == per-mille */
        pwm-dutycycle-unit = <1000>;
        /*
        * Inverted PWM logic, and the duty cycle range is limited
        * to 30%-70%.
        */
        pwm-dutycycle-range = <700 300>; /* */
    };

  - |
    // Voltage Table Example:
    regulator {
        compatible = "pwm-regulator";
        pwms = <&pwm1 0 8448 0>;
        regulator-min-microvolt = <1016000>;
        regulator-max-microvolt = <1114000>;
        regulator-name = "vdd_logic";

                /* Voltage Duty-Cycle */
        voltage-table = <1114000 0>,
            <1095000 10>,
            <1076000 20>,
            <1056000 30>,
            <1036000 40>,
            <1016000 50>;
    };
...
