Files
linux/drivers/hid
Blaž Hrastnik e7773681f2 HID: Improve Windows Precision Touchpad detection.
[ Upstream commit 2dbc6f113a ]

Per Microsoft spec, usage 0xC5 (page 0xFF) returns a blob containing
data used to verify the touchpad as a Windows Precision Touchpad.

   0x85, REPORTID_PTPHQA,    //    REPORT_ID (PTPHQA)
    0x09, 0xC5,              //    USAGE (Vendor Usage 0xC5)
    0x15, 0x00,              //    LOGICAL_MINIMUM (0)
    0x26, 0xff, 0x00,        //    LOGICAL_MAXIMUM (0xff)
    0x75, 0x08,              //    REPORT_SIZE (8)
    0x96, 0x00, 0x01,        //    REPORT_COUNT (0x100 (256))
    0xb1, 0x02,              //    FEATURE (Data,Var,Abs)

However, some devices, namely Microsoft's Surface line of products
instead implement a "segmented device certification report" (usage 0xC6)
which returns the same report, but in smaller chunks.

    0x06, 0x00, 0xff,        //     USAGE_PAGE (Vendor Defined)
    0x85, REPORTID_PTPHQA,   //     REPORT_ID (PTPHQA)
    0x09, 0xC6,              //     USAGE (Vendor usage for segment #)
    0x25, 0x08,              //     LOGICAL_MAXIMUM (8)
    0x75, 0x08,              //     REPORT_SIZE (8)
    0x95, 0x01,              //     REPORT_COUNT (1)
    0xb1, 0x02,              //     FEATURE (Data,Var,Abs)
    0x09, 0xC7,              //     USAGE (Vendor Usage)
    0x26, 0xff, 0x00,        //     LOGICAL_MAXIMUM (0xff)
    0x95, 0x20,              //     REPORT_COUNT (32)
    0xb1, 0x02,              //     FEATURE (Data,Var,Abs)

By expanding Win8 touchpad detection to also look for the segmented
report, all Surface touchpads are now properly recognized by
hid-multitouch.

Signed-off-by: Blaž Hrastnik <blaz@mxxn.io>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-05-15 16:21:15 +09:00
..
2015-10-21 13:15:53 +02:00
2013-01-03 10:27:31 +01:00
2014-08-21 10:43:28 -05:00
2015-10-21 13:15:53 +02:00
2018-03-22 09:17:53 +01:00
2013-01-03 10:27:31 +01:00
2013-01-03 10:27:31 +01:00
2015-12-28 13:41:44 +01:00
2013-04-24 16:32:27 +02:00
2013-01-03 10:27:31 +01:00
2013-01-03 10:27:31 +01:00
2015-12-28 13:41:44 +01:00
2013-01-03 10:27:31 +01:00
2018-04-24 09:34:11 +02:00
2015-12-28 13:41:51 +01:00
2015-12-28 13:41:51 +01:00
2015-12-28 13:41:51 +01:00
2015-12-28 13:41:51 +01:00
2015-12-28 13:41:51 +01:00
2015-12-28 13:41:51 +01:00
2015-12-28 13:41:51 +01:00
2013-01-03 10:27:31 +01:00
2015-05-07 10:47:53 +02:00
2023-05-15 08:25:29 +09:00
2015-12-28 13:41:44 +01:00
2014-08-21 10:43:28 -05:00
2013-01-03 10:27:31 +01:00
2013-01-03 10:27:31 +01:00
2015-12-28 13:41:44 +01:00
2018-04-24 09:34:11 +02:00