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
>
>
next prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox