Re: [PATCH 1/2] platform/x86: asus-nb-wmi: Allow configuring SW_TABLET_MODE method with a module option

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

 



Hi All,

On 8/12/21 4:55 PM, Hans de Goede wrote:
> Unfortunately we have been unable to find a reliable way to detect if
> and how SW_TABLET_MODE reporting is supported, so we are relying on
> DMI quirks for this.
> 
> Add a module-option to specify the SW_TABLET_MODE method so that this can
> be easily tested without needing to rebuild the kernel.
> 
> BugLink: https://gitlab.freedesktop.org/libinput/libinput/-/issues/639
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>

I've added this series to my review-hans and the pdx86/fixes branches
now (the patches were already tested by the bug reporter before I posted
them).

Regards,

Hans


> ---
>  drivers/platform/x86/asus-nb-wmi.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
> 
> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
> index 0cb927f0f301..9929eedf7dd8 100644
> --- a/drivers/platform/x86/asus-nb-wmi.c
> +++ b/drivers/platform/x86/asus-nb-wmi.c
> @@ -41,6 +41,10 @@ static int wapf = -1;
>  module_param(wapf, uint, 0444);
>  MODULE_PARM_DESC(wapf, "WAPF value");
>  
> +static int tablet_mode_sw = -1;
> +module_param(tablet_mode_sw, uint, 0444);
> +MODULE_PARM_DESC(tablet_mode_sw, "Tablet mode detect: -1:auto 0:disable 1:kbd-dock 2:lid-flip");
> +
>  static struct quirk_entry *quirks;
>  
>  static bool asus_q500a_i8042_filter(unsigned char data, unsigned char str,
> @@ -477,6 +481,21 @@ static void asus_nb_wmi_quirks(struct asus_wmi_driver *driver)
>  	else
>  		wapf = quirks->wapf;
>  
> +	switch (tablet_mode_sw) {
> +	case 0:
> +		quirks->use_kbd_dock_devid = false;
> +		quirks->use_lid_flip_devid = false;
> +		break;
> +	case 1:
> +		quirks->use_kbd_dock_devid = true;
> +		quirks->use_lid_flip_devid = false;
> +		break;
> +	case 2:
> +		quirks->use_kbd_dock_devid = false;
> +		quirks->use_lid_flip_devid = true;
> +		break;
> +	}
> +
>  	if (quirks->i8042_filter) {
>  		ret = i8042_install_filter(quirks->i8042_filter);
>  		if (ret) {
> 




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

  Powered by Linux