|
@@ -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,7 +718,9 @@ static acpi_status AMW0_set_capabilities(void)
|
|
|
* 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;
|
|
|
}
|
|
|
|