Skip to contentSkip to conversation

leds: wm8350: Convert to devm_regulator_get()

PATCH In review Axel Lin 2 participants 2 messages Aug 10, 2012

Subsystems (2)
lore
Share & tools
lore

Axel Lin

author
#0 lore raw

PATCH 1/1 leds: wm8350: Convert to devm_regulator_get()

---
 drivers/leds/leds-wm8350.c |   29 +++++++----------------------
 1 file changed, 7 insertions(+), 22 deletions(-)
drivers/leds/leds-wm8350.c +7 -22
index 918d4ba..f5d9ac3 100644
@@ -201,7 +201,7 @@ static int wm8350_led_probe(struct platform_device *pdev)
 	struct regulator *isink, *dcdc;
 	struct wm8350_led *led;
 	struct wm8350_led_platform_data *pdata = pdev->dev.platform_data;
-	int ret, i;
+	int i;
 
 	if (pdata == NULL) {
 		dev_err(&pdev->dev, "no platform data\n");
@@ -214,24 +214,21 @@ static int wm8350_led_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
-	isink = regulator_get(&pdev->dev, "led_isink");
+	isink = devm_regulator_get(&pdev->dev, "led_isink");
 	if (IS_ERR(isink)) {
 		printk(KERN_ERR "%s: can't get ISINK\n", __func__);
 		return PTR_ERR(isink);
 	}
 
-	dcdc = regulator_get(&pdev->dev, "led_vcc");
+	dcdc = devm_regulator_get(&pdev->dev, "led_vcc");
 	if (IS_ERR(dcdc)) {
 		printk(KERN_ERR "%s: can't get DCDC\n", __func__);
-		ret = PTR_ERR(dcdc);
-		goto err_isink;
+		return PTR_ERR(dcdc);
 	}
 
 	led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL);
-	if (led == NULL) {
-		ret = -ENOMEM;
-		goto err_dcdc;
-	}
+	if (led == NULL)
+		return -ENOMEM;
 
 	led->cdev.brightness_set = wm8350_led_set;
 	led->cdev.default_trigger = pdata->default_trigger;
@@ -257,17 +254,7 @@ static int wm8350_led_probe(struct platform_device *pdev)
 	led->value = LED_OFF;
 	platform_set_drvdata(pdev, led);
 
-	ret = led_classdev_register(&pdev->dev, &led->cdev);
-	if (ret < 0)
-		goto err_dcdc;
-
-	return 0;
-
- err_dcdc:
-	regulator_put(dcdc);
- err_isink:
-	regulator_put(isink);
-	return ret;
+	return led_classdev_register(&pdev->dev, &led->cdev);
 }
 
 static int wm8350_led_remove(struct platform_device *pdev)
@@ -277,8 +264,6 @@ static int wm8350_led_remove(struct platform_device *pdev)
 	led_classdev_unregister(&led->cdev);
 	flush_work_sync(&led->work);
 	wm8350_led_disable(led);
-	regulator_put(led->dcdc);
-	regulator_put(led->isink);
 	return 0;
 }
 
Signature · 1 line
1.7.9.5
#1 lore raw

Thanks, it's a good change. I've applied it to my for-next branch.

-Bryan

Quoted 81 lines · Axel Lin
---
 drivers/leds/leds-wm8350.c |   29 +++++++----------------------
 1 file changed, 7 insertions(+), 22 deletions(-)
drivers/leds/leds-wm8350.c +7 -23
index 918d4ba..f5d9ac3 100644
@@ -201,7 +201,7 @@ static int wm8350_led_probe(struct platform_device *pdev)
        struct regulator *isink, *dcdc;
        struct wm8350_led *led;
        struct wm8350_led_platform_data *pdata = pdev->dev.platform_data;
-       int ret, i;
+       int i;
 
        if (pdata == NULL) {
                dev_err(&pdev->dev, "no platform data\n");
@@ -214,24 +214,21 @@ static int wm8350_led_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       isink = regulator_get(&pdev->dev, "led_isink");
+       isink = devm_regulator_get(&pdev->dev, "led_isink");
        if (IS_ERR(isink)) {
                printk(KERN_ERR "%s: can't get ISINK\n", __func__);
                return PTR_ERR(isink);
        }
 
-       dcdc = regulator_get(&pdev->dev, "led_vcc");
+       dcdc = devm_regulator_get(&pdev->dev, "led_vcc");
        if (IS_ERR(dcdc)) {
                printk(KERN_ERR "%s: can't get DCDC\n", __func__);
-               ret = PTR_ERR(dcdc);
-               goto err_isink;
+               return PTR_ERR(dcdc);
        }
 
        led = devm_kzalloc(&pdev->dev, sizeof(*led), GFP_KERNEL);
-       if (led == NULL) {
-               ret = -ENOMEM;
-               goto err_dcdc;
-       }
+       if (led == NULL)
+               return -ENOMEM;
 
        led->cdev.brightness_set = wm8350_led_set;
        led->cdev.default_trigger = pdata->default_trigger;
@@ -257,17 +254,7 @@ static int wm8350_led_probe(struct platform_device *pdev)
        led->value = LED_OFF;
        platform_set_drvdata(pdev, led);
 
-       ret = led_classdev_register(&pdev->dev, &led->cdev);
-       if (ret < 0)
-               goto err_dcdc;
-
-       return 0;
-
- err_dcdc:
-       regulator_put(dcdc);
- err_isink:
-       regulator_put(isink);
-       return ret;
+       return led_classdev_register(&pdev->dev, &led->cdev);
 }
 
 static int wm8350_led_remove(struct platform_device *pdev)
@@ -277,8 +264,6 @@ static int wm8350_led_remove(struct platform_device *pdev)
        led_classdev_unregister(&led->cdev);
        flush_work_sync(&led->work);
        wm8350_led_disable(led);
-       regulator_put(led->dcdc);
-       regulator_put(led->isink);
        return 0;
 }
 
--

1.7.9.5

Signature · 4 lines
Bryan Wu <[email protected]>
Kernel Developer    +86.186-168-78255 Mobile
Canonical Ltd.      www.canonical.com
Ubuntu - Linux for human beings | www.ubuntu.com