aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2008-07-01 14:18:27 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-07-03 13:25:07 +0100
commit43bda1a6d218744382547a2f8be3240d1c3a151b (patch)
tree7a765e743a6e2cfde5db08dfe073a412e42df873
parent3b73125af69f93972625f4b655675f42ca4274eb (diff)
[ARM] 5141/1: PWM: pwm_request() should return an PTR_ERR() instead of NULL.
Make the return of pwm_request() be more informative than just being NULL on error by using PTR_ERR() to respond with an approriate error. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mach-pxa/pwm.c16
-rw-r--r--drivers/video/backlight/pwm_bl.c4
2 files changed, 13 insertions, 7 deletions
diff --git a/arch/arm/mach-pxa/pwm.c b/arch/arm/mach-pxa/pwm.c
index 7c86dd1d108..ce28cd9fed1 100644
--- a/arch/arm/mach-pxa/pwm.c
+++ b/arch/arm/mach-pxa/pwm.c
@@ -119,17 +119,23 @@ struct pwm_device *pwm_request(int pwm_id, const char *label)
mutex_lock(&pwm_lock);
list_for_each_entry(pwm, &pwm_list, node) {
- if (pwm->pwm_id == pwm_id && pwm->use_count == 0) {
- pwm->use_count++;
- pwm->label = label;
+ if (pwm->pwm_id == pwm_id) {
found = 1;
break;
}
}
- mutex_unlock(&pwm_lock);
+ if (found) {
+ if (pwm->use_count == 0) {
+ pwm->use_count++;
+ pwm->label = label;
+ } else
+ pwm = ERR_PTR(-EBUSY);
+ } else
+ pwm = ERR_PTR(-ENOENT);
- return (found) ? pwm : NULL;
+ mutex_unlock(&pwm_lock);
+ return pwm;
}
EXPORT_SYMBOL(pwm_request);
diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
index 8346dfc01cf..6338d0e2fe0 100644
--- a/drivers/video/backlight/pwm_bl.c
+++ b/drivers/video/backlight/pwm_bl.c
@@ -87,9 +87,9 @@ static int pwm_backlight_probe(struct platform_device *pdev)
pb->notify = data->notify;
pb->pwm = pwm_request(data->pwm_id, "backlight");
- if (pb->pwm == NULL) {
+ if (IS_ERR(pb->pwm)) {
dev_err(&pdev->dev, "unable to request PWM for backlight\n");
- ret = -EBUSY;
+ ret = PTR_ERR(pb->pwm);
goto err_pwm;
}