Merge branches 'for-3.15/upstream-fixes' and 'for-3.16/upstream' into for-linus
authorJiri Kosina <jkosina@suse.cz>
Wed, 4 Jun 2014 11:09:01 +0000 (13:09 +0200)
committerJiri Kosina <jkosina@suse.cz>
Wed, 4 Jun 2014 11:09:01 +0000 (13:09 +0200)
Conflicts:
drivers/hid/hid-sensor-hub.c

1  2 
drivers/hid/hid-core.c
drivers/hid/hid-ids.h
drivers/hid/hid-sensor-hub.c
drivers/hid/usbhid/hid-quirks.c

diff --combined drivers/hid/hid-core.c
@@@ -842,17 -842,7 +842,17 @@@ struct hid_report *hid_validate_values(
         * ->numbered being checked, which may not always be the case when
         * drivers go to access report values.
         */
 -      report = hid->report_enum[type].report_id_hash[id];
 +      if (id == 0) {
 +              /*
 +               * Validating on id 0 means we should examine the first
 +               * report in the list.
 +               */
 +              report = list_entry(
 +                              hid->report_enum[type].report_list.next,
 +                              struct hid_report, list);
 +      } else {
 +              report = hid->report_enum[type].report_id_hash[id];
 +      }
        if (!report) {
                hid_err(hid, "missing %s %u\n", hid_report_names[type], id);
                return NULL;
@@@ -1263,8 -1253,7 +1263,8 @@@ EXPORT_SYMBOL_GPL(hid_output_report)
  
  static int hid_report_len(struct hid_report *report)
  {
 -      return ((report->size - 1) >> 3) + 1 + (report->id > 0) + 7;
 +      /* equivalent to DIV_ROUND_UP(report->size, 8) + !!(report->id > 0) */
 +      return ((report->size - 1) >> 3) + 1 + (report->id > 0);
  }
  
  /*
@@@ -1277,7 -1266,7 +1277,7 @@@ u8 *hid_alloc_report_buf(struct hid_rep
         * of implement() working on 8 byte chunks
         */
  
 -      int len = hid_report_len(report);
 +      int len = hid_report_len(report) + 7;
  
        return kmalloc(len, flags);
  }
@@@ -1878,7 -1867,11 +1878,11 @@@ static const struct hid_device_id hid_h
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_RYOS_MK_PRO) },
        { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_SAVU) },
  #endif
+ #if IS_ENABLED(CONFIG_HID_SAITEK)
        { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_PS1000) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RAT7) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_MMO7) },
+ #endif
        { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_IR_REMOTE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SAMSUNG, USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE) },
        { HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) },
diff --combined drivers/hid/hid-ids.h
  
  #define USB_VENDOR_ID_DREAM_CHEEKY    0x1d34
  
 +#define USB_VENDOR_ID_ELITEGROUP      0x03fc
 +#define USB_DEVICE_ID_ELITEGROUP_05D8 0x05d8
 +
  #define USB_VENDOR_ID_ELO             0x04E7
  #define USB_DEVICE_ID_ELO_TS2515      0x0022
  #define USB_DEVICE_ID_ELO_TS2700      0x0020
  
  #define USB_VENDOR_ID_STM_0             0x0483
  #define USB_DEVICE_ID_STM_HID_SENSOR    0x91d1
+ #define USB_DEVICE_ID_STM_HID_SENSOR_1  0x9100
  
  #define USB_VENDOR_ID_ION             0x15e4
  #define USB_DEVICE_ID_ICADE           0x0132
  #define USB_DEVICE_ID_MS_PRESENTER_8K_USB     0x0713
  #define USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K     0x0730
  #define USB_DEVICE_ID_MS_COMFORT_MOUSE_4500   0x076c
