Skip to content

Commit 2f31c52

Browse files
bentissJiri Kosina
authored andcommitted
HID: Introduce hidpp, a module to handle Logitech hid++ devices
Logitech devices use a vendor protocol to communicate various information with the device. This protocol is called HID++, and an exerpt can be found here: https://drive.google.com/folderview?id=0BxbRzx7vEV7eWmgwazJ3NUFfQ28&usp=shar The main difficulty which is related to this protocol is that it is a synchronous protocol using the input reports. So when we want to get some information from the device, we need to wait for a matching input report. This driver introduce this capabilities to be able to support the multitouch mode of the Logitech Wireless Touchpad T651 (the bluetooth one). The multitouch data is available directly from the mouse input reports, and we just need to query the device on connect about its caracteristics. HID++ and the touchpad features has a specific reporting mode which uses pure HID++ reports, but Logitech told us not to use it for this specific device. During QA, they detected that some bluetooth input reports where lost, and so the only supported mode is the pointer mode. Signed-off-by: Benjamin Tissoires <[email protected]> Tested-by: Andrew de los Reyes <[email protected]> Signed-off-by: Jiri Kosina <[email protected]>
1 parent 8cb3746 commit 2f31c52

File tree

5 files changed

+856
-0
lines changed

5 files changed

+856
-0
lines changed

drivers/hid/Kconfig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,17 @@ config HID_LOGITECH_DJ
378378
generic USB_HID driver and all incoming events will be multiplexed
379379
into a single mouse and a single keyboard device.
380380

381+
config HID_LOGITECH_HIDPP
382+
tristate "Logitech HID++ devices support"
383+
depends on HID_LOGITECH
384+
---help---
385+
Support for Logitech devices relyingon the HID++ Logitech specification
386+
387+
Say Y if you want support for Logitech devices relying on the HID++
388+
specification. Such devices are the various Logitech Touchpads (T650,
389+
T651, TK820), some mice (Zone Touch mouse), or even keyboards (Solar
390+
Keayboard).
391+
381392
config LOGITECH_FF
382393
bool "Logitech force feedback support"
383394
depends on HID_LOGITECH

drivers/hid/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ obj-$(CONFIG_HID_LCPOWER) += hid-lcpower.o
6363
obj-$(CONFIG_HID_LENOVO) += hid-lenovo.o
6464
obj-$(CONFIG_HID_LOGITECH) += hid-logitech.o
6565
obj-$(CONFIG_HID_LOGITECH_DJ) += hid-logitech-dj.o
66+
obj-$(CONFIG_HID_LOGITECH_HIDPP) += hid-logitech-hidpp.o
6667
obj-$(CONFIG_HID_MAGICMOUSE) += hid-magicmouse.o
6768
obj-$(CONFIG_HID_MICROSOFT) += hid-microsoft.o
6869
obj-$(CONFIG_HID_MONTEREY) += hid-monterey.o

drivers/hid/hid-core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1818,6 +1818,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
18181818
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER_2) },
18191819
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RECEIVER) },
18201820
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_PS3) },
1821+
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_T651) },
18211822
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_DESKTOP) },
18221823
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_EDGE) },
18231824
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_MINI) },

drivers/hid/hid-ids.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,7 @@
575575

576576
#define USB_VENDOR_ID_LOGITECH 0x046d
577577
#define USB_DEVICE_ID_LOGITECH_AUDIOHUB 0x0a0e
578+
#define USB_DEVICE_ID_LOGITECH_T651 0xb00c
578579
#define USB_DEVICE_ID_LOGITECH_RECEIVER 0xc101
579580
#define USB_DEVICE_ID_LOGITECH_HARMONY_FIRST 0xc110
580581
#define USB_DEVICE_ID_LOGITECH_HARMONY_LAST 0xc14f

0 commit comments

Comments
 (0)