| Specifying PWM information for devices | |
| ====================================== | |
| 1) PWM user nodes | |
| ----------------- | |
| PWM users should specify a list of PWM devices that they want to use | |
| with a property containing a 'pwm-list': | |
| pwm-list ::= <single-pwm> [pwm-list] | |
| single-pwm ::= <pwm-phandle> <pwm-specifier> | |
| pwm-phandle : phandle to PWM controller node | |
| pwm-specifier : array of #pwm-cells specifying the given PWM | |
| (controller specific) | |
| PWM properties should be named "pwms". The exact meaning of each pwms | |
| property must be documented in the device tree binding for each device. | |
| An optional property "pwm-names" may contain a list of strings to label | |
| each of the PWM devices listed in the "pwms" property. If no "pwm-names" | |
| property is given, the name of the user node will be used as fallback. | |
| Drivers for devices that use more than a single PWM device can use the | |
| "pwm-names" property to map the name of the PWM device requested by the | |
| pwm_get() call to an index into the list given by the "pwms" property. | |
| The following example could be used to describe a PWM-based backlight | |
| device: | |
| pwm: pwm { | |
| #pwm-cells = <2>; | |
| }; | |
| [...] | |
| bl: backlight { | |
| pwms = <&pwm 0 5000000>; | |
| pwm-names = "backlight"; | |
| }; | |
| Note that in the example above, specifying the "pwm-names" is redundant | |
| because the name "backlight" would be used as fallback anyway. | |
| pwm-specifier typically encodes the chip-relative PWM number and the PWM | |
| period in nanoseconds. | |
| Optionally, the pwm-specifier can encode a number of flags (defined in | |
| <dt-bindings/pwm/pwm.h>) in a third cell: | |
| - PWM_POLARITY_INVERTED: invert the PWM signal polarity | |
| Example with optional PWM specifier for inverse polarity | |
| bl: backlight { | |
| pwms = <&pwm 0 5000000 PWM_POLARITY_INVERTED>; | |
| pwm-names = "backlight"; | |
| }; | |
| 2) PWM controller nodes | |
| ----------------------- | |
| PWM controller nodes must specify the number of cells used for the | |
| specifier using the '#pwm-cells' property. | |
| An example PWM controller might look like this: | |
| pwm: pwm@7000a000 { | |
| compatible = "nvidia,tegra20-pwm"; | |
| reg = <0x7000a000 0x100>; | |
| #pwm-cells = <2>; | |
| }; |