Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25.16-rc1 /drivers/misc/acer-wmi.c

Filename:/drivers/misc/acer-wmi.c
Lines Added:19
Lines Deleted:0
Also changed in: (Previous) 2.6.25  2.6.25-rc9  2.6.25-rc8  2.6.25-rc7  2.6.25-rc6  2.6.25-rc5-git7 
(Following) 2.6.25.16  2.6.25.17  2.6.25.19  2.6.25.20  2.6.26.3  2.6.26.4 

Location
[  2.6.25.16-rc1
  [  drivers
    [  misc
       o  acer-wmi.c

Patch

diff --git a/drivers/misc/acer-wmi.c b/drivers/misc/acer-wmi.c
index dd13a37..3a3e4c1 100644
--- a/drivers/misc/acer-wmi.c
+++ b/drivers/misc/acer-wmi.c
@@ -742,11 +742,30 @@ static acpi_status get_u32(u32 *value, u32 cap)
 
 static acpi_status set_u32(u32 value, u32 cap)
 {
+   acpi_status status;
+
    if (interface->capability & cap) {
       switch (interface->type) {
       case ACER_AMW0:
          return AMW0_set_u32(value, cap, interface);
       case ACER_AMW0_V2:
+         if (cap == ACER_CAP_MAILLED)
+            return AMW0_set_u32(value, cap, interface);
+
+         /*
+          * On some models, some WMID methods don't toggle
+          * properly. For those cases, we want to run the AMW0
+          * method afterwards to be certain we've really toggled
+          * the device state.
+          */
+         if (cap == ACER_CAP_WIRELESS ||
+            cap == ACER_CAP_BLUETOOTH) {
+            status = WMID_set_u32(value, cap, interface);
+            if (ACPI_FAILURE(status))
+               return status;
+
+            return AMW0_set_u32(value, cap, interface);
+         }
       case ACER_WMID:
          return WMID_set_u32(value, cap, interface);
       default:


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.