]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/leds/leds-ams-delta.c
leds: Simplify logic in leds-ams-delta
[linux-2.6-omap-h63xx.git] / drivers / leds / leds-ams-delta.c
index 32c98b2efa3fe4d120d497389703d6795ae470b3..1bd590bb3a6e8edce5aae8b672da8fe2a89bdb8a 100644 (file)
@@ -107,27 +107,27 @@ static int ams_delta_led_resume(struct platform_device *dev)
 
 static int ams_delta_led_probe(struct platform_device *pdev)
 {
-       int i;
-       int ret;
+       int i, ret;
 
-       for (i = ret = 0; ret >= 0 && i < ARRAY_SIZE(ams_delta_leds); i++) {
+       for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i++) {
                ret = led_classdev_register(&pdev->dev,
                                &ams_delta_leds[i].cdev);
+               if (ret < 0)
+                       goto fail;
        }
 
-       if (ret < 0 && i > 1) {
-               for (i = i - 2; i >= 0; i--)
-                       led_classdev_unregister(&ams_delta_leds[i].cdev);
-       }
-
-       return ret;
+       return 0;
+fail:
+       while (--i >= 0)
+               led_classdev_unregister(&ams_delta_leds[i].cdev);
+       return ret;     
 }
 
 static int ams_delta_led_remove(struct platform_device *pdev)
 {
        int i;
 
-       for (i = ARRAY_SIZE(ams_delta_leds) - 1; i >= 0; i--)
+       for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i--)
                led_classdev_unregister(&ams_delta_leds[i].cdev);
 
        return 0;