aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-06-08 13:29:26 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-06-08 13:29:26 -0400
commitfdea70d26a471e002f2afc3a48821323b699f1e6 (patch)
tree47d9697bafcb4d2854671110758b2570b5bce3a3 /include/linux
parent9eb86c75494ee6a5f789bc6c11b43feff2ccfeb6 (diff)
parent06d8b9067c9bb9d65c7479506e682b211735fa1a (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.h19
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
464struct hid_report { 470struct 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
506struct hid_input { 515struct 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
513enum hid_type { 524enum hid_type {
@@ -864,7 +875,9 @@ void hid_output_report(struct hid_report *report, __u8 *data);
864void __hid_request(struct hid_device *hid, struct hid_report *rep, int reqtype); 875void __hid_request(struct hid_device *hid, struct hid_report *rep, int reqtype);
865u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags); 876u8 *hid_alloc_report_buf(struct hid_report *report, gfp_t flags);
866struct hid_device *hid_allocate_device(void); 877struct hid_device *hid_allocate_device(void);
867struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id); 878struct hid_report *hid_register_report(struct hid_device *device,
879 unsigned int type, unsigned int id,
880 unsigned int application);
868int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size); 881int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size);
869struct hid_report *hid_validate_values(struct hid_device *hid, 882struct hid_report *hid_validate_values(struct hid_device *hid,
870 unsigned int type, unsigned int id, 883 unsigned int type, unsigned int id,