Commit a9369fd3 authored by Rob Herring's avatar Rob Herring Committed by Mark Brown

regulator: dt-bindings: Convert pwm-regulator to DT schema

Convert the pwm-regulator binding to DT schema format.
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20220606184310.1057797-1-robh@kernel.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 5f7202d8
Bindings for the Generic PWM Regulator
======================================
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.
Required properties:
--------------------
- compatible: Should be "pwm-regulator"
- pwms: PWM specification (See: ../pwm/pwm.txt)
Only required for Voltage Table Mode:
- voltage-table: Voltage and Duty-Cycle table consisting of 2 cells
First cell is voltage in microvolts (uV)
Second cell is duty-cycle in percent (%)
Optional properties for Continuous mode:
- pwm-dutycycle-unit: Integer value encoding the duty cycle unit. If not
defined, <100> is assumed, meaning that
pwm-dutycycle-range contains values expressed in
percent.
- pwm-dutycycle-range: 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.
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.
Optional properties:
--------------------
- enable-gpios: GPIO to use to enable/disable the regulator
Any property defined as part of the core regulator binding can also be used.
(See: ../regulator/regulator.txt)
Continuous Voltage With Enable GPIO Example:
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 Example:
pwm_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>;
};
# 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.jones@linaro.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>;
};
...
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment