Skip to content

Commit 461e743

Browse files
ikepanhcMatthew Garrett
authored andcommitted
acer-wmi: No wifi rfkill on Lenovo machines
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>
1 parent 2d24c49 commit 461e743

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

drivers/platform/x86/acer-wmi.c

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,32 @@ static acpi_status AMW0_find_mailled(void)
679679
return AE_OK;
680680
}
681681

682+
static int AMW0_set_cap_acpi_check_device_found;
683+
684+
static acpi_status AMW0_set_cap_acpi_check_device_cb(acpi_handle handle,
685+
u32 level, void *context, void **retval)
686+
{
687+
AMW0_set_cap_acpi_check_device_found = 1;
688+
return AE_OK;
689+
}
690+
691+
static const struct acpi_device_id norfkill_ids[] = {
692+
{ "VPC2004", 0},
693+
{ "IBM0068", 0},
694+
{ "LEN0068", 0},
695+
{ "", 0},
696+
};
697+
698+
static int AMW0_set_cap_acpi_check_device(void)
699+
{
700+
const struct acpi_device_id *id;
701+
702+
for (id = norfkill_ids; id->id[0]; id++)
703+
acpi_get_devices(id->id, AMW0_set_cap_acpi_check_device_cb,
704+
NULL, NULL);
705+
return AMW0_set_cap_acpi_check_device_found;
706+
}
707+
682708
static acpi_status AMW0_set_capabilities(void)
683709
{
684710
struct wmab_args args;
@@ -692,7 +718,9 @@ static acpi_status AMW0_set_capabilities(void)
692718
* work.
693719
*/
694720
if (wmi_has_guid(AMW0_GUID2)) {
695-
interface->capability |= ACER_CAP_WIRELESS;
721+
if ((quirks != &quirk_unknown) ||
722+
!AMW0_set_cap_acpi_check_device())
723+
interface->capability |= ACER_CAP_WIRELESS;
696724
return AE_OK;
697725
}
698726

0 commit comments

Comments
 (0)