Merge branches 'for-3.19/hid-report-len', 'for-3.19/i2c-hid', 'for-3.19/lenovo',...
[cascardo/linux.git] / include / linux / hid.h
index 78ea9bf..06c4607 100644 (file)
@@ -234,6 +234,33 @@ struct hid_item {
 #define HID_DG_BARRELSWITCH    0x000d0044
 #define HID_DG_ERASER          0x000d0045
 #define HID_DG_TABLETPICK      0x000d0046
+
+#define HID_CP_CONSUMERCONTROL 0x000c0001
+#define HID_CP_NUMERICKEYPAD   0x000c0002
+#define HID_CP_PROGRAMMABLEBUTTONS     0x000c0003
+#define HID_CP_MICROPHONE      0x000c0004
+#define HID_CP_HEADPHONE       0x000c0005
+#define HID_CP_GRAPHICEQUALIZER        0x000c0006
+#define HID_CP_FUNCTIONBUTTONS 0x000c0036
+#define HID_CP_SELECTION       0x000c0080
+#define HID_CP_MEDIASELECTION  0x000c0087
+#define HID_CP_SELECTDISC      0x000c00ba
+#define HID_CP_PLAYBACKSPEED   0x000c00f1
+#define HID_CP_PROXIMITY       0x000c0109
+#define HID_CP_SPEAKERSYSTEM   0x000c0160
+#define HID_CP_CHANNELLEFT     0x000c0161
+#define HID_CP_CHANNELRIGHT    0x000c0162
+#define HID_CP_CHANNELCENTER   0x000c0163
+#define HID_CP_CHANNELFRONT    0x000c0164
+#define HID_CP_CHANNELCENTERFRONT      0x000c0165
+#define HID_CP_CHANNELSIDE     0x000c0166
+#define HID_CP_CHANNELSURROUND 0x000c0167
+#define HID_CP_CHANNELLOWFREQUENCYENHANCEMENT  0x000c0168
+#define HID_CP_CHANNELTOP      0x000c0169
+#define HID_CP_CHANNELUNKNOWN  0x000c016a
+#define HID_CP_APPLICATIONLAUNCHBUTTONS        0x000c0180
+#define HID_CP_GENERICGUIAPPLICATIONCONTROLS   0x000c0200
+
 #define HID_DG_CONFIDENCE      0x000d0047
 #define HID_DG_WIDTH           0x000d0048
 #define HID_DG_HEIGHT          0x000d0049
@@ -312,11 +339,8 @@ struct hid_item {
  * Vendor specific HID device groups
  */
 #define HID_GROUP_RMI                          0x0100
-
-/*
- * Vendor specific HID device groups
- */
 #define HID_GROUP_WACOM                                0x0101
+#define HID_GROUP_LOGITECH_DJ_DEVICE           0x0102
 
 /*
  * This is the global environment of the parser. This information is
@@ -1063,6 +1087,17 @@ static inline void hid_hw_wait(struct hid_device *hdev)
                hdev->ll_driver->wait(hdev);
 }
 
+/**
+ * hid_report_len - calculate the report length
+ *
+ * @report: the report we want to know the length
+ */
+static inline int hid_report_len(struct hid_report *report)
+{
+       /* equivalent to DIV_ROUND_UP(report->size, 8) + !!(report->id > 0) */
+       return ((report->size - 1) >> 3) + 1 + (report->id > 0);
+}
+
 int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,
                int interrupt);