Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 461e7437 authored by Ike Panhc's avatar Ike Panhc Committed by Matthew Garrett
Browse files

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: default avatarIke Panhc <ike.pan@canonical.com>
Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
parent 2d24c490
Loading
Loading
Loading
Loading
+29 −1
Original line number Diff line number Diff line
@@ -679,6 +679,32 @@ static acpi_status AMW0_find_mailled(void)
	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,6 +718,8 @@ static acpi_status AMW0_set_capabilities(void)
	 * work.
	 */
	if (wmi_has_guid(AMW0_GUID2)) {
		if ((quirks != &quirk_unknown) ||
		    !AMW0_set_cap_acpi_check_device())
			interface->capability |= ACER_CAP_WIRELESS;
		return AE_OK;
	}