| From 790fc89523e52a39e0d2d296d88cad59b1ca8580 Mon Sep 17 00:00:00 2001 |
| From: Alexandre Belloni <alexandre.belloni@free-electrons.com> |
| Date: Mon, 19 May 2014 22:42:32 +0200 |
| Subject: pwm: add period and polarity to struct pwm_lookup |
| |
| Add period and polarity members to struct pwm_lookup so that platforms |
| using the lookup table can be treated the same way as those using the |
| device tree. |
| |
| Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> |
| Signed-off-by: Thierry Reding <thierry.reding@gmail.com> |
| (cherry picked from commit 3796ce1d4d4b330a75005c5eda105603ce9d4071) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/pwm/core.c | 8 +++++++- |
| include/linux/pwm.h | 2 ++ |
| 2 files changed, 9 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c |
| index a80471399c20..4b66bf09ee55 100644 |
| --- a/drivers/pwm/core.c |
| +++ b/drivers/pwm/core.c |
| @@ -661,10 +661,16 @@ struct pwm_device *pwm_get(struct device *dev, const char *con_id) |
| } |
| } |
| |
| + mutex_unlock(&pwm_lookup_lock); |
| + |
| if (chip) |
| pwm = pwm_request_from_chip(chip, index, con_id ?: dev_id); |
| + if (IS_ERR(pwm)) |
| + return pwm; |
| + |
| + pwm_set_period(pwm, p->period); |
| + pwm_set_polarity(pwm, p->polarity); |
| |
| - mutex_unlock(&pwm_lookup_lock); |
| |
| return pwm; |
| } |
| diff --git a/include/linux/pwm.h b/include/linux/pwm.h |
| index f0feafd184a0..29ca4572629d 100644 |
| --- a/include/linux/pwm.h |
| +++ b/include/linux/pwm.h |
| @@ -274,6 +274,8 @@ struct pwm_lookup { |
| unsigned int index; |
| const char *dev_id; |
| const char *con_id; |
| + unsigned int period; |
| + enum pwm_polarity polarity; |
| }; |
| |
| #define PWM_LOOKUP(_provider, _index, _dev_id, _con_id) \ |
| -- |
| 2.1.2 |
| |