Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
[firefly-linux-kernel-4.4.55.git] / drivers / hid / hid-input.c
index a713e6211419c880ddd0a39597b78f16ad84919a..e7e8b19a928433becdfc7455e2b05733cf763736 100644 (file)
@@ -350,9 +350,9 @@ static int hidinput_get_battery_property(struct power_supply *psy,
                        ret = -ENOMEM;
                        break;
                }
-               ret = dev->hid_get_raw_report(dev, dev->battery_report_id,
-                                             buf, 2,
-                                             dev->battery_report_type);
+               ret = hid_hw_raw_request(dev, dev->battery_report_id, buf, 2,
+                                        dev->battery_report_type,
+                                        HID_REQ_GET_REPORT);
 
                if (ret != 2) {
                        ret = -ENODATA;
@@ -789,10 +789,13 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
                case 0x199: map_key_clear(KEY_CHAT);            break;
                case 0x19c: map_key_clear(KEY_LOGOFF);          break;
                case 0x19e: map_key_clear(KEY_COFFEE);          break;
+               case 0x1a3: map_key_clear(KEY_NEXT);            break;
+               case 0x1a4: map_key_clear(KEY_PREVIOUS);        break;
                case 0x1a6: map_key_clear(KEY_HELP);            break;
                case 0x1a7: map_key_clear(KEY_DOCUMENTS);       break;
                case 0x1ab: map_key_clear(KEY_SPELLCHECK);      break;
                case 0x1ae: map_key_clear(KEY_KEYBOARD);        break;
+               case 0x1b4: map_key_clear(KEY_FILE);            break;
                case 0x1b6: map_key_clear(KEY_IMAGES);          break;
                case 0x1b7: map_key_clear(KEY_AUDIO);           break;
                case 0x1b8: map_key_clear(KEY_VIDEO);           break;
@@ -1150,7 +1153,7 @@ static void hidinput_led_worker(struct work_struct *work)
                                              led_work);
        struct hid_field *field;
        struct hid_report *report;
-       int len;
+       int len, ret;
        __u8 *buf;
 
        field = hidinput_get_led_field(hid);
@@ -1184,7 +1187,10 @@ static void hidinput_led_worker(struct work_struct *work)
 
        hid_output_report(report, buf);
        /* synchronous output report */
-       hid->hid_output_raw_report(hid, buf, len, HID_OUTPUT_REPORT);
+       ret = hid_hw_output_report(hid, buf, len);
+       if (ret == -ENOSYS)
+               hid_hw_raw_request(hid, report->id, buf, len, HID_OUTPUT_REPORT,
+                               HID_REQ_SET_REPORT);
        kfree(buf);
 }
 
@@ -1263,10 +1269,7 @@ static struct hid_input *hidinput_allocate(struct hid_device *hid)
        }
 
        input_set_drvdata(input_dev, hid);
-       if (hid->ll_driver->hidinput_input_event)
-               input_dev->event = hid->ll_driver->hidinput_input_event;
-       else if (hid->ll_driver->request || hid->hid_output_raw_report)
-               input_dev->event = hidinput_input_event;
+       input_dev->event = hidinput_input_event;
        input_dev->open = hidinput_open;
        input_dev->close = hidinput_close;
        input_dev->setkeycode = hidinput_setkeycode;