diff options
author | Benjamin Tissoires <benjamin.tissoires@redhat.com> | 2018-04-24 10:04:33 +0200 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2018-04-26 14:17:31 +0200 |
commit | f07b3c1da92db108662f99417a212fc1eddc44d1 (patch) | |
tree | d4ad0e580dfab744d34460c80a361e78c7ff47dd /drivers/hid/hid-generic.c | |
parent | HID: store the full list of reports in the hidinput (diff) | |
download | linux-f07b3c1da92db108662f99417a212fc1eddc44d1.tar.xz linux-f07b3c1da92db108662f99417a212fc1eddc44d1.zip |
HID: generic: create one input report per application type
It is not a good idea to try to fit all types of applications in the
same input report. There are a lot of devices that are needing
the quirk HID_MULTI_INPUT but this quirk doesn't match the actual HID
description as it is based on the report ID.
Given that most devices with MULTI_INPUT I can think of split nicely
the devices inputs into application, it is a good thing to split the
devices by default based on this assumption.
Also make hid-multitouch following this rule, to not have to deal
with too many input created.
While we are at it, fix some checkpatch complaints about converting
'unsigned' to 'unsigned int'.
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-generic.c')
-rw-r--r-- | drivers/hid/hid-generic.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/hid/hid-generic.c b/drivers/hid/hid-generic.c index c25b4718de44..3b6eccbc2519 100644 --- a/drivers/hid/hid-generic.c +++ b/drivers/hid/hid-generic.c @@ -56,6 +56,20 @@ static bool hid_generic_match(struct hid_device *hdev, return true; } +static int hid_generic_probe(struct hid_device *hdev, + const struct hid_device_id *id) +{ + int ret; + + hdev->quirks |= HID_QUIRK_INPUT_PER_APP; + + ret = hid_parse(hdev); + if (ret) + return ret; + + return hid_hw_start(hdev, HID_CONNECT_DEFAULT); +} + static const struct hid_device_id hid_table[] = { { HID_DEVICE(HID_BUS_ANY, HID_GROUP_ANY, HID_ANY_ID, HID_ANY_ID) }, { } @@ -66,6 +80,7 @@ static struct hid_driver hid_generic = { .name = "hid-generic", .id_table = hid_table, .match = hid_generic_match, + .probe = hid_generic_probe, }; module_hid_driver(hid_generic); |