Loading Documentation/pwm.txt +28 −18 Original line number Diff line number Diff line ====================================== Pulse Width Modulation (PWM) interface ====================================== This provides an overview about the Linux PWM interface Loading @@ -16,7 +18,7 @@ Users of the legacy PWM API use unique IDs to refer to PWM devices. Instead of referring to a PWM device via its unique ID, board setup code should instead register a static mapping that can be used to match PWM consumers to providers, as given in the following example: consumers to providers, as given in the following example:: static struct pwm_lookup board_pwm_lookup[] = { PWM_LOOKUP("tegra-pwm", 0, "pwm-backlight", NULL, Loading @@ -40,7 +42,7 @@ New users should use the pwm_get() function and pass to it the consumer device or a consumer name. pwm_put() is used to free the PWM device. Managed variants of these functions, devm_pwm_get() and devm_pwm_put(), also exist. After being requested, a PWM has to be configured using: After being requested, a PWM has to be configured using:: int pwm_apply_state(struct pwm_device *pwm, struct pwm_state *state); Loading Loading @@ -72,11 +74,14 @@ interface is provided to use the PWMs from userspace. It is exposed at pwmchipN, where N is the base of the PWM chip. Inside the directory you will find: npwm - The number of PWM channels this chip supports (read-only). npwm The number of PWM channels this chip supports (read-only). export - Exports a PWM channel for use with sysfs (write-only). export Exports a PWM channel for use with sysfs (write-only). unexport - Unexports a PWM channel from sysfs (write-only). unexport Unexports a PWM channel from sysfs (write-only). The PWM channels are numbered using a per-chip index from 0 to npwm-1. Loading @@ -84,21 +89,26 @@ When a PWM channel is exported a pwmX directory will be created in the pwmchipN directory it is associated with, where X is the number of the channel that was exported. The following properties will then be available: period - The total period of the PWM signal (read/write). period The total period of the PWM signal (read/write). Value is in nanoseconds and is the sum of the active and inactive time of the PWM. duty_cycle - The active time of the PWM signal (read/write). duty_cycle The active time of the PWM signal (read/write). Value is in nanoseconds and must be less than the period. polarity - Changes the polarity of the PWM signal (read/write). polarity Changes the polarity of the PWM signal (read/write). Writes to this property only work if the PWM chip supports changing the polarity. The polarity can only be changed if the PWM is not enabled. Value is the string "normal" or "inversed". enable - Enable/disable the PWM signal (read/write). 0 - disabled 1 - enabled enable Enable/disable the PWM signal (read/write). - 0 - disabled - 1 - enabled Implementing a PWM driver ------------------------- Loading drivers/pwm/core.c +3 −1 Original line number Diff line number Diff line Loading @@ -678,7 +678,9 @@ struct pwm_device *of_pwm_get(struct device_node *np, const char *con_id) pc = of_node_to_pwmchip(args.np); if (IS_ERR(pc)) { if (PTR_ERR(pc) != -EPROBE_DEFER) pr_err("%s(): PWM chip not found\n", __func__); pwm = ERR_CAST(pc); goto put; } Loading Loading
Documentation/pwm.txt +28 −18 Original line number Diff line number Diff line ====================================== Pulse Width Modulation (PWM) interface ====================================== This provides an overview about the Linux PWM interface Loading @@ -16,7 +18,7 @@ Users of the legacy PWM API use unique IDs to refer to PWM devices. Instead of referring to a PWM device via its unique ID, board setup code should instead register a static mapping that can be used to match PWM consumers to providers, as given in the following example: consumers to providers, as given in the following example:: static struct pwm_lookup board_pwm_lookup[] = { PWM_LOOKUP("tegra-pwm", 0, "pwm-backlight", NULL, Loading @@ -40,7 +42,7 @@ New users should use the pwm_get() function and pass to it the consumer device or a consumer name. pwm_put() is used to free the PWM device. Managed variants of these functions, devm_pwm_get() and devm_pwm_put(), also exist. After being requested, a PWM has to be configured using: After being requested, a PWM has to be configured using:: int pwm_apply_state(struct pwm_device *pwm, struct pwm_state *state); Loading Loading @@ -72,11 +74,14 @@ interface is provided to use the PWMs from userspace. It is exposed at pwmchipN, where N is the base of the PWM chip. Inside the directory you will find: npwm - The number of PWM channels this chip supports (read-only). npwm The number of PWM channels this chip supports (read-only). export - Exports a PWM channel for use with sysfs (write-only). export Exports a PWM channel for use with sysfs (write-only). unexport - Unexports a PWM channel from sysfs (write-only). unexport Unexports a PWM channel from sysfs (write-only). The PWM channels are numbered using a per-chip index from 0 to npwm-1. Loading @@ -84,21 +89,26 @@ When a PWM channel is exported a pwmX directory will be created in the pwmchipN directory it is associated with, where X is the number of the channel that was exported. The following properties will then be available: period - The total period of the PWM signal (read/write). period The total period of the PWM signal (read/write). Value is in nanoseconds and is the sum of the active and inactive time of the PWM. duty_cycle - The active time of the PWM signal (read/write). duty_cycle The active time of the PWM signal (read/write). Value is in nanoseconds and must be less than the period. polarity - Changes the polarity of the PWM signal (read/write). polarity Changes the polarity of the PWM signal (read/write). Writes to this property only work if the PWM chip supports changing the polarity. The polarity can only be changed if the PWM is not enabled. Value is the string "normal" or "inversed". enable - Enable/disable the PWM signal (read/write). 0 - disabled 1 - enabled enable Enable/disable the PWM signal (read/write). - 0 - disabled - 1 - enabled Implementing a PWM driver ------------------------- Loading
drivers/pwm/core.c +3 −1 Original line number Diff line number Diff line Loading @@ -678,7 +678,9 @@ struct pwm_device *of_pwm_get(struct device_node *np, const char *con_id) pc = of_node_to_pwmchip(args.np); if (IS_ERR(pc)) { if (PTR_ERR(pc) != -EPROBE_DEFER) pr_err("%s(): PWM chip not found\n", __func__); pwm = ERR_CAST(pc); goto put; } Loading