platform/x86: asus-nb-wmi: Allow configuring SW_TABLET_MODE method with a module option
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@redhat.com> Link: https://lore.kernel.org/r/20210812145513.39117-1-hdegoede@redhat.com
This commit is contained in:
parent
636a1e6975
commit
6be70ccdd9
@ -41,6 +41,10 @@ static int wapf = -1;
|
|||||||
module_param(wapf, uint, 0444);
|
module_param(wapf, uint, 0444);
|
||||||
MODULE_PARM_DESC(wapf, "WAPF value");
|
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 struct quirk_entry *quirks;
|
||||||
|
|
||||||
static bool asus_q500a_i8042_filter(unsigned char data, unsigned char str,
|
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
|
else
|
||||||
wapf = quirks->wapf;
|
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) {
|
if (quirks->i8042_filter) {
|
||||||
ret = i8042_install_filter(quirks->i8042_filter);
|
ret = i8042_install_filter(quirks->i8042_filter);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
Loading…
Reference in New Issue
Block a user