+ #define USB_DEVICE_ID_MS_SURFACE_PRO_2   0x0799
+ #define USB_DEVICE_ID_MS_TOUCH_COVER_2   0x07a7
+ #define USB_DEVICE_ID_MS_TYPE_COVER_2    0x07a9
  
  #define USB_VENDOR_ID_MOJO            0x8282
  #define USB_DEVICE_ID_RETRO_ADAPTER   0x3201
  #define USB_VENDOR_ID_SAITEK          0x06a3
  #define USB_DEVICE_ID_SAITEK_RUMBLEPAD        0xff17
  #define USB_DEVICE_ID_SAITEK_PS1000   0x0621
+ #define USB_DEVICE_ID_SAITEK_RAT7     0x0cd7
+ #define USB_DEVICE_ID_SAITEK_MMO7     0x0cd0
  
  #define USB_VENDOR_ID_SAMSUNG         0x0419
  #define USB_DEVICE_ID_SAMSUNG_IR_REMOTE       0x0001
  #define USB_DEVICE_ID_SAMSUNG_WIRELESS_KBD_MOUSE      0x0600
  
+ #define USB_VENDOR_ID_SEMICO                  0x1a2c
+ #define USB_DEVICE_ID_SEMICO_USB_KEYKOARD     0x0023
  #define USB_VENDOR_ID_SENNHEISER      0x1395
  #define USB_DEVICE_ID_SENNHEISER_BTD500USB    0x002c
  
  #define USB_DEVICE_ID_SYNAPTICS_LTS2  0x1d10
  #define USB_DEVICE_ID_SYNAPTICS_HD    0x0ac3
  #define USB_DEVICE_ID_SYNAPTICS_QUAD_HD       0x1ac3
 +#define USB_DEVICE_ID_SYNAPTICS_TP_V103       0x5710
 +
 +#define USB_VENDOR_ID_TEXAS_INSTRUMENTS       0x2047
 +#define USB_DEVICE_ID_TEXAS_INSTRUMENTS_LENOVO_YOGA   0x0855
  
  #define USB_VENDOR_ID_THINGM          0x27b8
  #define USB_DEVICE_ID_BLINK1          0x01ed
@@@ -705,12 -705,21 +705,21 @@@ static const struct hid_device_id senso
        { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_INTEL_1,
                        USB_DEVICE_ID_INTEL_HID_SENSOR_1),
                        .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
 -      { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_STM_0,
 -                      USB_DEVICE_ID_STM_HID_SENSOR),
 -                      .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
+       { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_MICROSOFT,
+                       USB_DEVICE_ID_MS_SURFACE_PRO_2),
+                       .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
+       { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_MICROSOFT,
+                       USB_DEVICE_ID_MS_TOUCH_COVER_2),
+                       .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
+       { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_MICROSOFT,
+                       USB_DEVICE_ID_MS_TYPE_COVER_2),
+                       .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
        { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_STM_0,
-                       USB_DEVICE_ID_STM_HID_SENSOR),
+                       USB_DEVICE_ID_STM_HID_SENSOR_1),
                        .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
 +      { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, USB_VENDOR_ID_TEXAS_INSTRUMENTS,
 +                      USB_DEVICE_ID_TEXAS_INSTRUMENTS_LENOVO_YOGA),
 +                      .driver_data = HID_SENSOR_HUB_ENUM_QUIRK},
        { HID_DEVICE(HID_BUS_ANY, HID_GROUP_SENSOR_HUB, HID_ANY_ID,
                     HID_ANY_ID) },
        { }
@@@ -115,11 -115,11 +115,12 @@@ static const struct hid_blacklist 
        { USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_MOUSEPEN_I608X, HID_QUIRK_MULTI_INPUT },
        { USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_EASYPEN_M610X, HID_QUIRK_MULTI_INPUT },
        { USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_DUOSENSE, HID_QUIRK_NO_INIT_REPORTS },
+       { USB_VENDOR_ID_SEMICO, USB_DEVICE_ID_SEMICO_USB_KEYKOARD, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS1, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_LTS2, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_HD, HID_QUIRK_NO_INIT_REPORTS },
        { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD, HID_QUIRK_NO_INIT_REPORTS },
 +      { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103, HID_QUIRK_NO_INIT_REPORTS },
  
        { 0, 0 }
  };