Thierry Reding | 7299ab7 | 2011-12-14 11:10:32 +0100 | [diff] [blame] | 1 | Specifying PWM information for devices |
| 2 | ====================================== |
| 3 | |
| 4 | 1) PWM user nodes |
| 5 | ----------------- |
| 6 | |
| 7 | PWM users should specify a list of PWM devices that they want to use |
| 8 | with a property containing a 'pwm-list': |
| 9 | |
| 10 | pwm-list ::= <single-pwm> [pwm-list] |
| 11 | single-pwm ::= <pwm-phandle> <pwm-specifier> |
| 12 | pwm-phandle : phandle to PWM controller node |
| 13 | pwm-specifier : array of #pwm-cells specifying the given PWM |
| 14 | (controller specific) |
| 15 | |
| 16 | PWM properties should be named "pwms". The exact meaning of each pwms |
| 17 | property must be documented in the device tree binding for each device. |
| 18 | An optional property "pwm-names" may contain a list of strings to label |
| 19 | each of the PWM devices listed in the "pwms" property. If no "pwm-names" |
| 20 | property is given, the name of the user node will be used as fallback. |
| 21 | |
| 22 | Drivers for devices that use more than a single PWM device can use the |
| 23 | "pwm-names" property to map the name of the PWM device requested by the |
| 24 | pwm_get() call to an index into the list given by the "pwms" property. |
| 25 | |
| 26 | The following example could be used to describe a PWM-based backlight |
| 27 | device: |
| 28 | |
| 29 | pwm: pwm { |
| 30 | #pwm-cells = <2>; |
| 31 | }; |
| 32 | |
| 33 | [...] |
| 34 | |
| 35 | bl: backlight { |
| 36 | pwms = <&pwm 0 5000000>; |
| 37 | pwm-names = "backlight"; |
| 38 | }; |
| 39 | |
| 40 | pwm-specifier typically encodes the chip-relative PWM number and the PWM |
| 41 | period in nanoseconds. Note that in the example above, specifying the |
| 42 | "pwm-names" is redundant because the name "backlight" would be used as |
| 43 | fallback anyway. |
| 44 | |
| 45 | 2) PWM controller nodes |
| 46 | ----------------------- |
| 47 | |
| 48 | PWM controller nodes must specify the number of cells used for the |
| 49 | specifier using the '#pwm-cells' property. |
| 50 | |
| 51 | An example PWM controller might look like this: |
| 52 | |
| 53 | pwm: pwm@7000a000 { |
| 54 | compatible = "nvidia,tegra20-pwm"; |
| 55 | reg = <0x7000a000 0x100>; |
| 56 | #pwm-cells = <2>; |
| 57 | }; |