staging: Add framebuffer driver for XGI chipsets
[safe/jmp/linux-2.6] / drivers / leds / leds-net48xx.c
index 713c4a8..93987a1 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/leds.h>
 #include <linux/err.h>
 #include <asm/io.h>
+#include <linux/nsc_gpio.h>
 #include <linux/scx200_gpio.h>
 
 #define DRVNAME "net48xx-led"
@@ -26,35 +27,15 @@ static struct platform_device *pdev;
 static void net48xx_error_led_set(struct led_classdev *led_cdev,
                enum led_brightness value)
 {
-       if (value)
-               scx200_gpio_set_high(NET48XX_ERROR_LED_GPIO);
-       else
-               scx200_gpio_set_low(NET48XX_ERROR_LED_GPIO);
+       scx200_gpio_ops.gpio_set(NET48XX_ERROR_LED_GPIO, value ? 1 : 0);
 }
 
 static struct led_classdev net48xx_error_led = {
-       .name           = "net48xx:error",
+       .name           = "net48xx::error",
        .brightness_set = net48xx_error_led_set,
+       .flags          = LED_CORE_SUSPENDRESUME,
 };
 
-#ifdef CONFIG_PM
-static int net48xx_led_suspend(struct platform_device *dev,
-               pm_message_t state)
-{
-       led_classdev_suspend(&net48xx_error_led);
-       return 0;
-}
-
-static int net48xx_led_resume(struct platform_device *dev)
-{
-       led_classdev_resume(&net48xx_error_led);
-       return 0;
-}
-#else
-#define net48xx_led_suspend NULL
-#define net48xx_led_resume NULL
-#endif
-
 static int net48xx_led_probe(struct platform_device *pdev)
 {
        return led_classdev_register(&pdev->dev, &net48xx_error_led);
@@ -69,8 +50,6 @@ static int net48xx_led_remove(struct platform_device *pdev)
 static struct platform_driver net48xx_led_driver = {
        .probe          = net48xx_led_probe,
        .remove         = net48xx_led_remove,
-       .suspend        = net48xx_led_suspend,
-       .resume         = net48xx_led_resume,
        .driver         = {
                .name           = DRVNAME,
                .owner          = THIS_MODULE,
@@ -81,7 +60,8 @@ static int __init net48xx_led_init(void)
 {
        int ret;
 
-       if (!scx200_gpio_present()) {
+       /* small hack, but scx200_gpio doesn't set .dev if the probe fails */
+       if (!scx200_gpio_ops.dev) {
                ret = -ENODEV;
                goto out;
        }