Re: [PATCH] platform/x86/acer-wmi: Detect RF Button capability

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
> 



[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux