From: Greg Kroah-Hartman Date: Wed, 14 Mar 2012 22:03:52 +0000 (-0700) Subject: 3.2-stable patches X-Git-Tag: v3.0.25~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3181903c5bb7ddcd83e02bc4ef57e8545d7b3574;p=thirdparty%2Fkernel%2Fstable-queue.git 3.2-stable patches added patches: acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch --- diff --git a/queue-3.2/acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch b/queue-3.2/acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch new file mode 100644 index 00000000000..d7c39cc6529 --- /dev/null +++ b/queue-3.2/acer-wmi-no-wifi-rfkill-on-lenovo-machines.patch @@ -0,0 +1,75 @@ +From 461e74377cfcfc2c0d6bbdfa8fc5fbc21b052c2a Mon Sep 17 00:00:00 2001 +From: Ike Panhc +Date: Fri, 3 Feb 2012 16:46:39 +0800 +Subject: acer-wmi: No wifi rfkill on Lenovo machines + +From: Ike Panhc + +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 +Signed-off-by: Matthew Garrett +Cc: Jonathan Nieder +Signed-off-by: Greg Kroah-Hartman + +--- + 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 +@@ -679,6 +679,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; +@@ -692,7 +718,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; + } + diff --git a/queue-3.2/series b/queue-3.2/series index 17effe81022..740ad527442 100644 --- a/queue-3.2/series +++ b/queue-3.2/series @@ -10,3 +10,4 @@ perf-x86-fix-local-vs-remote-memory-events-for-nhm-wsm.patch cifs-do-not-kmalloc-under-the-flocks-spinlock.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