Lines Matching refs:hidinput
56 #define map_abs(c) hid_map_usage(hidinput, usage, &bit, &max, EV_ABS, (c))
57 #define map_rel(c) hid_map_usage(hidinput, usage, &bit, &max, EV_REL, (c))
58 #define map_key(c) hid_map_usage(hidinput, usage, &bit, &max, EV_KEY, (c))
59 #define map_led(c) hid_map_usage(hidinput, usage, &bit, &max, EV_LED, (c))
61 #define map_abs_clear(c) hid_map_usage_clear(hidinput, usage, &bit, &max, EV_ABS, (c))
62 #define map_key_clear(c) hid_map_usage_clear(hidinput, usage, &bit, &max, EV_KEY, (c))
538 static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_field *field, struct hid_usage *usage)
540 struct input_dev *input = hidinput->input;
545 field->hidinput = hidinput;
562 int ret = device->driver->input_mapping(device, hidinput, field, usage, &bit, &max);
1630 if (device->driver->input_mapped && device->driver->input_mapped(device, hidinput, field, usage, &bit, &max) < 0) {
1770 if (!field->hidinput) {
1774 input = field->hidinput->input;
1900 struct hid_input *hidinput;
1906 list_for_each_entry(hidinput, &hid->inputs, list) input_sync(hidinput->input);
2176 struct hid_input *hidinput = kzalloc(sizeof(*hidinput), GFP_KERNEL);
2181 if (!hidinput || !input_dev) {
2226 hidinput->name = kasprintf(GFP_KERNEL, "%s %s", hid->name, suffix);
2227 if (!hidinput->name) {
2240 input_dev->name = hidinput->name ? hidinput->name : hid->name;
2249 hidinput->input = input_dev;
2250 hidinput->application = application;
2251 list_add_tail(&hidinput->list, &hid->inputs);
2253 INIT_LIST_HEAD(&hidinput->reports);
2255 return hidinput;
2258 kfree(hidinput);
2264 static bool hidinput_has_been_populated(struct hid_input *hidinput)
2270 r |= hidinput->input->evbit[i];
2274 r |= hidinput->input->keybit[i];
2278 r |= hidinput->input->relbit[i];
2282 r |= hidinput->input->absbit[i];
2286 r |= hidinput->input->mscbit[i];
2290 r |= hidinput->input->ledbit[i];
2294 r |= hidinput->input->sndbit[i];
2298 r |= hidinput->input->ffbit[i];
2302 r |= hidinput->input->swbit[i];
2308 static void hidinput_cleanup_hidinput(struct hid_device *hid, struct hid_input *hidinput)
2313 list_del(&hidinput->list);
2314 input_free_device(hidinput->input);
2315 kfree(hidinput->name);
2325 if (report->field[i]->hidinput == hidinput) {
2326 report->field[i]->hidinput = NULL;
2332 kfree(hidinput);
2338 struct hid_input *hidinput;
2340 list_for_each_entry(hidinput, &hid->inputs, list)
2342 if (hidinput->report && hidinput->report->id == report->id) {
2343 return hidinput;
2353 struct hid_input *hidinput;
2355 list_for_each_entry(hidinput, &hid->inputs, list)
2357 if (hidinput->application == report->application) {
2358 return hidinput;
2365 static inline void hidinput_configure_usages(struct hid_input *hidinput, struct hid_report *report)
2371 hidinput_configure_usage(hidinput, report->field[i], report->field[i]->usage + j);
2386 struct hid_input *next, *hidinput = NULL;
2426 * Find the previous hidinput report attached
2430 hidinput = hidinput_match(report);
2432 hidinput = hidinput_match_application(report);
2435 if (!hidinput) {
2436 hidinput = hidinput_allocate(hid, application);
2437 if (!hidinput) {
2442 hidinput_configure_usages(hidinput, report);
2445 hidinput->report = report;
2448 list_add_tail(&report->hidinput_list, &hidinput->reports);
2454 list_for_each_entry_safe(hidinput, next, &hid->inputs, list)
2456 if (drv->input_configured && drv->input_configured(hid, hidinput)) {
2460 if (!hidinput_has_been_populated(hidinput)) {
2462 hidinput_cleanup_hidinput(hid, hidinput);
2466 if (input_register_device(hidinput->input)) {
2469 hidinput->registered = true;
2494 struct hid_input *hidinput, *next;
2498 list_for_each_entry_safe(hidinput, next, &hid->inputs, list)
2500 list_del(&hidinput->list);
2501 if (hidinput->registered) {
2502 input_unregister_device(hidinput->input);
2504 input_free_device(hidinput->input);
2506 kfree(hidinput->name);
2507 kfree(hidinput);