[opensuse-kernel] [PATCH 1/2] acer-wmi: No wifi rfkill on Lenovo machines
From: Ike Panhc
From: Lee, Chun-Yi
Hi all experts, Sorry for bother you! I backport 5 acer-wmi patches and sent here for review. But, those patches didn't show up in openSUSE kernel git. What should I do for next step? Thanks a lot! Joey Lee 於 二,2012-04-03 於 09:18 +0800,Lee, Chun-Yi 提到:
From: Ike Panhc
Git-commit: 461e74377cfcfc2c0d6bbdfa8fc5fbc21b052c2a Patch-mainline: v3.3-rc8 References: bnc#752673 Target-release: openSUSE 12.1
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 Acked-by: Lee, Chun-Yi --- 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 @@ -668,6 +668,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; @@ -681,7 +707,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; }
-- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
At Wed, 18 Apr 2012 16:17:30 +0800, joeyli wrote:
Hi all experts,
Sorry for bother you!
I backport 5 acer-wmi patches and sent here for review. But, those patches didn't show up in openSUSE kernel git.
No news is a good news :) As far as I checked, these are good to merge. Feel free to merge to 12.1 branch by yourself. Another good way is to merge such patches into stable kernel. But since 3.1.x stable is dead, this won't work for 12.1 kernel,unfortunately... Takashi
What should I do for next step?
Thanks a lot! Joey Lee
於 二,2012-04-03 於 09:18 +0800,Lee, Chun-Yi 提到:
From: Ike Panhc
Git-commit: 461e74377cfcfc2c0d6bbdfa8fc5fbc21b052c2a Patch-mainline: v3.3-rc8 References: bnc#752673 Target-release: openSUSE 12.1
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 Acked-by: Lee, Chun-Yi --- 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 @@ -668,6 +668,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; @@ -681,7 +707,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; }
-- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
-- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
於 三,2012-04-18 於 10:54 +0200,Takashi Iwai 提到:
At Wed, 18 Apr 2012 16:17:30 +0800, joeyli wrote:
Hi all experts,
Sorry for bother you!
I backport 5 acer-wmi patches and sent here for review. But, those patches didn't show up in openSUSE kernel git.
No news is a good news :)
As far as I checked, these are good to merge. Feel free to merge to 12.1 branch by yourself.
Another good way is to merge such patches into stable kernel. But since 3.1.x stable is dead, this won't work for 12.1 kernel,unfortunately...
Takashi
OK, I just pushed it to openSUSE 12.1 branch on git. Thanks a lot! Joey Lee
What should I do for next step?
Thanks a lot! Joey Lee
於 二,2012-04-03 於 09:18 +0800,Lee, Chun-Yi 提到:
From: Ike Panhc
Git-commit: 461e74377cfcfc2c0d6bbdfa8fc5fbc21b052c2a Patch-mainline: v3.3-rc8 References: bnc#752673 Target-release: openSUSE 12.1
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 Acked-by: Lee, Chun-Yi --- 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 @@ -668,6 +668,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; @@ -681,7 +707,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; }
-- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
-- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-kernel+owner@opensuse.org
participants (3)
-
joeyli
-
Lee, Chun-Yi
-
Takashi Iwai