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