On Tue, Jun 06, 2017 at 01:07:22PM -0700, João Paulo Rechi Vita wrote: > If a machine reports a RF Button in the communication button device > bitmap, we need to remove it before calling Get Device Status otherwise > it will return the "Undefined device" (0xE2) error code. > > Although this may be a BIOS bug, we don't really need to get or set the Yes, it's possible a BIOS bug. Because the type aa reports that the 14 bit is raised in bitmap, but it can not be used to query the device status. > RF Button status. The status indicator LED embedded in the button is > controlled by firmware logic, depending on the status of the wireless > radios present on the machine (WiFi || WWAN). > > This commit fixes the wireless status indicator LED on the Acer > TravelMate P648-G2-MG, and cleans the following message from the kernel > log: "Get Current Device Status failed: 0xe2 - 0x0". > > Signed-off-by: João Paulo Rechi Vita <jprvita@xxxxxxxxxxxx> Please feel free to add: Reviewed-by: "Lee, Chun-Yi" <joeyli.kernel@xxxxxxxxx> Thanks a lot! Joey Lee > --- > drivers/platform/x86/acer-wmi.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c > index 79fa5ab3fd00..3b381178039b 100644 > --- a/drivers/platform/x86/acer-wmi.c > +++ b/drivers/platform/x86/acer-wmi.c > @@ -149,6 +149,8 @@ struct event_return_value { > #define ACER_WMID3_GDS_THREEG (1<<6) /* 3G */ > #define ACER_WMID3_GDS_WIMAX (1<<7) /* WiMAX */ > #define ACER_WMID3_GDS_BLUETOOTH (1<<11) /* BT */ > +#define ACER_WMID3_GDS_RFBTN (1<<14) /* RF Button */ > + > #define ACER_WMID3_GDS_TOUCHPAD (1<<1) /* Touchpad */ > > /* Hotkey Customized Setting and Acer Application Status. > @@ -221,6 +223,7 @@ struct hotkey_function_type_aa { > #define ACER_CAP_BRIGHTNESS (1<<3) > #define ACER_CAP_THREEG (1<<4) > #define ACER_CAP_ACCEL (1<<5) > +#define ACER_CAP_RFBTN (1<<6) > #define ACER_CAP_ANY (0xFFFFFFFF) > > /* > @@ -1264,6 +1267,10 @@ static void __init type_aa_dmi_decode(const struct dmi_header *header, void *d) > interface->capability |= ACER_CAP_THREEG; > if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_BLUETOOTH) > interface->capability |= ACER_CAP_BLUETOOTH; > + if (type_aa->commun_func_bitmap & ACER_WMID3_GDS_RFBTN) { > + interface->capability |= ACER_CAP_RFBTN; > + commun_func_bitmap &= ~ACER_WMID3_GDS_RFBTN; > + } > > commun_fn_key_number = type_aa->commun_fn_key_number; > } > -- > 2.11.0 >