| # 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>; |
| }; |
| ... |