From 43bda1a6d218744382547a2f8be3240d1c3a151b Mon Sep 17 00:00:00 2001
From: Ben Dooks <ben-linux@fluff.org>
Date: Tue, 1 Jul 2008 14:18:27 +0100
Subject: [PATCH] [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>
---
 arch/arm/mach-pxa/pwm.c          | 16 +++++++++++-----
 drivers/video/backlight/pwm_bl.c |  4 ++--
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-pxa/pwm.c b/arch/arm/mach-pxa/pwm.c
index 7c86dd1d108f..ce28cd9fed16 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 8346dfc01cf6..6338d0e2fe07 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;
 	}
 
-- 
GitLab