diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-06-08 13:29:26 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-06-08 13:29:26 -0400 |
| commit | fdea70d26a471e002f2afc3a48821323b699f1e6 (patch) | |
| tree | 47d9697bafcb4d2854671110758b2570b5bce3a3 /include/linux | |
| parent | 9eb86c75494ee6a5f789bc6c11b43feff2ccfeb6 (diff) | |
| parent | 06d8b9067c9bb9d65c7479506e682b211735fa1a (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
Pull HID updates from Jiri Kosina:
- Valve Steam Controller support from Rodrigo Rivas Costa
- Redragon Asura support from Robert Munteanu
- improvement of duplicate usage handling in generic hid-input from
Benjamin Tissoires
- Win 8.1 precisioun touchpad spec implementation from Benjamin
Tissoires
- Support for "In Range" flag for Wacom Intuos/Bamboo devices from
Jason Gerecke
- other various assorted smaller fixes and improvements
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (27 commits)
HID: rmi: use HID_QUIRK_NO_INPUT_SYNC
HID: multitouch: fix calculation of last slot field in multi-touch reports
HID: quirks: remove Delcom Visual Signal Indicator from hid_have_special_driver[]
HID: steam: select CONFIG_POWER_SUPPLY
HID: i2c-hid: remove i2c_hid_open_mut
HID: wacom: Support "in range" for Intuos/Bamboo tablets where possible
HID: core: fix hid_hw_open() comment
HID: hid-plantronics: Re-resend Update to map button for PTT products
HID: multitouch: fix types returned from mt_need_to_apply_feature()
HID: i2c-hid: check if device is there before really probing
HID: steam: add missing fields in client initialization
HID: steam: add battery device.
HID: add driver for Valve Steam Controller
HID: alps: Fix some style in 't4_read_write_register()'
HID: alps: Check errors returned by 't4_read_write_register()'
HID: alps: Save a memory allocation in 't4_read_write_register()' when writing data
HID: alps: Report an error if we receive invalid data in 't4_read_write_register()'
HID: multitouch: implement precision touchpad latency and switches
HID: multitouch: simplify the settings of the various features
HID: multitouch: make use of HID_QUIRK_INPUT_PER_APP
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/hid.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/include/linux/hid.h b/include/linux/hid.h index 26240a22978a..41a3d5775394 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h | |||
| @@ -292,9 +292,12 @@ struct hid_item { | |||
| 292 | #define HID_DG_CONTACTCOUNT 0x000d0054 | 292 | #define HID_DG_CONTACTCOUNT 0x000d0054 |
| 293 | #define HID_DG_CONTACTMAX 0x000d0055 | 293 | #define HID_DG_CONTACTMAX 0x000d0055 |
| 294 | #define HID_DG_SCANTIME 0x000d0056 | 294 | #define HID_DG_SCANTIME 0x000d0056 |
| 295 | #define HID_DG_SURFACESWITCH 0x000d0057 | ||
| 296 | #define HID_DG_BUTTONSWITCH 0x000d0058 | ||
| 295 | #define HID_DG_BUTTONTYPE 0x000d0059 | 297 | #define HID_DG_BUTTONTYPE 0x000d0059 |
| 296 | #define HID_DG_BARRELSWITCH2 0x000d005a | 298 | #define HID_DG_BARRELSWITCH2 0x000d005a |
| 297 | #define HID_DG_TOOLSERIALNUMBER 0x000d005b | 299 | #define HID_DG_TOOLSERIALNUMBER 0x000d005b |
| 300 | #define HID_DG_LATENCYMODE 0x000d0060 | ||
| 298 | 301 | ||
| 299 | #define HID_VD_ASUS_CUSTOM_MEDIA_KEYS 0xff310076 | 302 | #define HID_VD_ASUS_CUSTOM_MEDIA_KEYS 0xff310076 |
| 300 | /* | 303 | /* |
| @@ -341,10 +344,12 @@ struct hid_item { | |||
| 341 | /* BIT(8) reserved for backward compatibility, was HID_QUIRK_NO_EMPTY_INPUT */ | 344 | /* BIT(8) reserved for backward compatibility, was HID_QUIRK_NO_EMPTY_INPUT */ |
| 342 | /* BIT(9) reserved for backward compatibility, was NO_INIT_INPUT_REPORTS */ | 345 | /* BIT(9) reserved for backward compatibility, was NO_INIT_INPUT_REPORTS */ |
| 343 | #define HID_QUIRK_ALWAYS_POLL BIT(10) | 346 | #define HID_QUIRK_ALWAYS_POLL BIT(10) |
| 347 | #define HID_QUIRK_INPUT_PER_APP BIT(11) | ||
| 344 | #define HID_QUIRK_SKIP_OUTPUT_REPORTS BIT(16) | 348 | #define HID_QUIRK_SKIP_OUTPUT_REPORTS BIT(16) |
| 345 | #define HID_QUIRK_SKIP_OUTPUT_REPORT_ID BIT(17) | 349 | #define HID_QUIRK_SKIP_OUTPUT_REPORT_ID BIT(17) |
| 346 | #define HID_QUIRK_NO_OUTPUT_REPORTS_ON_INTR_EP BIT(18) | 350 | #define HID_QUIRK_NO_OUTPUT_REPORTS_ON_INTR_EP BIT(18) |
| 347 | #define HID_QUIRK_HAVE_SPECIAL_DRIVER BIT(19) | 351 | #define HID_QUIRK_HAVE_SPECIAL_DRIVER BIT(19) |
| 352 | #define HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE BIT(20) | ||
| 348 | #define HID_QUIRK_FULLSPEED_INTERVAL BIT(28) | 353 | #define HID_QUIRK_FULLSPEED_INTERVAL BIT(28) |
| 349 | #define HID_QUIRK_NO_INIT_REPORTS BIT(29) | 354 | #define HID_QUIRK_NO_INIT_REPORTS BIT(29) |
| 350 | #define HID_QUIRK_NO_IGNORE BIT(30) | 355 | #define HID_QUIRK_NO_IGNORE BIT(30) |
| @@ -367,6 +372,7 @@ struct hid_item { | |||
| 367 | #define HID_GROUP_RMI 0x0100 | 372 | #define HID_GROUP_RMI 0x0100 |
| 368 | #define HID_GROUP_WACOM 0x0101 | 373 | #define HID_GROUP_WACOM 0x0101 |
| 369 | #define HID_GROUP_LOGITECH_DJ_DEVICE 0x0102 | 374 | #define HID_GROUP_LOGITECH_DJ_DEVICE 0x0102 |
| 375 | #define HID_GROUP_STEAM 0x0103 | ||
| 370 | 376 | ||
| 371 | /* | 377 | /* |
| 372 | * HID protocol status | 378 | * HID protocol status |
| @@ -463,8 +469,10 @@ struct hid_field { | |||
| 463 | 469 | ||
| 464 | struct hid_report { | 470 | struct hid_report { |
| 465 | struct list_head list; | 471 | struct list_head list; |
| 466 | unsigned id; /* id of this report */ | 472 | struct list_head hidinput_list; |
| 467 | unsigned type; /* report type */ | 473 | unsigned int id; /* id of this report */ |
| 474 | unsigned int type; /* report type */ | ||
| 475 | unsigned int application; /* application usage for this report */ | ||
| 468 | struct hid_field *field[HID_MAX_FIELDS]; /* fields of the report */ | 476 | struct hid_field *field[HID_MAX_FIELDS]; /* fields of the report */ |
| 469 | unsigned maxfield; /* maximum valid field index */ | 477 | unsigned maxfield; /* maximum valid field index */ |
| 470 | unsigned size; /* size of the report (bits) */ | 478 | unsigned size; /* size of the report (bits) */ |
| @@ -502,12 +510,15 @@ struct hid_output_fifo { | |||
| 502 | 510 | ||
| 503 | #define HID_STAT_ADDED BIT(0) | 511 | #define HID_STAT_ADDED BIT(0) |
| 504 | #define HID_STAT_PARSED BIT(1) | 512 | #define HID_STAT_PARSED BIT(1) |
| 513 | #define HID_STAT_DUP_DETECTED BIT(2) | ||
| 505 | 514 | ||
| 506 | struct hid_input { | 515 | struct hid_input { |
| 507 | struct list_head list; | 516 | struct list_head list; |
| 508 | struct hid_report *report; | 517 | struct hid_report *report; |
| 509 | struct input_dev *input; | 518 | struct input_dev *input; |
| 519 | const char *name; | ||
| 510 | bool registered; | 520 | bool registered; |
| 521 | struct list_head reports; /* the list of reports */ | ||
| 511 | }; | 522 | }; |
| 512 | 523 | ||
| 513 | enum hid_type { | 524 | enum hid_type { |
| @@ -864,7 +875,9 @@ void hid_output_report(struct hid_report *report, __u8 *data); | |||
| 864 | void __hid_request(struct hid_device *hid, struct hid_report *rep, int reqtype); | 875 | void __hid_request(struct hid_device *hid, struct hid_report *rep, int reqtype); |
| 865 | u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags); | 876 | u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags); |
| 866 | struct hid_device *hid_allocate_device(void); | 877 | struct hid_device *hid_allocate_device(void); |
| 867 | struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id); | 878 | struct hid_report *hid_register_report(struct hid_device *device, |
| 879 | unsigned int type, unsigned int id, | ||
| 880 | unsigned int application); | ||
| 868 | int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size); | 881 | int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size); |
| 869 | struct hid_report *hid_validate_values(struct hid_device *hid, | 882 | struct hid_report *hid_validate_values(struct hid_device *hid, |
| 870 | unsigned int type, unsigned int id, | 883 | unsigned int type, unsigned int id, |
