diff options
Diffstat (limited to 'drivers/hid/hid-input.c')
-rw-r--r-- | drivers/hid/hid-input.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index a713e6211419..e7e8b19a9284 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c | |||
@@ -350,9 +350,9 @@ static int hidinput_get_battery_property(struct power_supply *psy, | |||
350 | ret = -ENOMEM; | 350 | ret = -ENOMEM; |
351 | break; | 351 | break; |
352 | } | 352 | } |
353 | ret = dev->hid_get_raw_report(dev, dev->battery_report_id, | 353 | ret = hid_hw_raw_request(dev, dev->battery_report_id, buf, 2, |
354 | buf, 2, | 354 | dev->battery_report_type, |
355 | dev->battery_report_type); | 355 | HID_REQ_GET_REPORT); |
356 | 356 | ||
357 | if (ret != 2) { | 357 | if (ret != 2) { |
358 | ret = -ENODATA; | 358 | ret = -ENODATA; |
@@ -789,10 +789,13 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
789 | case 0x199: map_key_clear(KEY_CHAT); break; | 789 | case 0x199: map_key_clear(KEY_CHAT); break; |
790 | case 0x19c: map_key_clear(KEY_LOGOFF); break; | 790 | case 0x19c: map_key_clear(KEY_LOGOFF); break; |
791 | case 0x19e: map_key_clear(KEY_COFFEE); break; | 791 | case 0x19e: map_key_clear(KEY_COFFEE); break; |
792 | case 0x1a3: map_key_clear(KEY_NEXT); break; | ||
793 | case 0x1a4: map_key_clear(KEY_PREVIOUS); break; | ||
792 | case 0x1a6: map_key_clear(KEY_HELP); break; | 794 | case 0x1a6: map_key_clear(KEY_HELP); break; |
793 | case 0x1a7: map_key_clear(KEY_DOCUMENTS); break; | 795 | case 0x1a7: map_key_clear(KEY_DOCUMENTS); break; |
794 | case 0x1ab: map_key_clear(KEY_SPELLCHECK); break; | 796 | case 0x1ab: map_key_clear(KEY_SPELLCHECK); break; |
795 | case 0x1ae: map_key_clear(KEY_KEYBOARD); break; | 797 | case 0x1ae: map_key_clear(KEY_KEYBOARD); break; |
798 | case 0x1b4: map_key_clear(KEY_FILE); break; | ||
796 | case 0x1b6: map_key_clear(KEY_IMAGES); break; | 799 | case 0x1b6: map_key_clear(KEY_IMAGES); break; |
797 | case 0x1b7: map_key_clear(KEY_AUDIO); break; | 800 | case 0x1b7: map_key_clear(KEY_AUDIO); break; |
798 | case 0x1b8: map_key_clear(KEY_VIDEO); break; | 801 | case 0x1b8: map_key_clear(KEY_VIDEO); break; |
@@ -1150,7 +1153,7 @@ static void hidinput_led_worker(struct work_struct *work) | |||
1150 | led_work); | 1153 | led_work); |
1151 | struct hid_field *field; | 1154 | struct hid_field *field; |
1152 | struct hid_report *report; | 1155 | struct hid_report *report; |
1153 | int len; | 1156 | int len, ret; |
1154 | __u8 *buf; | 1157 | __u8 *buf; |
1155 | 1158 | ||
1156 | field = hidinput_get_led_field(hid); | 1159 | field = hidinput_get_led_field(hid); |
@@ -1184,7 +1187,10 @@ static void hidinput_led_worker(struct work_struct *work) | |||
1184 | 1187 | ||
1185 | hid_output_report(report, buf); | 1188 | hid_output_report(report, buf); |
1186 | /* synchronous output report */ | 1189 | /* synchronous output report */ |
1187 | hid->hid_output_raw_report(hid, buf, len, HID_OUTPUT_REPORT); | 1190 | ret = hid_hw_output_report(hid, buf, len); |
1191 | if (ret == -ENOSYS) | ||
1192 | hid_hw_raw_request(hid, report->id, buf, len, HID_OUTPUT_REPORT, | ||
1193 | HID_REQ_SET_REPORT); | ||
1188 | kfree(buf); | 1194 | kfree(buf); |
1189 | } | 1195 | } |
1190 | 1196 | ||
@@ -1263,10 +1269,7 @@ static struct hid_input *hidinput_allocate(struct hid_device *hid) | |||
1263 | } | 1269 | } |
1264 | 1270 | ||
1265 | input_set_drvdata(input_dev, hid); | 1271 | input_set_drvdata(input_dev, hid); |
1266 | if (hid->ll_driver->hidinput_input_event) | 1272 | input_dev->event = hidinput_input_event; |
1267 | input_dev->event = hid->ll_driver->hidinput_input_event; | ||
1268 | else if (hid->ll_driver->request || hid->hid_output_raw_report) | ||
1269 | input_dev->event = hidinput_input_event; | ||
1270 | input_dev->open = hidinput_open; | 1273 | input_dev->open = hidinput_open; |
1271 | input_dev->close = hidinput_close; | 1274 | input_dev->close = hidinput_close; |
1272 | input_dev->setkeycode = hidinput_setkeycode; | 1275 | input_dev->setkeycode = hidinput_setkeycode; |