diff options
Diffstat (limited to 'include/linux/hid.h')
| -rw-r--r-- | include/linux/hid.h | 36 | 
1 files changed, 18 insertions, 18 deletions
diff --git a/include/linux/hid.h b/include/linux/hid.h index 3a95da60fd3..449fa385703 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -317,7 +317,6 @@ struct hid_item {  #define HID_QUIRK_BADPAD			0x00000020  #define HID_QUIRK_MULTI_INPUT			0x00000040  #define HID_QUIRK_HIDINPUT_FORCE		0x00000080 -#define HID_QUIRK_MULTITOUCH			0x00000100  #define HID_QUIRK_SKIP_OUTPUT_REPORTS		0x00010000  #define HID_QUIRK_FULLSPEED_INTERVAL		0x10000000  #define HID_QUIRK_NO_INIT_REPORTS		0x20000000 @@ -325,6 +324,12 @@ struct hid_item {  #define HID_QUIRK_NO_INPUT_SYNC			0x80000000  /* + * HID device groups + */ +#define HID_GROUP_GENERIC			0x0001 +#define HID_GROUP_MULTITOUCH			0x0002 + +/*   * This is the global environment of the parser. This information is   * persistent for main-items. The global environment can be saved and   * restored with PUSH/POP statements. @@ -467,6 +472,8 @@ struct hid_driver;  struct hid_ll_driver;  struct hid_device {							/* device report descriptor */ +	__u8 *dev_rdesc; +	unsigned dev_rsize;  	__u8 *rdesc;  	unsigned rsize;  	struct hid_collection *collection;				/* List of HID collections */ @@ -474,6 +481,7 @@ struct hid_device {							/* device report descriptor */  	unsigned maxcollection;						/* Number of parsed collections */  	unsigned maxapplication;					/* Number of applications */  	__u16 bus;							/* BUS ID */ +	__u16 group;							/* Report group */  	__u32 vendor;							/* Vendor ID */  	__u32 product;							/* Product ID */  	__u32 version;							/* HID version */ @@ -578,12 +586,12 @@ struct hid_descriptor {  	struct hid_class_descriptor desc[1];  } __attribute__ ((packed)); -#define HID_DEVICE(b, ven, prod) \ -	.bus = (b), \ -	.vendor = (ven), .product = (prod) - -#define HID_USB_DEVICE(ven, prod)	HID_DEVICE(BUS_USB, ven, prod) -#define HID_BLUETOOTH_DEVICE(ven, prod)	HID_DEVICE(BUS_BLUETOOTH, ven, prod) +#define HID_DEVICE(b, g, ven, prod)					\ +	.bus = (b), .group = (g), .vendor = (ven), .product = (prod) +#define HID_USB_DEVICE(ven, prod)				\ +	.bus = BUS_USB, .vendor = (ven), .product = (prod) +#define HID_BLUETOOTH_DEVICE(ven, prod)					\ +	.bus = BUS_BLUETOOTH, .vendor = (ven), .product = (prod)  #define HID_REPORT_ID(rep) \  	.report_type = (rep) @@ -735,6 +743,7 @@ void hid_output_report(struct hid_report *report, __u8 *data);  struct hid_device *hid_allocate_device(void);  struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id);  int hid_parse_report(struct hid_device *hid, __u8 *start, unsigned size); +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);  void hid_disconnect(struct hid_device *hid); @@ -805,16 +814,7 @@ static inline void hid_map_usage_clear(struct hid_input *hidinput,   */  static inline int __must_check hid_parse(struct hid_device *hdev)  { -	int ret; - -	if (hdev->status & HID_STAT_PARSED) -		return 0; - -	ret = hdev->ll_driver->parse(hdev); -	if (!ret) -		hdev->status |= HID_STAT_PARSED; - -	return ret; +	return hid_open_report(hdev);  }  /** @@ -896,7 +896,7 @@ static inline int hid_hw_power(struct hid_device *hdev, int level)  	return hdev->ll_driver->power ? hdev->ll_driver->power(hdev, level) : 0;  } -void hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size, +int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,  		int interrupt);  extern int hid_generic_init(void);  |