diff options
Diffstat (limited to 'drivers/pwm')
-rw-r--r-- | drivers/pwm/core.c | 2 | ||||
-rw-r--r-- | drivers/pwm/pwm-bfin.c | 3 | ||||
-rw-r--r-- | drivers/pwm/pwm-pxa.c | 3 | ||||
-rw-r--r-- | drivers/pwm/pwm-samsung.c | 3 | ||||
-rw-r--r-- | drivers/pwm/pwm-tiecap.c | 2 | ||||
-rw-r--r-- | drivers/pwm/pwm-tiehrpwm.c | 2 |
6 files changed, 3 insertions, 12 deletions
diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index 92b1782d0d8..f5acdaa5270 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c | |||
@@ -371,7 +371,7 @@ EXPORT_SYMBOL_GPL(pwm_free); | |||
371 | */ | 371 | */ |
372 | int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns) | 372 | int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns) |
373 | { | 373 | { |
374 | if (!pwm || period_ns == 0 || duty_ns > period_ns) | 374 | if (!pwm || duty_ns < 0 || period_ns <= 0 || duty_ns > period_ns) |
375 | return -EINVAL; | 375 | return -EINVAL; |
376 | 376 | ||
377 | return pwm->chip->ops->config(pwm->chip, pwm, duty_ns, period_ns); | 377 | return pwm->chip->ops->config(pwm->chip, pwm, duty_ns, period_ns); |
diff --git a/drivers/pwm/pwm-bfin.c b/drivers/pwm/pwm-bfin.c index d53c4e7941e..5da8e185e83 100644 --- a/drivers/pwm/pwm-bfin.c +++ b/drivers/pwm/pwm-bfin.c | |||
@@ -69,9 +69,6 @@ static int bfin_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
69 | unsigned long period, duty; | 69 | unsigned long period, duty; |
70 | unsigned long long val; | 70 | unsigned long long val; |
71 | 71 | ||
72 | if (duty_ns < 0 || duty_ns > period_ns) | ||
73 | return -EINVAL; | ||
74 | |||
75 | val = (unsigned long long)get_sclk() * period_ns; | 72 | val = (unsigned long long)get_sclk() * period_ns; |
76 | do_div(val, NSEC_PER_SEC); | 73 | do_div(val, NSEC_PER_SEC); |
77 | period = val; | 74 | period = val; |
diff --git a/drivers/pwm/pwm-pxa.c b/drivers/pwm/pwm-pxa.c index bd5867a1c70..260c3a88564 100644 --- a/drivers/pwm/pwm-pxa.c +++ b/drivers/pwm/pwm-pxa.c | |||
@@ -70,9 +70,6 @@ static int pxa_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
70 | unsigned long offset; | 70 | unsigned long offset; |
71 | int rc; | 71 | int rc; |
72 | 72 | ||
73 | if (period_ns == 0 || duty_ns > period_ns) | ||
74 | return -EINVAL; | ||
75 | |||
76 | offset = pwm->hwpwm ? 0x10 : 0; | 73 | offset = pwm->hwpwm ? 0x10 : 0; |
77 | 74 | ||
78 | c = clk_get_rate(pc->clk); | 75 | c = clk_get_rate(pc->clk); |
diff --git a/drivers/pwm/pwm-samsung.c b/drivers/pwm/pwm-samsung.c index e5187c0ade9..023a3bee76e 100644 --- a/drivers/pwm/pwm-samsung.c +++ b/drivers/pwm/pwm-samsung.c | |||
@@ -126,9 +126,6 @@ static int s3c_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
126 | if (period_ns > NS_IN_HZ || duty_ns > NS_IN_HZ) | 126 | if (period_ns > NS_IN_HZ || duty_ns > NS_IN_HZ) |
127 | return -ERANGE; | 127 | return -ERANGE; |
128 | 128 | ||
129 | if (duty_ns > period_ns) | ||
130 | return -EINVAL; | ||
131 | |||
132 | if (period_ns == s3c->period_ns && | 129 | if (period_ns == s3c->period_ns && |
133 | duty_ns == s3c->duty_ns) | 130 | duty_ns == s3c->duty_ns) |
134 | return 0; | 131 | return 0; |
diff --git a/drivers/pwm/pwm-tiecap.c b/drivers/pwm/pwm-tiecap.c index 081471fbb09..d6d4cf05565 100644 --- a/drivers/pwm/pwm-tiecap.c +++ b/drivers/pwm/pwm-tiecap.c | |||
@@ -60,7 +60,7 @@ static int ecap_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
60 | unsigned long period_cycles, duty_cycles; | 60 | unsigned long period_cycles, duty_cycles; |
61 | unsigned int reg_val; | 61 | unsigned int reg_val; |
62 | 62 | ||
63 | if (period_ns < 0 || duty_ns < 0 || period_ns > NSEC_PER_SEC) | 63 | if (period_ns > NSEC_PER_SEC) |
64 | return -ERANGE; | 64 | return -ERANGE; |
65 | 65 | ||
66 | c = pc->clk_rate; | 66 | c = pc->clk_rate; |
diff --git a/drivers/pwm/pwm-tiehrpwm.c b/drivers/pwm/pwm-tiehrpwm.c index caf00feadc6..d3c1dff0a0d 100644 --- a/drivers/pwm/pwm-tiehrpwm.c +++ b/drivers/pwm/pwm-tiehrpwm.c | |||
@@ -221,7 +221,7 @@ static int ehrpwm_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, | |||
221 | unsigned short ps_divval, tb_divval; | 221 | unsigned short ps_divval, tb_divval; |
222 | int i, cmp_reg; | 222 | int i, cmp_reg; |
223 | 223 | ||
224 | if (period_ns < 0 || duty_ns < 0 || period_ns > NSEC_PER_SEC) | 224 | if (period_ns > NSEC_PER_SEC) |
225 | return -ERANGE; | 225 | return -ERANGE; |
226 | 226 | ||
227 | c = pc->clk_rate; | 227 | c = pc->clk_rate; |