diff options
author | Benjamin Tissoires <benjamin.tissoires@redhat.com> | 2015-03-26 12:41:57 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2015-04-02 08:29:40 -0400 |
commit | 9188dbaed68a4b23dc96eba165265c08caa7dc2a (patch) | |
tree | 2ecddbf6e7e775e0ac0fcd9f95cb00a72a853a26 | |
parent | c1740d13e6ae4f1449e0a85097edf3ece51135ca (diff) |
HID: logitech-hidpp: add a module parameter to keep firmware gestures
The Logitech T650 used to report 3 fingers swipes to the up as a press on the
Super key. When we switched the touchpad to the raw mode, we also disable such
firmware gesture and some users may rely on it.
Unfortunately, 3 finger swipes are still not supported in most of the Linux
environments, which means that we disabled a feature of the touchpad.
Allow users to revert the raw reporting mode and keep going with the firmware
gestures by providing a new module parameter.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r-- | drivers/hid/hid-logitech-hidpp.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c index e77658cd037c..8e9cb25f45cb 100644 --- a/drivers/hid/hid-logitech-hidpp.c +++ b/drivers/hid/hid-logitech-hidpp.c | |||
@@ -28,6 +28,11 @@ MODULE_LICENSE("GPL"); | |||
28 | MODULE_AUTHOR("Benjamin Tissoires <benjamin.tissoires@gmail.com>"); | 28 | MODULE_AUTHOR("Benjamin Tissoires <benjamin.tissoires@gmail.com>"); |
29 | MODULE_AUTHOR("Nestor Lopez Casado <nlopezcasad@logitech.com>"); | 29 | MODULE_AUTHOR("Nestor Lopez Casado <nlopezcasad@logitech.com>"); |
30 | 30 | ||
31 | static bool disable_raw_mode; | ||
32 | module_param(disable_raw_mode, bool, 0644); | ||
33 | MODULE_PARM_DESC(disable_raw_mode, | ||
34 | "Disable Raw mode reporting for touchpads and keep firmware gestures."); | ||
35 | |||
31 | #define REPORT_ID_HIDPP_SHORT 0x10 | 36 | #define REPORT_ID_HIDPP_SHORT 0x10 |
32 | #define REPORT_ID_HIDPP_LONG 0x11 | 37 | #define REPORT_ID_HIDPP_LONG 0x11 |
33 | 38 | ||
@@ -1188,6 +1193,11 @@ static int hidpp_probe(struct hid_device *hdev, const struct hid_device_id *id) | |||
1188 | 1193 | ||
1189 | hidpp->quirks = id->driver_data; | 1194 | hidpp->quirks = id->driver_data; |
1190 | 1195 | ||
1196 | if (disable_raw_mode) { | ||
1197 | hidpp->quirks &= ~HIDPP_QUIRK_CLASS_WTP; | ||
1198 | hidpp->quirks &= ~HIDPP_QUIRK_DELAYED_INIT; | ||
1199 | } | ||
1200 | |||
1191 | if (hidpp->quirks & HIDPP_QUIRK_CLASS_WTP) { | 1201 | if (hidpp->quirks & HIDPP_QUIRK_CLASS_WTP) { |
1192 | ret = wtp_allocate(hdev, id); | 1202 | ret = wtp_allocate(hdev, id); |
1193 | if (ret) | 1203 | if (ret) |