Hi Ike, 於 三,2012-01-25 於 10:14 +0800,Ike Panhc 提到: > This patch has been tested on ideapad s205 > > User reports the first time try wireless hard/soft all blocked > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/875659/comments/53 > > but the second try looks good. > > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/875659/comments/55 > > That will be better retest this patch after remove ac power and battery. > On 01/25/2012 09:57 AM, Ike Panhc wrote: > > 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@xxxxxxxxxxxxx> > > --- > > drivers/platform/x86/acer-wmi.c | 29 ++++++++++++++++++++++++++++- > > 1 files changed, 28 insertions(+), 1 deletions(-) > > > > diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c > > index b848277..aaef8f8 100644 > > --- a/drivers/platform/x86/acer-wmi.c > > +++ b/drivers/platform/x86/acer-wmi.c > > @@ -679,6 +679,32 @@ static acpi_status AMW0_find_mailled(void) > > return AE_OK; > > } > > > > +static int AMW0_set_cap_acpi_check_device_found = 0; > > + > > +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,8 @@ static acpi_status AMW0_set_capabilities(void) > > * work. > > */ > > if (wmi_has_guid(AMW0_GUID2)) { > > - interface->capability |= ACER_CAP_WIRELESS; > > + if (!AMW0_set_cap_acpi_check_device()) > > + interface->capability |= ACER_CAP_WIRELESS; I suggest add the following logic (non-test) to pass quirks that were already supported by acer-wmi: if ((quirk != &quirk_unknown) || !AMW0_set_cap_acpi_check_device()) interface->capability |= ACER_CAP_WIRELESS; That can keep acer-wmi still support Lenovo Ideapad S205 and Lenovo 3000 N200 by quirks. Those quirks works fine before. > > return AE_OK; > > } > > > > Thanks a lot! Joey Lee -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html