127 lines
3.9 KiB
YAML
127 lines
3.9 KiB
YAML
|
# 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>;
|
||
|
};
|
||
|
...
|