summaryrefslogtreecommitdiffstats
path: root/drivers/pwm/pwm-lpss.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pwm/pwm-lpss.c')
-rw-r--r--drivers/pwm/pwm-lpss.c7
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
119static int pwm_lpss_enable(struct pwm_chip *chip, struct pwm_device *pwm) 124static 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)
125static void pwm_lpss_disable(struct pwm_chip *chip, struct pwm_device *pwm) 131static 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
130static const struct pwm_ops pwm_lpss_ops = { 137static const struct pwm_ops pwm_lpss_ops = {