All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Lee Jones <lee.jones@linaro.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/6] dt-bindings: regulator: pwm: Convert to json-schema
Date: Tue, 21 Dec 2021 14:49:45 -0400	[thread overview]
Message-ID: <YcIhyWEdv1yRj46G@robh.at.kernel.org> (raw)
In-Reply-To: <20211217170507.2843568-2-thierry.reding@gmail.com>

On Fri, Dec 17, 2021 at 06:05:03PM +0100, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
> 
> Convert the generic PWM regulator bindings from the free-form text
> format to json-schema.
> 
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
>  .../bindings/regulator/pwm-regulator.txt      |  92 -------------
>  .../bindings/regulator/pwm-regulator.yaml     | 121 ++++++++++++++++++
>  2 files changed, 121 insertions(+), 92 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/regulator/pwm-regulator.txt
>  create mode 100644 Documentation/devicetree/bindings/regulator/pwm-regulator.yaml
> 

> diff --git a/Documentation/devicetree/bindings/regulator/pwm-regulator.yaml b/Documentation/devicetree/bindings/regulator/pwm-regulator.yaml
> new file mode 100644
> index 000000000000..d87e8110989d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/regulator/pwm-regulator.yaml
> @@ -0,0 +1,121 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/regulator/pwm-regulator.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Generic PWM Regulator
> +
> +maintainers:
> +  - Rob Herring <robh+dt@kernel.org>
> +  - Mark Brown <broonie@kernel.org>
> +
> +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.
> +
> +  NB: To be clear, 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.
> +
> +  Any property defined as part of the core regulator binding can also be used. (See:
> +  ../regulator/regulator.txt)
> +
> +properties:
> +  compatible:
> +    const: pwm-regulator
> +
> +  pwms:
> +    $ref: "/schemas/types.yaml#/definitions/phandle-array"

Already has a type. Just need 'maxItems: 1'

> +    description: phandle and PWM specifier (see ../pwm/pwm.txt)
> +
> +  # Only required for Voltage Table Mode:
> +  voltage-table:
> +    description: Voltage and Duty-Cycle table consisting of 2 cells. The first cell is the voltage
> +      in microvolts (uV) and the second cell is duty-cycle in percent (%).
> +    $ref: "/schemas/types.yaml#/definitions/uint32-matrix"

items:
  maxItems: 2
  minItems: 2


> +
> +  # 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.
> +    $ref: "/schemas/types.yaml#/definitions/uint32"
> +
> +  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"

maxItems: 2

> +
> +  # Optional properties:
> +  enable-gpios:
> +    description: GPIO to use to enable/disable the regulator

maxItems: 1

> +
> +  # from regulator.yaml
> +  regulator-enable-ramp-delay: true
> +  regulator-max-microvolt: true
> +  regulator-min-microvolt: true
> +  regulator-name: true
> +  regulator-ramp-delay: true
> +  regulator-settling-time-us: true

Given the other properties still missing, probably better to drop all 
these and use unevaluatedProperties.

> +  vin-supply: true
> +
> +allOf:
> +  - $ref: "regulator.yaml"
> +
> +additionalProperties: false
> +
> +required:
> +  - compatible
> +  - pwms
> +
> +examples:
> +  # Continuous Voltage With Enable GPIO:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    pwm_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:
> +  - |
> +    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>;
> +    };
> -- 
> 2.34.1
> 
> 

  parent reply	other threads:[~2021-12-21 18:49 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17 17:05 [PATCH 1/6] dt-bindings: regulator: palmas: Convert to json-schema Thierry Reding
2021-12-17 17:05 ` [PATCH 2/6] dt-bindings: regulator: pwm: " Thierry Reding
2021-12-18 18:08   ` Rob Herring
2021-12-21 18:49   ` Rob Herring [this message]
2021-12-17 17:05 ` [PATCH 3/6] dt-bindings: regulator: tps51632: " Thierry Reding
2021-12-21 18:51   ` Rob Herring
2021-12-17 17:05 ` [PATCH 4/6] dt-bindings: regulator: tps62360: " Thierry Reding
2021-12-21 18:52   ` Rob Herring
2021-12-17 17:05 ` [PATCH 5/6] dt-bindings: regulator: tps6586x: " Thierry Reding
2021-12-18 18:08   ` Rob Herring
2021-12-21 18:59   ` Rob Herring
2021-12-17 17:05 ` [PATCH 6/6] dt-bindings: regulator: tps65090: " Thierry Reding
2021-12-21 19:00   ` Rob Herring
2021-12-18 18:08 ` [PATCH 1/6] dt-bindings: regulator: palmas: " Rob Herring
2021-12-21 14:15 ` Rob Herring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YcIhyWEdv1yRj46G@robh.at.kernel.org \
    --to=robh@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=thierry.reding@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.