diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-01-05 17:53:40 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-01-05 17:53:40 -0800 | 
| commit | cf26057a9441173ad552e90cea3344607075c9ad (patch) | |
| tree | 52410b934b7270e49df1917c2534cc40e30664bc /include | |
| parent | 1686cc1a31f45a3fd090e5d0c6fce777422e13fa (diff) | |
| parent | bd8879faafe6d057237461c4d58d8b0d37b9e3ee (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid
Pull HID updates from Jiri Kosina:
 - high-resolution scrolling support that gracefully handles differences
   between MS and Logitech implementations in HW, from Peter Hutterer
   and Harry Cutts
 - MSI IRQ support for intel-ish driver, from Song Hongyan
 - support for new hardware (Cougar 700K, Odys Winbook 13, ASUS FX503VD,
   ASUS T101HA) from Daniel M. Lambea, Hans de Goede and Aleix Roca
   Nonell
 - other small assorted fixups
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid: (22 commits)
  HID: i2c-hid: Add Odys Winbook 13 to descriptor override
  HID: lenovo: Add checks to fix of_led_classdev_register
  HID: intel-ish-hid: add MSI interrupt support
  HID: debug: Change to use DEFINE_SHOW_ATTRIBUTE macro
  HID: doc: fix wrong data structure reference for UHID_OUTPUT
  HID: intel-ish-hid: fixes incorrect error handling
  HID: asus: Add support for the ASUS T101HA keyboard dock
  HID: logitech: Use LDJ_DEVICE macro for existing Logitech mice
  HID: logitech: Enable high-resolution scrolling on Logitech mice
  HID: logitech: Add function to enable HID++ 1.0 "scrolling acceleration"
  HID: logitech-hidpp: fix typo, hiddpp to hidpp
  HID: input: use the Resolution Multiplier for high-resolution scrolling
  HID: core: process the Resolution Multiplier
  HID: core: store the collections as a basic tree
  Input: add `REL_WHEEL_HI_RES` and `REL_HWHEEL_HI_RES`
  HID: input: support Microsoft wireless radio control hotkey
  HID: use macros in IS_INPUT_APPLICATION
  HID: asus: Add support for the ASUS FX503VD laptop
  HID: asus: Add event handler to catch unmapped Asus Vendor UsagePage codes
  HID: cougar: Add support for Cougar 700K Gaming Keyboard
  ...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/hid.h | 17 | ||||
| -rw-r--r-- | include/uapi/linux/input-event-codes.h | 2 | 
2 files changed, 18 insertions, 1 deletions
| diff --git a/include/linux/hid.h b/include/linux/hid.h index a355d61940f2..d99287327ef2 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -219,6 +219,7 @@ struct hid_item {  #define HID_GD_VBRZ		0x00010045  #define HID_GD_VNO		0x00010046  #define HID_GD_FEATURE		0x00010047 +#define HID_GD_RESOLUTION_MULTIPLIER	0x00010048  #define HID_GD_SYSTEM_CONTROL	0x00010080  #define HID_GD_UP		0x00010090  #define HID_GD_DOWN		0x00010091 @@ -232,12 +233,14 @@ struct hid_item {  #define HID_DC_BATTERYSTRENGTH	0x00060020  #define HID_CP_CONSUMER_CONTROL	0x000c0001 +#define HID_CP_AC_PAN		0x000c0238  #define HID_DG_DIGITIZER	0x000d0001  #define HID_DG_PEN		0x000d0002  #define HID_DG_LIGHTPEN		0x000d0003  #define HID_DG_TOUCHSCREEN	0x000d0004  #define HID_DG_TOUCHPAD		0x000d0005 +#define HID_DG_WHITEBOARD	0x000d0006  #define HID_DG_STYLUS		0x000d0020  #define HID_DG_PUCK		0x000d0021  #define HID_DG_FINGER		0x000d0022 @@ -427,6 +430,7 @@ struct hid_local {   */  struct hid_collection { +	struct hid_collection *parent;  	unsigned type;  	unsigned usage;  	unsigned level; @@ -436,12 +440,16 @@ struct hid_usage {  	unsigned  hid;			/* hid usage code */  	unsigned  collection_index;	/* index into collection array */  	unsigned  usage_index;		/* index into usage array */ +	__s8	  resolution_multiplier;/* Effective Resolution Multiplier +					   (HUT v1.12, 4.3.1), default: 1 */  	/* hidinput data */ +	__s8	  wheel_factor;		/* 120/resolution_multiplier */  	__u16     code;			/* input driver code */  	__u8      type;			/* input driver type */  	__s8	  hat_min;		/* hat switch fun */  	__s8	  hat_max;		/* ditto */  	__s8	  hat_dir;		/* ditto */ +	__s16	  wheel_accumulated;	/* hi-res wheel */  };  struct hid_input; @@ -650,6 +658,7 @@ struct hid_parser {  	unsigned int         *collection_stack;  	unsigned int          collection_stack_ptr;  	unsigned int          collection_stack_size; +	struct hid_collection *active_collection;  	struct hid_device    *device;  	unsigned int          scan_flags;  }; @@ -836,7 +845,11 @@ static inline bool hid_is_using_ll_driver(struct hid_device *hdev,  /* Applications from HID Usage Tables 4/8/99 Version 1.1 */  /* We ignore a few input applications that are not widely used */ -#define IS_INPUT_APPLICATION(a) (((a >= 0x00010000) && (a <= 0x00010008)) || (a == 0x00010080) || (a == 0x000c0001) || ((a >= 0x000d0002) && (a <= 0x000d0006))) +#define IS_INPUT_APPLICATION(a) \ +		(((a >= HID_UP_GENDESK) && (a <= HID_GD_MULTIAXIS)) \ +		|| ((a >= HID_DG_PEN) && (a <= HID_DG_WHITEBOARD)) \ +		|| (a == HID_GD_SYSTEM_CONTROL) || (a == HID_CP_CONSUMER_CONTROL) \ +		|| (a == HID_GD_WIRELESS_RADIO_CTLS))  /* HID core API */ @@ -892,6 +905,8 @@ struct hid_report *hid_validate_values(struct hid_device *hid,  				       unsigned int type, unsigned int id,  				       unsigned int field_index,  				       unsigned int report_counts); + +void hid_setup_resolution_multiplier(struct hid_device *hid);  int hid_open_report(struct hid_device *device);  int hid_check_keys_pressed(struct hid_device *hid);  int hid_connect(struct hid_device *hid, unsigned int connect_mask); diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h index ae366b87426a..7f14d4a66c28 100644 --- a/include/uapi/linux/input-event-codes.h +++ b/include/uapi/linux/input-event-codes.h @@ -716,6 +716,8 @@   * the situation described above.   */  #define REL_RESERVED		0x0a +#define REL_WHEEL_HI_RES	0x0b +#define REL_HWHEEL_HI_RES	0x0c  #define REL_MAX			0x0f  #define REL_CNT			(REL_MAX+1) | 
