ioat3: specify valid address for disabled-Q or disabled-P
[safe/jmp/linux-2.6] / drivers / leds / leds-ams-delta.c
index 599878c..4460507 100644 (file)
@@ -12,7 +12,7 @@
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/leds.h>
-#include <asm/arch/board-ams-delta.h>
+#include <mach/board-ams-delta.h>
 
 /*
  * Our context
@@ -37,97 +37,72 @@ static void ams_delta_led_set(struct led_classdev *led_cdev,
 static struct ams_delta_led ams_delta_leds[] = {
        {
                .cdev           = {
-                       .name           = "ams-delta:camera",
+                       .name           = "ams-delta::camera",
                        .brightness_set = ams_delta_led_set,
                },
                .bitmask        = AMS_DELTA_LATCH1_LED_CAMERA,
        },
        {
                .cdev           = {
-                       .name           = "ams-delta:advert",
+                       .name           = "ams-delta::advert",
                        .brightness_set = ams_delta_led_set,
                },
                .bitmask        = AMS_DELTA_LATCH1_LED_ADVERT,
        },
        {
                .cdev           = {
-                       .name           = "ams-delta:email",
+                       .name           = "ams-delta::email",
                        .brightness_set = ams_delta_led_set,
                },
                .bitmask        = AMS_DELTA_LATCH1_LED_EMAIL,
        },
        {
                .cdev           = {
-                       .name           = "ams-delta:handsfree",
+                       .name           = "ams-delta::handsfree",
                        .brightness_set = ams_delta_led_set,
                },
                .bitmask        = AMS_DELTA_LATCH1_LED_HANDSFREE,
        },
        {
                .cdev           = {
-                       .name           = "ams-delta:voicemail",
+                       .name           = "ams-delta::voicemail",
                        .brightness_set = ams_delta_led_set,
                },
                .bitmask        = AMS_DELTA_LATCH1_LED_VOICEMAIL,
        },
        {
                .cdev           = {
-                       .name           = "ams-delta:voice",
+                       .name           = "ams-delta::voice",
                        .brightness_set = ams_delta_led_set,
                },
                .bitmask        = AMS_DELTA_LATCH1_LED_VOICE,
        },
 };
 
-#ifdef CONFIG_PM
-static int ams_delta_led_suspend(struct platform_device *dev,
-               pm_message_t state)
-{
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i++)
-               led_classdev_suspend(&ams_delta_leds[i].cdev);
-
-       return 0;
-}
-
-static int ams_delta_led_resume(struct platform_device *dev)
-{
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(ams_delta_leds); i++)
-               led_classdev_resume(&ams_delta_leds[i].cdev);
-
-       return 0;
-}
-#else
-#define ams_delta_led_suspend NULL
-#define ams_delta_led_resume NULL
-#endif
-
 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++) {
+               ams_delta_leds[i].cdev.flags |= LED_CORE_SUSPENDRESUME;
                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;
@@ -136,10 +111,9 @@ static int ams_delta_led_remove(struct platform_device *pdev)
 static struct platform_driver ams_delta_led_driver = {
        .probe          = ams_delta_led_probe,
        .remove         = ams_delta_led_remove,
-       .suspend        = ams_delta_led_suspend,
-       .resume         = ams_delta_led_resume,
        .driver         = {
                .name = "ams-delta-led",
+               .owner = THIS_MODULE,
        },
 };
 
@@ -150,7 +124,7 @@ static int __init ams_delta_led_init(void)
 
 static void __exit ams_delta_led_exit(void)
 {
-       return platform_driver_unregister(&ams_delta_led_driver);
+       platform_driver_unregister(&ams_delta_led_driver);
 }
 
 module_init(ams_delta_led_init);
@@ -159,3 +133,4 @@ module_exit(ams_delta_led_exit);
 MODULE_AUTHOR("Jonathan McDowell <noodles@earth.li>");
 MODULE_DESCRIPTION("Amstrad Delta LED driver");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:ams-delta-led");