diff options
author | Benjamin Tissoires <benjamin.tissoires@redhat.com> | 2014-05-21 11:15:56 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2014-05-22 05:11:46 -0400 |
commit | ba391e5a5ac6697b8bcae8c0d01439cb765d9ef8 (patch) | |
tree | cf04199bb71cffd6c38ecce910dff92d131c675b /drivers | |
parent | 876e7a8a111a4277ea35e5314a5fafc18346d3ca (diff) |
HID: rmi: do not handle touchscreens through hid-rmi
Currently, hid-rmi drives every Synaptics product, but the touchscreens
on the Windows tablets should be handled through hid-multitouch.
Instead of providing a long list of PIDs, rely on the scan_report
capability to detect which should go to hid-multitouch, and which
should not go to hid-rmi.
related bug:
https://bugzilla.kernel.org/show_bug.cgi?id=74241
https://bugzilla.redhat.com/show_bug.cgi?id=1089583
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/hid/hid-core.c | 10 | ||||
-rw-r--r-- | drivers/hid/hid-rmi.c | 3 |
2 files changed, 9 insertions, 4 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index f05255d92de7..64c71c866916 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -776,6 +776,14 @@ static int hid_scan_report(struct hid_device *hid) | |||
776 | (hid->group == HID_GROUP_MULTITOUCH)) | 776 | (hid->group == HID_GROUP_MULTITOUCH)) |
777 | hid->group = HID_GROUP_MULTITOUCH_WIN_8; | 777 | hid->group = HID_GROUP_MULTITOUCH_WIN_8; |
778 | 778 | ||
779 | /* | ||
780 | * Vendor specific handlings | ||
781 | */ | ||
782 | if ((hid->vendor == USB_VENDOR_ID_SYNAPTICS) && | ||
783 | (hid->group == HID_GROUP_GENERIC)) | ||
784 | /* hid-rmi should take care of them, not hid-generic */ | ||
785 | hid->group = HID_GROUP_RMI; | ||
786 | |||
779 | vfree(parser); | 787 | vfree(parser); |
780 | return 0; | 788 | return 0; |
781 | } | 789 | } |
@@ -1882,8 +1890,6 @@ static const struct hid_device_id hid_have_special_driver[] = { | |||
1882 | { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGP_MOUSE) }, | 1890 | { HID_USB_DEVICE(USB_VENDOR_ID_SONY, USB_DEVICE_ID_SONY_VAIO_VGP_MOUSE) }, |
1883 | { HID_USB_DEVICE(USB_VENDOR_ID_STEELSERIES, USB_DEVICE_ID_STEELSERIES_SRWS1) }, | 1891 | { HID_USB_DEVICE(USB_VENDOR_ID_STEELSERIES, USB_DEVICE_ID_STEELSERIES_SRWS1) }, |
1884 | { HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) }, | 1892 | { HID_USB_DEVICE(USB_VENDOR_ID_SUNPLUS, USB_DEVICE_ID_SUNPLUS_WDESKTOP) }, |
1885 | { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, HID_ANY_ID) }, | ||
1886 | { HID_I2C_DEVICE(USB_VENDOR_ID_SYNAPTICS, HID_ANY_ID) }, | ||
1887 | { HID_USB_DEVICE(USB_VENDOR_ID_THINGM, USB_DEVICE_ID_BLINK1) }, | 1893 | { HID_USB_DEVICE(USB_VENDOR_ID_THINGM, USB_DEVICE_ID_BLINK1) }, |
1888 | { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) }, | 1894 | { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb300) }, |
1889 | { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) }, | 1895 | { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb304) }, |
diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c index c529b033ba9e..2451c7e5febd 100644 --- a/drivers/hid/hid-rmi.c +++ b/drivers/hid/hid-rmi.c | |||
@@ -894,8 +894,7 @@ static void rmi_remove(struct hid_device *hdev) | |||
894 | } | 894 | } |
895 | 895 | ||
896 | static const struct hid_device_id rmi_id[] = { | 896 | static const struct hid_device_id rmi_id[] = { |
897 | { HID_I2C_DEVICE(USB_VENDOR_ID_SYNAPTICS, HID_ANY_ID) }, | 897 | { HID_DEVICE(HID_BUS_ANY, HID_GROUP_RMI, HID_ANY_ID, HID_ANY_ID) }, |
898 | { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, HID_ANY_ID) }, | ||
899 | { } | 898 | { } |
900 | }; | 899 | }; |
901 | MODULE_DEVICE_TABLE(hid, rmi_id); | 900 | MODULE_DEVICE_TABLE(hid, rmi_id); |