aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-input.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hid/hid-input.c')
-rw-r--r--drivers/hid/hid-input.c21
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;