Lines Matching refs:hid
76 return (usage->hid & (HID_USAGE_PAGE | HID_USAGE)) == scancode; in match_scancode()
97 static struct hid_usage *hidinput_find_key(struct hid_device *hid, in hidinput_find_key() argument
107 list_for_each_entry(report, &hid->report_enum[k].report_list, list) { in hidinput_find_key()
126 static struct hid_usage *hidinput_locate_usage(struct hid_device *hid, in hidinput_locate_usage() argument
134 usage = hidinput_find_key(hid, match_index, ke->index, index); in hidinput_locate_usage()
136 usage = hidinput_find_key(hid, match_scancode, scancode, index); in hidinput_locate_usage()
146 struct hid_device *hid = input_get_drvdata(dev); in hidinput_getkeycode() local
150 usage = hidinput_locate_usage(hid, ke, &index); in hidinput_getkeycode()
155 scancode = usage->hid & (HID_USAGE_PAGE | HID_USAGE); in hidinput_getkeycode()
168 struct hid_device *hid = input_get_drvdata(dev); in hidinput_setkeycode() local
171 usage = hidinput_locate_usage(hid, ke, NULL); in hidinput_setkeycode()
180 usage->code, usage->hid); in hidinput_setkeycode()
186 if (hidinput_find_key(hid, match_keycode, *old_keycode, NULL)) in hidinput_setkeycode()
405 if (field->usage->hid != HID_DC_BATTERYSTRENGTH) in hidinput_setup_battery()
507 (usage->hid & HID_USAGE_PAGE) != HID_UP_LED) { in hidinput_configure_usage()
520 switch (usage->hid & HID_USAGE_PAGE) { in hidinput_configure_usage()
527 if ((usage->hid & HID_USAGE) < 256) { in hidinput_configure_usage()
528 if (!hid_keyboard[usage->hid & HID_USAGE]) goto ignore; in hidinput_configure_usage()
529 map_key_clear(hid_keyboard[usage->hid & HID_USAGE]); in hidinput_configure_usage()
536 code = ((usage->hid - 1) & HID_USAGE); in hidinput_configure_usage()
567 switch (usage->hid & 0xffff) { in hidinput_configure_usage()
578 if ((usage->hid & 0xf0) == 0x80) { /* SystemControl */ in hidinput_configure_usage()
579 switch (usage->hid & 0xf) { in hidinput_configure_usage()
600 if ((usage->hid & 0xf0) == 0x90) { /* D-pad */ in hidinput_configure_usage()
601 switch (usage->hid) { in hidinput_configure_usage()
616 switch (usage->hid) { in hidinput_configure_usage()
621 map_rel(usage->hid & 0xf); in hidinput_configure_usage()
623 map_abs_clear(usage->hid & 0xf); in hidinput_configure_usage()
628 map_rel(usage->hid & 0xf); in hidinput_configure_usage()
630 map_abs(usage->hid & 0xf); in hidinput_configure_usage()
648 switch (usage->hid & 0xffff) { /* HID-Value: */ in hidinput_configure_usage()
666 switch (usage->hid & 0xff) { in hidinput_configure_usage()
727 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
750 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
929 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
948 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
966 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
1057 void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, _… in hidinput_hid_event() argument
1060 unsigned *quirks = &hid->quirks; in hidinput_hid_event()
1080 if (usage->hid == (HID_UP_DIGITIZER | 0x003c)) { /* Invert */ in hidinput_hid_event()
1085 if (usage->hid == (HID_UP_DIGITIZER | 0x0032)) { /* InRange */ in hidinput_hid_event()
1095 if (usage->hid == (HID_UP_DIGITIZER | 0x0030) && (*quirks & HID_QUIRK_NOTOUCH)) { /* Pressure */ in hidinput_hid_event()
1101 if (usage->hid == (HID_UP_PID | 0x83UL)) { /* Simultaneous Effects Max */ in hidinput_hid_event()
1106 if (usage->hid == (HID_UP_PID | 0x7fUL)) { in hidinput_hid_event()
1164 input_event(input, EV_MSC, MSC_SCAN, usage->hid); in hidinput_hid_event()
1172 void hidinput_report_event(struct hid_device *hid, struct hid_report *report) in hidinput_report_event() argument
1176 if (hid->quirks & HID_QUIRK_NO_INPUT_SYNC) in hidinput_report_event()
1179 list_for_each_entry(hidinput, &hid->inputs, list) in hidinput_report_event()
1184 int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_fi… in hidinput_find_field() argument
1189 list_for_each_entry(report, &hid->report_enum[HID_OUTPUT_REPORT].report_list, list) { in hidinput_find_field()
1201 struct hid_field *hidinput_get_led_field(struct hid_device *hid) in hidinput_get_led_field() argument
1208 &hid->report_enum[HID_OUTPUT_REPORT].report_list, in hidinput_get_led_field()
1221 unsigned int hidinput_count_leds(struct hid_device *hid) in hidinput_count_leds() argument
1229 &hid->report_enum[HID_OUTPUT_REPORT].report_list, in hidinput_count_leds()
1245 struct hid_device *hid = container_of(work, struct hid_device, in hidinput_led_worker() local
1252 field = hidinput_get_led_field(hid); in hidinput_led_worker()
1272 if (hid->ll_driver->request) in hidinput_led_worker()
1273 return hid->ll_driver->request(hid, report, HID_REQ_SET_REPORT); in hidinput_led_worker()
1283 ret = hid_hw_output_report(hid, buf, len); in hidinput_led_worker()
1285 hid_hw_raw_request(hid, report->id, buf, len, HID_OUTPUT_REPORT, in hidinput_led_worker()
1293 struct hid_device *hid = input_get_drvdata(dev); in hidinput_input_event() local
1303 if ((offset = hidinput_find_field(hid, type, code, &field)) == -1) { in hidinput_input_event()
1310 schedule_work(&hid->led_work); in hidinput_input_event()
1316 struct hid_device *hid = input_get_drvdata(dev); in hidinput_open() local
1318 return hid_hw_open(hid); in hidinput_open()
1323 struct hid_device *hid = input_get_drvdata(dev); in hidinput_close() local
1325 hid_hw_close(hid); in hidinput_close()
1328 static void report_features(struct hid_device *hid) in report_features() argument
1330 struct hid_driver *drv = hid->driver; in report_features()
1335 rep_enum = &hid->report_enum[HID_FEATURE_REPORT]; in report_features()
1344 hidinput_setup_battery(hid, HID_FEATURE_REPORT, rep->field[i]); in report_features()
1347 drv->feature_mapping(hid, rep->field[i], in report_features()
1353 static struct hid_input *hidinput_allocate(struct hid_device *hid) in hidinput_allocate() argument
1360 hid_err(hid, "Out of memory during hid input probe\n"); in hidinput_allocate()
1364 input_set_drvdata(input_dev, hid); in hidinput_allocate()
1371 input_dev->name = hid->name; in hidinput_allocate()
1372 input_dev->phys = hid->phys; in hidinput_allocate()
1373 input_dev->uniq = hid->uniq; in hidinput_allocate()
1374 input_dev->id.bustype = hid->bus; in hidinput_allocate()
1375 input_dev->id.vendor = hid->vendor; in hidinput_allocate()
1376 input_dev->id.product = hid->product; in hidinput_allocate()
1377 input_dev->id.version = hid->version; in hidinput_allocate()
1378 input_dev->dev.parent = &hid->dev; in hidinput_allocate()
1380 list_add_tail(&hidinput->list, &hid->inputs); in hidinput_allocate()
1420 static void hidinput_cleanup_hidinput(struct hid_device *hid, in hidinput_cleanup_hidinput() argument
1431 hid->quirks & HID_QUIRK_SKIP_OUTPUT_REPORTS) in hidinput_cleanup_hidinput()
1434 list_for_each_entry(report, &hid->report_enum[k].report_list, in hidinput_cleanup_hidinput()
1452 int hidinput_connect(struct hid_device *hid, unsigned int force) in hidinput_connect() argument
1454 struct hid_driver *drv = hid->driver; in hidinput_connect()
1459 INIT_LIST_HEAD(&hid->inputs); in hidinput_connect()
1460 INIT_WORK(&hid->led_work, hidinput_led_worker); in hidinput_connect()
1463 for (i = 0; i < hid->maxcollection; i++) { in hidinput_connect()
1464 struct hid_collection *col = &hid->collection[i]; in hidinput_connect()
1471 if (i == hid->maxcollection) in hidinput_connect()
1475 report_features(hid); in hidinput_connect()
1479 hid->quirks & HID_QUIRK_SKIP_OUTPUT_REPORTS) in hidinput_connect()
1482 list_for_each_entry(report, &hid->report_enum[k].report_list, list) { in hidinput_connect()
1488 hidinput = hidinput_allocate(hid); in hidinput_connect()
1498 if ((hid->quirks & HID_QUIRK_NO_EMPTY_INPUT) && in hidinput_connect()
1502 if (hid->quirks & HID_QUIRK_MULTI_INPUT) { in hidinput_connect()
1510 drv->input_configured(hid, hidinput); in hidinput_connect()
1518 if (hidinput && (hid->quirks & HID_QUIRK_NO_EMPTY_INPUT) && in hidinput_connect()
1521 hidinput_cleanup_hidinput(hid, hidinput); in hidinput_connect()
1525 if (list_empty(&hid->inputs)) { in hidinput_connect()
1526 hid_err(hid, "No inputs registered, leaving\n"); in hidinput_connect()
1532 drv->input_configured(hid, hidinput); in hidinput_connect()
1545 hidinput_disconnect(hid); in hidinput_connect()
1551 void hidinput_disconnect(struct hid_device *hid) in hidinput_disconnect() argument
1555 hidinput_cleanup_battery(hid); in hidinput_disconnect()
1557 list_for_each_entry_safe(hidinput, next, &hid->inputs, list) { in hidinput_disconnect()
1567 cancel_work_sync(&hid->led_work); in hidinput_disconnect()