diff options
Diffstat (limited to 'drivers/pwm/pwm-lpss.c')
-rw-r--r-- | drivers/pwm/pwm-lpss.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/pwm/pwm-lpss.c b/drivers/pwm/pwm-lpss.c index df03b50f20dd..25044104003b 100644 --- a/drivers/pwm/pwm-lpss.c +++ b/drivers/pwm/pwm-lpss.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <linux/pm_runtime.h> | ||
19 | 20 | ||
20 | #include "pwm-lpss.h" | 21 | #include "pwm-lpss.h" |
21 | 22 | ||
@@ -105,6 +106,8 @@ static int pwm_lpss_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
105 | duty_ns = 1; | 106 | duty_ns = 1; |
106 | on_time_div = 255 - (255 * duty_ns / period_ns); | 107 | on_time_div = 255 - (255 * duty_ns / period_ns); |
107 | 108 | ||
109 | pm_runtime_get_sync(chip->dev); | ||
110 | |||
108 | ctrl = pwm_lpss_read(pwm); | 111 | ctrl = pwm_lpss_read(pwm); |
109 | ctrl &= ~(PWM_BASE_UNIT_MASK | PWM_ON_TIME_DIV_MASK); | 112 | ctrl &= ~(PWM_BASE_UNIT_MASK | PWM_ON_TIME_DIV_MASK); |
110 | ctrl |= (u16) base_unit << PWM_BASE_UNIT_SHIFT; | 113 | ctrl |= (u16) base_unit << PWM_BASE_UNIT_SHIFT; |
@@ -113,11 +116,14 @@ static int pwm_lpss_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
113 | ctrl |= PWM_SW_UPDATE; | 116 | ctrl |= PWM_SW_UPDATE; |
114 | pwm_lpss_write(pwm, ctrl); | 117 | pwm_lpss_write(pwm, ctrl); |
115 | 118 | ||
119 | pm_runtime_put(chip->dev); | ||
120 | |||
116 | return 0; | 121 | return 0; |
117 | } | 122 | } |
118 | 123 | ||
119 | static int pwm_lpss_enable(struct pwm_chip *chip, struct pwm_device *pwm) | 124 | static int pwm_lpss_enable(struct pwm_chip *chip, struct pwm_device *pwm) |
120 | { | 125 | { |
126 | pm_runtime_get_sync(chip->dev); | ||
121 | pwm_lpss_write(pwm, pwm_lpss_read(pwm) | PWM_ENABLE); | 127 | pwm_lpss_write(pwm, pwm_lpss_read(pwm) | PWM_ENABLE); |
122 | return 0; | 128 | return 0; |
123 | } | 129 | } |
@@ -125,6 +131,7 @@ static int pwm_lpss_enable(struct pwm_chip *chip, struct pwm_device *pwm) | |||
125 | static void pwm_lpss_disable(struct pwm_chip *chip, struct pwm_device *pwm) | 131 | static void pwm_lpss_disable(struct pwm_chip *chip, struct pwm_device *pwm) |
126 | { | 132 | { |
127 | pwm_lpss_write(pwm, pwm_lpss_read(pwm) & ~PWM_ENABLE); | 133 | pwm_lpss_write(pwm, pwm_lpss_read(pwm) & ~PWM_ENABLE); |
134 | pm_runtime_put(chip->dev); | ||
128 | } | 135 | } |
129 | 136 | ||
130 | static const struct pwm_ops pwm_lpss_ops = { | 137 | static const struct pwm_ops pwm_lpss_ops = { |