Lines Matching refs:hid

17 #include <linux/hid.h>
20 #include "hid-lg.h"
21 #include "hid-lg4ff.h"
22 #include "hid-ids.h"
61 static void lg4ff_set_range_dfp(struct hid_device *hid, u16 range);
62 static void lg4ff_set_range_g25(struct hid_device *hid, u16 range);
79 void (*set_range)(struct hid_device *hid, u16 range);
103 void (*set_range)(struct hid_device *hid, u16 range);
300 int lg4ff_adjust_input_event(struct hid_device *hid, struct hid_field *field,
307 hid_err(hid, "Device properties not found");
408 struct hid_device *hid = input_get_drvdata(dev);
415 drv_data = hid_get_drvdata(hid);
417 hid_err(hid, "Private driver data not found!\n");
423 hid_err(hid, "Device properties not found!\n");
446 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
459 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
470 struct hid_device *hid = input_get_drvdata(dev);
477 drv_data = hid_get_drvdata(hid);
479 hid_err(hid, "Private driver data not found!\n");
485 hid_err(hid, "Device properties not found!\n");
501 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
532 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
543 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
550 struct hid_device *hid = input_get_drvdata(dev);
557 drv_data = hid_get_drvdata(hid);
559 hid_err(hid, "Private driver data not found!\n");
565 hid_err(hid, "Device properties not found!\n");
579 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
584 static void lg4ff_set_range_g25(struct hid_device *hid, u16 range)
591 drv_data = hid_get_drvdata(hid);
593 hid_err(hid, "Private driver data not found!\n");
599 hid_err(hid, "Device properties not found!\n");
614 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
619 static void lg4ff_set_range_dfp(struct hid_device *hid, u16 range)
627 drv_data = hid_get_drvdata(hid);
629 hid_err(hid, "Private driver data not found!\n");
635 hid_err(hid, "Device properties not found!\n");
658 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
670 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
685 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
763 static int lg4ff_switch_compatibility_mode(struct hid_device *hid, const struct lg4ff_compat_mode_switch *s)
771 drv_data = hid_get_drvdata(hid);
773 hid_err(hid, "Private driver data not found!\n");
779 hid_err(hid, "Device properties not found!\n");
791 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
794 hid_hw_wait(hid);
800 struct hid_device *hid = to_hid_device(dev);
806 drv_data = hid_get_drvdata(hid);
808 hid_err(hid, "Private driver data not found!\n");
814 hid_err(hid, "Device properties not found!\n");
819 hid_err(hid, "NULL pointer to string\n");
849 struct hid_device *hid = to_hid_device(dev);
857 drv_data = hid_get_drvdata(hid);
859 hid_err(hid, "Private driver data not found!\n");
865 hid_err(hid, "Device properties not found!\n");
905 hid_info(hid, "Requested mode \"%s\" is not supported by the device\n", lbuf);
916 hid_info(hid, "\"%s\" cannot be switched to \"DF-EX\" mode. Load the \"hid_logitech\" module with \"lg4ff_no_autoswitch=1\" parameter set and try again\n",
924 hid_info(hid, "\"%s\" cannot be switched back into \"%s\" mode\n", entry->wdata.real_name, lg4ff_alternate_modes[i].name);
930 hid_err(hid, "Invalid target product ID %X\n", target_product_id);
934 ret = lg4ff_switch_compatibility_mode(hid, s);
942 struct hid_device *hid = to_hid_device(dev);
947 drv_data = hid_get_drvdata(hid);
949 hid_err(hid, "Private driver data not found!\n");
955 hid_err(hid, "Device properties not found!\n");
966 struct hid_device *hid = to_hid_device(dev);
971 drv_data = hid_get_drvdata(hid);
973 hid_err(hid, "Private driver data not found!\n");
979 hid_err(hid, "Device properties not found!\n");
995 struct hid_device *hid = to_hid_device(dev);
1000 drv_data = hid_get_drvdata(hid);
1002 hid_err(hid, "Private driver data not found!\n");
1008 hid_err(hid, "Device properties not found!\n");
1021 struct hid_device *hid = to_hid_device(dev);
1026 drv_data = hid_get_drvdata(hid);
1028 hid_err(hid, "Private driver data not found!\n");
1034 hid_err(hid, "Device properties not found!\n");
1044 entry->wdata.set_range(hid, range);
1054 struct hid_device *hid = to_hid_device(dev);
1059 drv_data = hid_get_drvdata(hid);
1061 hid_err(hid, "Private driver data not found!\n");
1067 hid_err(hid, "Device properties not found!\n");
1072 hid_err(hid, "NULL pointer to string\n");
1088 static void lg4ff_set_leds(struct hid_device *hid, u8 leds)
1095 drv_data = hid_get_drvdata(hid);
1097 hid_err(hid, "Private driver data not found!\n");
1103 hid_err(hid, "Device properties not found!\n");
1116 hid_hw_request(hid, entry->report, HID_REQ_SET_REPORT);
1124 struct hid_device *hid = to_hid_device(dev);
1125 struct lg_drv_data *drv_data = hid_get_drvdata(hid);
1130 hid_err(hid, "Device data not found.");
1137 hid_err(hid, "Device properties not found.");
1147 lg4ff_set_leds(hid, entry->wdata.led_state);
1150 lg4ff_set_leds(hid, entry->wdata.led_state);
1159 struct hid_device *hid = to_hid_device(dev);
1160 struct lg_drv_data *drv_data = hid_get_drvdata(hid);
1165 hid_err(hid, "Device data not found.");
1172 hid_err(hid, "Device properties not found.");
1186 static u16 lg4ff_identify_multimode_wheel(struct hid_device *hid, const u16 reported_product_id, const u16 bcdDevice)
1221 static int lg4ff_handle_multimode_wheel(struct hid_device *hid, u16 *real_product_id, const u16 bcdDevice)
1223 const u16 reported_product_id = hid->product;
1226 *real_product_id = lg4ff_identify_multimode_wheel(hid, reported_product_id, bcdDevice);
1242 hid_err(hid, "Invalid product id %X\n", *real_product_id);
1246 ret = lg4ff_switch_compatibility_mode(hid, s);
1250 hid_err(hid, "Unable to switch wheel mode, errno %d\n", ret);
1260 int lg4ff_init(struct hid_device *hid)
1264 struct list_head *report_list = &hid->report_enum[HID_OUTPUT_REPORT].report_list;
1266 const struct usb_device_descriptor *udesc = &(hid_to_usb_dev(hid)->descriptor);
1275 if (list_empty(&hid->inputs)) {
1276 hid_err(hid, "no inputs found\n");
1279 hidinput = list_entry(hid->inputs.next, struct hid_input, list);
1283 if (!hid_validate_values(hid, HID_OUTPUT_REPORT, 0, 0, 7))
1286 drv_data = hid_get_drvdata(hid);
1288 hid_err(hid, "Cannot add device, private driver data not allocated\n");
1300 mmode_ret = lg4ff_handle_multimode_wheel(hid, &real_product_id, bcdDevice);
1308 hid_err(hid, "Unable to switch device mode during initialization, errno %d\n", mmode_ret);
1315 if (hid->product == lg4ff_devices[i].product_id) {
1322 hid_err(hid, "This device is flagged to be handled by the lg4ff module but this module does not know how to handle it. "
1336 hid_err(hid, "Device product ID %X is not listed as a multimode wheel", real_product_id);
1372 error = device_create_file(&hid->dev, &dev_attr_combine_pedals);
1374 hid_warn(hid, "Unable to create sysfs interface for \"combine\", errno %d\n", error);
1375 error = device_create_file(&hid->dev, &dev_attr_range);
1377 hid_warn(hid, "Unable to create sysfs interface for \"range\", errno %d\n", error);
1379 error = device_create_file(&hid->dev, &dev_attr_real_id);
1381 hid_warn(hid, "Unable to create sysfs interface for \"real_id\", errno %d\n", error);
1382 error = device_create_file(&hid->dev, &dev_attr_alternate_modes);
1384 hid_warn(hid, "Unable to create sysfs interface for \"alternate_modes\", errno %d\n", error);
1391 entry->wdata.set_range(hid, entry->wdata.range);
1405 lg4ff_set_leds(hid, 0);
1407 name_sz = strlen(dev_name(&hid->dev)) + 8;
1412 hid_err(hid, "can't allocate memory for LED %d\n", j);
1417 snprintf(name, name_sz, "%s::RPM%d", dev_name(&hid->dev), j+1);
1425 error = led_classdev_register(&hid->dev, led);
1428 hid_err(hid, "failed to register LED %d. Aborting.\n", j);
1445 hid_info(hid, "Force feedback support for Logitech Gaming Wheels\n");
1454 int lg4ff_deinit(struct hid_device *hid)
1459 drv_data = hid_get_drvdata(hid);
1461 hid_err(hid, "Error while deinitializing device, no private driver data.\n");
1470 device_remove_file(&hid->dev, &dev_attr_real_id);
1471 device_remove_file(&hid->dev, &dev_attr_alternate_modes);
1474 device_remove_file(&hid->dev, &dev_attr_combine_pedals);
1475 device_remove_file(&hid->dev, &dev_attr_range);