acer-wmi: deactive mail led when power off
authorPali Rohár <pali.rohar@gmail.com>
Sat, 26 Feb 2011 20:18:58 +0000 (21:18 +0100)
committerMatthew Garrett <mjg@redhat.com>
Mon, 28 Mar 2011 10:28:09 +0000 (06:28 -0400)
This patch deactive mail led when laptop is going to hibernete/suspend
or power off. After resume from hibernate/suspend correctly restore
mail led state.

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
drivers/platform/x86/acer-wmi.c

index a8acf35d74751cedf75f5ebd33904b345d1397a7..4c8209376985a9861113a06b5e6c7c9ee5d7959e 100644 (file)
@@ -991,6 +991,7 @@ static int __devinit acer_led_init(struct device *dev)
 
 static void acer_led_exit(void)
 {
+       set_u32(LED_OFF, ACER_CAP_MAILLED);
        led_classdev_unregister(&mail_led);
 }
 
@@ -1553,6 +1554,7 @@ pm_message_t state)
 
        if (has_cap(ACER_CAP_MAILLED)) {
                get_u32(&value, ACER_CAP_MAILLED);
+               set_u32(LED_OFF, ACER_CAP_MAILLED);
                data->mailled = value;
        }
 
@@ -1580,6 +1582,17 @@ static int acer_platform_resume(struct platform_device *device)
        return 0;
 }
 
+static void acer_platform_shutdown(struct platform_device *device)
+{
+       struct acer_data *data = &interface->data;
+
+       if (!data)
+               return;
+
+       if (has_cap(ACER_CAP_MAILLED))
+               set_u32(LED_OFF, ACER_CAP_MAILLED);
+}
+
 static struct platform_driver acer_platform_driver = {
        .driver = {
                .name = "acer-wmi",
@@ -1589,6 +1602,7 @@ static struct platform_driver acer_platform_driver = {
        .remove = acer_platform_remove,
        .suspend = acer_platform_suspend,
        .resume = acer_platform_resume,
+       .shutdown = acer_platform_shutdown,
 };
 
 static struct platform_device *acer_platform_device;