]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Mar 2012 22:03:44 +0000 (15:03 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Mar 2012 22:03:44 +0000 (15:03 -0700)
added patches:
acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch

queue-3.0/acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch b/queue-3.0/acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch
new file mode 100644 (file)
index 0000000..9201db2
--- /dev/null
@@ -0,0 +1,75 @@
+From 461e74377cfcfc2c0d6bbdfa8fc5fbc21b052c2a Mon Sep 17 00:00:00 2001
+From: Ike Panhc <ike.pan@canonical.com>
+Date: Fri, 3 Feb 2012 16:46:39 +0800
+Subject: acer-wmi: No wifi rfkill on Lenovo machines
+
+From: Ike Panhc <ike.pan@canonical.com>
+
+commit 461e74377cfcfc2c0d6bbdfa8fc5fbc21b052c2a upstream.
+
+We have several reports which says acer-wmi is loaded on ideapads
+and register rfkill for wifi which can not be unblocked.
+
+Since ideapad-laptop also register rfkill for wifi and it works
+reliably, it will be fine acer-wmi is not going to register rfkill
+for wifi once VPC2004 is found.
+
+Also put IBM0068/LEN0068 in the list. Though thinkpad_acpi has no
+wifi rfkill capability, there are reports which says acer-wmi also
+block wireless on Thinkpad E520/E420.
+
+Signed-off-by: Ike Panhc <ike.pan@canonical.com>
+Signed-off-by: Matthew Garrett <mjg@redhat.com>
+Cc: Jonathan Nieder <jrnieder@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/platform/x86/acer-wmi.c |   30 +++++++++++++++++++++++++++++-
+ 1 file changed, 29 insertions(+), 1 deletion(-)
+
+--- a/drivers/platform/x86/acer-wmi.c
++++ b/drivers/platform/x86/acer-wmi.c
+@@ -648,6 +648,32 @@ static acpi_status AMW0_find_mailled(voi
+       return AE_OK;
+ }
++static int AMW0_set_cap_acpi_check_device_found;
++
++static acpi_status AMW0_set_cap_acpi_check_device_cb(acpi_handle handle,
++      u32 level, void *context, void **retval)
++{
++      AMW0_set_cap_acpi_check_device_found = 1;
++      return AE_OK;
++}
++
++static const struct acpi_device_id norfkill_ids[] = {
++      { "VPC2004", 0},
++      { "IBM0068", 0},
++      { "LEN0068", 0},
++      { "", 0},
++};
++
++static int AMW0_set_cap_acpi_check_device(void)
++{
++      const struct acpi_device_id *id;
++
++      for (id = norfkill_ids; id->id[0]; id++)
++              acpi_get_devices(id->id, AMW0_set_cap_acpi_check_device_cb,
++                              NULL, NULL);
++      return AMW0_set_cap_acpi_check_device_found;
++}
++
+ static acpi_status AMW0_set_capabilities(void)
+ {
+       struct wmab_args args;
+@@ -661,7 +687,9 @@ static acpi_status AMW0_set_capabilities
+        * work.
+        */
+       if (wmi_has_guid(AMW0_GUID2)) {
+-              interface->capability |= ACER_CAP_WIRELESS;
++              if ((quirks != &quirk_unknown) ||
++                  !AMW0_set_cap_acpi_check_device())
++                      interface->capability |= ACER_CAP_WIRELESS;
+               return AE_OK;
+       }
index 50ebcf1ace624cd19238255ea874601e3f66fbf0..500c5b60f851d8449d8d815ff56c27152755c40f 100644 (file)
@@ -9,3 +9,4 @@ pm-driver-core-leave-runtime-pm-enabled-during-system-shutdown.patch
 rt2x00-fix-random-stalls.patch
 vfs-fix-return-value-from-do_last.patch
 vfs-fix-double-put-after-complete_walk.patch
+acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch