Lines Matching full:usage

52 	__u32 usage;			/* the HID usage associated */  member
56 unsigned int slot_overwrite; /* for globals: allows to set the usage
80 .usage = HID_DG_ERASER,
83 .usage = HID_DG_INVERT,
86 .usage = HID_DG_TIPSWITCH,
89 .usage = HID_DG_TIPPRESSURE,
92 .usage = HID_DG_INRANGE,
96 #define map_abs(c) hid_map_usage(hidinput, usage, &bit, &max, EV_ABS, (c))
97 #define map_rel(c) hid_map_usage(hidinput, usage, &bit, &max, EV_REL, (c))
98 #define map_key(c) hid_map_usage(hidinput, usage, &bit, &max, EV_KEY, (c))
99 #define map_led(c) hid_map_usage(hidinput, usage, &bit, &max, EV_LED, (c))
100 #define map_msc(c) hid_map_usage(hidinput, usage, &bit, &max, EV_MSC, (c))
102 #define map_abs_clear(c) hid_map_usage_clear(hidinput, usage, &bit, \
104 #define map_key_clear(c) hid_map_usage_clear(hidinput, usage, &bit, \
107 static bool match_scancode(struct hid_usage *usage, in match_scancode() argument
110 return (usage->hid & (HID_USAGE_PAGE | HID_USAGE)) == scancode; in match_scancode()
113 static bool match_keycode(struct hid_usage *usage, in match_keycode() argument
119 return (usage->type == EV_KEY && usage->code == keycode); in match_keycode()
122 static bool match_index(struct hid_usage *usage, in match_index() argument
128 typedef bool (*hid_usage_cmp_t)(struct hid_usage *usage,
138 struct hid_usage *usage; in hidinput_find_key() local
144 usage = report->field[i]->usage + j; in hidinput_find_key()
145 if (usage->type == EV_KEY || usage->type == 0) { in hidinput_find_key()
146 if (match(usage, cur_idx, value)) { in hidinput_find_key()
149 return usage; in hidinput_find_key()
164 struct hid_usage *usage; in hidinput_locate_usage() local
168 usage = hidinput_find_key(hid, match_index, ke->index, index); in hidinput_locate_usage()
170 usage = hidinput_find_key(hid, match_scancode, scancode, index); in hidinput_locate_usage()
172 usage = NULL; in hidinput_locate_usage()
174 return usage; in hidinput_locate_usage()
181 struct hid_usage *usage; in hidinput_getkeycode() local
184 usage = hidinput_locate_usage(hid, ke, &index); in hidinput_getkeycode()
185 if (usage) { in hidinput_getkeycode()
186 ke->keycode = usage->type == EV_KEY ? in hidinput_getkeycode()
187 usage->code : KEY_RESERVED; in hidinput_getkeycode()
189 scancode = usage->hid & (HID_USAGE_PAGE | HID_USAGE); in hidinput_getkeycode()
203 struct hid_usage *usage; in hidinput_setkeycode() local
205 usage = hidinput_locate_usage(hid, ke, NULL); in hidinput_setkeycode()
206 if (usage) { in hidinput_setkeycode()
207 *old_keycode = usage->type == EV_KEY ? in hidinput_setkeycode()
208 usage->code : KEY_RESERVED; in hidinput_setkeycode()
209 usage->type = EV_KEY; in hidinput_setkeycode()
210 usage->code = ke->keycode; in hidinput_setkeycode()
213 set_bit(usage->code, dev->keybit); in hidinput_setkeycode()
214 dbg_hid("Assigned keycode %d to HID usage code %x\n", in hidinput_setkeycode()
215 usage->code, usage->hid); in hidinput_setkeycode()
599 unsigned int usage, int value) in hidinput_update_battery_charge_status() argument
601 switch (usage) { in hidinput_update_battery_charge_status()
612 static void hidinput_update_battery(struct hid_device *dev, unsigned int usage, in hidinput_update_battery() argument
620 if (hidinput_update_battery_charge_status(dev, usage, value)) { in hidinput_update_battery()
651 static void hidinput_update_battery(struct hid_device *dev, unsigned int usage, in hidinput_update_battery() argument
658 unsigned int type, unsigned int usage) in hidinput_field_in_collection() argument
662 collection = &device->collection[field->usage->collection_index]; in hidinput_field_in_collection()
664 return collection->type == type && collection->usage == usage; in hidinput_field_in_collection()
668 struct hid_usage *usage, unsigned int usage_index) in hidinput_configure_usage() argument
688 (usage->hid & HID_USAGE_PAGE) != HID_UP_LED) { in hidinput_configure_usage()
694 if (usage->hid == hidinput_usages_priorities[i].usage) { in hidinput_configure_usage()
716 usage, &bit, &max); in hidinput_configure_usage()
723 switch (usage->hid & HID_USAGE_PAGE) { in hidinput_configure_usage()
730 if ((usage->hid & HID_USAGE) < 256) { in hidinput_configure_usage()
731 if (!hid_keyboard[usage->hid & HID_USAGE]) goto ignore; in hidinput_configure_usage()
732 map_key_clear(hid_keyboard[usage->hid & HID_USAGE]); in hidinput_configure_usage()
739 code = ((usage->hid - 1) & HID_USAGE); in hidinput_configure_usage()
781 switch (usage->hid & 0xffff) { in hidinput_configure_usage()
792 if ((usage->hid & 0xf0) == 0x80) { /* SystemControl */ in hidinput_configure_usage()
793 switch (usage->hid & 0xf) { in hidinput_configure_usage()
814 if ((usage->hid & 0xf0) == 0x90) { /* SystemControl & D-pad */ in hidinput_configure_usage()
815 switch (usage->hid) { in hidinput_configure_usage()
816 case HID_GD_UP: usage->hat_dir = 1; break; in hidinput_configure_usage()
817 case HID_GD_DOWN: usage->hat_dir = 5; break; in hidinput_configure_usage()
818 case HID_GD_RIGHT: usage->hat_dir = 3; break; in hidinput_configure_usage()
819 case HID_GD_LEFT: usage->hat_dir = 7; break; in hidinput_configure_usage()
825 if (usage->hid <= HID_GD_LEFT) { in hidinput_configure_usage()
835 if ((usage->hid & 0xf0) == 0xa0) { /* SystemControl */ in hidinput_configure_usage()
836 switch (usage->hid & 0xf) { in hidinput_configure_usage()
844 if ((usage->hid & 0xf0) == 0xb0) { /* SC - Display */ in hidinput_configure_usage()
845 switch (usage->hid & 0xf) { in hidinput_configure_usage()
861 switch (usage->hid) { in hidinput_configure_usage()
862 /* These usage IDs map directly to the usage codes. */ in hidinput_configure_usage()
866 map_rel(usage->hid & 0xf); in hidinput_configure_usage()
868 map_abs_clear(usage->hid & 0xf); in hidinput_configure_usage()
876 map_abs(usage->hid & 0xf); in hidinput_configure_usage()
881 map_rel(usage->hid & 0xf); in hidinput_configure_usage()
883 map_abs(usage->hid & 0xf); in hidinput_configure_usage()
887 usage->hat_min = field->logical_minimum; in hidinput_configure_usage()
888 usage->hat_max = field->logical_maximum; in hidinput_configure_usage()
911 switch (usage->hid & 0xffff) { /* HID-Value: */ in hidinput_configure_usage()
934 switch (usage->hid & 0xff) { in hidinput_configure_usage()
978 usage->type = EV_PWR; in hidinput_configure_usage()
1033 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
1056 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
1250 switch (usage->hid) { in hidinput_configure_usage()
1253 usage->type = EV_PWR; in hidinput_configure_usage()
1259 switch (usage->hid) { in hidinput_configure_usage()
1262 usage->type = EV_PWR; in hidinput_configure_usage()
1265 usage->type = EV_PWR; in hidinput_configure_usage()
1270 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
1282 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
1301 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
1324 switch (usage->hid & HID_USAGE) { in hidinput_configure_usage()
1354 device->driver->input_mapped(device, hidinput, field, usage, in hidinput_configure_usage()
1358 * of the usage is desired. in hidinput_configure_usage()
1363 set_bit(usage->type, input->evbit); in hidinput_configure_usage()
1380 while (usage->code <= max && test_and_set_bit(usage->code, bit)) { in hidinput_configure_usage()
1382 usage->code = find_next_zero_bit(bit, in hidinput_configure_usage()
1384 usage->code); in hidinput_configure_usage()
1391 if (usage->code > max) in hidinput_configure_usage()
1394 if (usage->type == EV_ABS) { in hidinput_configure_usage()
1399 if ((device->quirks & HID_QUIRK_BADPAD) && (usage->code == ABS_X || usage->code == ABS_Y)) { in hidinput_configure_usage()
1405 input_set_abs_params(input, usage->code, a, b, (b - a) >> 8, (b - a) >> 4); in hidinput_configure_usage()
1406 else input_set_abs_params(input, usage->code, a, b, 0, 0); in hidinput_configure_usage()
1408 input_abs_set_res(input, usage->code, in hidinput_configure_usage()
1409 hidinput_calc_abs_res(field, usage->code)); in hidinput_configure_usage()
1412 if (usage->code == ABS_MT_POSITION_X && input->hint_events_per_packet == 0) in hidinput_configure_usage()
1416 if (usage->type == EV_ABS && in hidinput_configure_usage()
1417 (usage->hat_min < usage->hat_max || usage->hat_dir)) { in hidinput_configure_usage()
1419 for (i = usage->code; i < usage->code + 2 && i <= max; i++) { in hidinput_configure_usage()
1423 if (usage->hat_dir && !field->dpad) in hidinput_configure_usage()
1424 field->dpad = usage->code; in hidinput_configure_usage()
1427 /* for those devices which produce Consumer volume usage as relative, in hidinput_configure_usage()
1431 if ((usage->type == EV_ABS) && (field->flags & HID_MAIN_ITEM_RELATIVE) && in hidinput_configure_usage()
1432 (usage->code == ABS_VOLUME)) { in hidinput_configure_usage()
1437 if (usage->type == EV_KEY) { in hidinput_configure_usage()
1445 usage->type = 0; in hidinput_configure_usage()
1446 usage->code = 0; in hidinput_configure_usage()
1449 static void hidinput_handle_scroll(struct hid_usage *usage, in hidinput_handle_scroll() argument
1459 if (usage->code == REL_WHEEL_HI_RES) in hidinput_handle_scroll()
1470 hi_res = value * 120/usage->resolution_multiplier; in hidinput_handle_scroll()
1472 usage->wheel_accumulated += hi_res; in hidinput_handle_scroll()
1473 lo_res = usage->wheel_accumulated/120; in hidinput_handle_scroll()
1475 usage->wheel_accumulated -= lo_res * 120; in hidinput_handle_scroll()
1478 input_event(input, EV_REL, usage->code, hi_res); in hidinput_handle_scroll()
1509 void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, _… in hidinput_hid_event() argument
1515 if (!usage->type) in hidinput_hid_event()
1518 if (usage->type == EV_PWR) { in hidinput_hid_event()
1519 hidinput_update_battery(hid, usage->hid, value); in hidinput_hid_event()
1528 if (usage->hat_min < usage->hat_max || usage->hat_dir) { in hidinput_hid_event()
1529 int hat_dir = usage->hat_dir; in hidinput_hid_event()
1531 hat_dir = (value - usage->hat_min) * 8 / (usage->hat_max - usage->hat_min + 1) + 1; in hidinput_hid_event()
1533 input_event(input, usage->type, usage->code , hid_hat_to_axis[hat_dir].x); in hidinput_hid_event()
1534 input_event(input, usage->type, usage->code + 1, hid_hat_to_axis[hat_dir].y); in hidinput_hid_event()
1562 switch (usage->hid) { in hidinput_hid_event()
1612 report->tool = usage->code; in hidinput_hid_event()
1617 hid_report_release_tool(report, input, usage->code); in hidinput_hid_event()
1656 switch (usage->type) { in hidinput_hid_event()
1658 if (usage->code == 0) /* Key 0 is "unassigned", not KEY_UNKNOWN */ in hidinput_hid_event()
1663 if (usage->code == REL_WHEEL_HI_RES || in hidinput_hid_event()
1664 usage->code == REL_HWHEEL_HI_RES) { in hidinput_hid_event()
1665 hidinput_handle_scroll(usage, input, value); in hidinput_hid_event()
1672 usage->code == ABS_VOLUME) { in hidinput_hid_event()
1685 } else if (((*quirks & HID_QUIRK_X_INVERT) && usage->code == ABS_X) || in hidinput_hid_event()
1686 ((*quirks & HID_QUIRK_Y_INVERT) && usage->code == ABS_Y)) in hidinput_hid_event()
1704 usage->usage_index < field->maxusage && in hidinput_hid_event()
1705 value == field->value[usage->usage_index]) in hidinput_hid_event()
1708 /* report the usage code as scancode if the key status has changed */ in hidinput_hid_event()
1709 if (usage->type == EV_KEY && in hidinput_hid_event()
1710 (!test_bit(usage->code, input->key)) == value) in hidinput_hid_event()
1711 input_event(input, EV_MSC, MSC_SCAN, usage->hid); in hidinput_hid_event()
1713 input_event(input, usage->type, usage->code, value); in hidinput_hid_event()
1716 usage->type == EV_KEY && value) { in hidinput_hid_event()
1718 input_event(input, usage->type, usage->code, 0); in hidinput_hid_event()
1744 if ((*field)->usage[j].type == type && (*field)->usage[j].code == code) in hidinput_find_field()
1763 if (field->usage[j].type == EV_LED) in hidinput_get_led_field()
1784 if (field->usage[j].type == EV_LED && in hidinput_count_leds()
1882 struct hid_usage *usage; in __hidinput_change_resolution_multipliers() local
1903 usage = &report->field[i]->usage[j]; in __hidinput_change_resolution_multipliers()
1905 if (usage->hid != HID_GD_RESOLUTION_MULTIPLIER) in __hidinput_change_resolution_multipliers()
1965 struct hid_usage *usage; in report_features() local
1976 usage = &rep->field[i]->usage[j]; in report_features()
1979 if (usage->hid == HID_DC_BATTERYSTRENGTH) in report_features()
1984 drv->feature_mapping(hid, rep->field[i], usage); in report_features()
2207 /* ignore fields without usage */ in hidinput_configure_usages()
2214 if (prev_collection_index != field->usage->collection_index) { in hidinput_configure_usages()
2215 prev_collection_index = field->usage->collection_index; in hidinput_configure_usages()
2223 if (slot_collection_index == field->usage->collection_index) { in hidinput_configure_usages()
2230 if (field->usage[j].hid == HID_DG_CONTACTID) { in hidinput_configure_usages()
2231 slot_collection_index = field->usage->collection_index; in hidinput_configure_usages()
2248 report->field[i]->usage + j, in hidinput_configure_usages()
2276 if (IS_INPUT_APPLICATION(col->usage)) in hidinput_connect()