Lines Matching defs:hdev
47 struct hid_device *hdev;
74 static int lenovo_led_set_tp10ubkbd(struct hid_device *hdev, u8 led_code,
77 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
85 ret = hid_hw_raw_request(hdev, data->led_report[0], data->led_report, 3,
89 hid_err(hdev, "Set LED output report error: %d\n", ret);
106 lenovo_led_set_tp10ubkbd(data->hdev, TP10UBKBD_FN_LOCK_LED,
136 static __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc,
139 switch (hdev->product) {
169 static int lenovo_input_mapping_tpkbd(struct hid_device *hdev,
175 hid_set_drvdata(hdev, (void *)1);
182 static int lenovo_input_mapping_cptkbd(struct hid_device *hdev,
256 static int lenovo_input_mapping_tpIIkbd(struct hid_device *hdev,
351 static int lenovo_input_mapping_scrollpoint(struct hid_device *hdev,
362 static int lenovo_input_mapping_tp10_ultrabook_kbd(struct hid_device *hdev,
400 static int lenovo_input_mapping_x1_tab_kbd(struct hid_device *hdev,
448 static int lenovo_input_mapping(struct hid_device *hdev,
452 switch (hdev->product) {
454 return lenovo_input_mapping_tpkbd(hdev, hi, field,
458 return lenovo_input_mapping_cptkbd(hdev, hi, field,
462 return lenovo_input_mapping_tpIIkbd(hdev, hi, field,
470 return lenovo_input_mapping_scrollpoint(hdev, hi, field,
473 return lenovo_input_mapping_tp10_ultrabook_kbd(hdev, hi, field,
476 return lenovo_input_mapping_x1_tab_kbd(hdev, hi, field, usage, bit, max);
485 static int lenovo_send_cmd_cptkbd(struct hid_device *hdev,
504 switch (hdev->product) {
507 ret = hid_hw_raw_request(hdev, 0x13, buf, 3,
512 ret = hid_hw_output_report(hdev, buf, 3);
524 static void lenovo_features_set_cptkbd(struct hid_device *hdev)
527 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
533 ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03);
535 hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret);
538 ret = lenovo_send_cmd_cptkbd(hdev, 0x09, 0x01);
540 hid_warn(hdev, "Failed to switch middle button: %d\n", ret);
542 ret = lenovo_send_cmd_cptkbd(hdev, 0x05, cptkbd_data->fn_lock);
544 hid_err(hdev, "Fn-lock setting failed: %d\n", ret);
546 ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity);
548 hid_err(hdev, "Sensitivity setting failed: %d\n", ret);
555 struct hid_device *hdev = to_hid_device(dev);
556 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
566 struct hid_device *hdev = to_hid_device(dev);
567 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
577 switch (hdev->product) {
582 lenovo_features_set_cptkbd(hdev);
586 ret = lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, value);
599 struct hid_device *hdev = to_hid_device(dev);
600 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
611 struct hid_device *hdev = to_hid_device(dev);
612 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
619 lenovo_features_set_cptkbd(hdev);
628 struct hid_device *hdev = to_hid_device(dev);
629 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
640 struct hid_device *hdev = to_hid_device(dev);
641 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
682 static int lenovo_raw_event(struct hid_device *hdev,
690 if (unlikely(hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD
702 static int lenovo_event_tp10ubkbd(struct hid_device *hdev,
705 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
720 static int lenovo_event_cptkbd(struct hid_device *hdev,
723 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
766 static int lenovo_event(struct hid_device *hdev, struct hid_field *field,
769 if (!hid_get_drvdata(hdev))
772 switch (hdev->product) {
777 return lenovo_event_cptkbd(hdev, field, usage, value);
780 return lenovo_event_tp10ubkbd(hdev, field, usage, value);
786 static int lenovo_features_set_tpkbd(struct hid_device *hdev)
789 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
791 report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[4];
801 hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
809 struct hid_device *hdev = to_hid_device(dev);
810 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
820 struct hid_device *hdev = to_hid_device(dev);
821 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
830 lenovo_features_set_tpkbd(hdev);
839 struct hid_device *hdev = to_hid_device(dev);
840 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
850 struct hid_device *hdev = to_hid_device(dev);
851 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
860 lenovo_features_set_tpkbd(hdev);
869 struct hid_device *hdev = to_hid_device(dev);
870 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
880 struct hid_device *hdev = to_hid_device(dev);
881 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
890 lenovo_features_set_tpkbd(hdev);
899 struct hid_device *hdev = to_hid_device(dev);
900 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
910 struct hid_device *hdev = to_hid_device(dev);
911 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
920 lenovo_features_set_tpkbd(hdev);
929 struct hid_device *hdev = to_hid_device(dev);
930 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
941 struct hid_device *hdev = to_hid_device(dev);
942 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
949 lenovo_features_set_tpkbd(hdev);
958 struct hid_device *hdev = to_hid_device(dev);
959 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
970 struct hid_device *hdev = to_hid_device(dev);
971 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
978 lenovo_features_set_tpkbd(hdev);
1027 static void lenovo_led_set_tpkbd(struct hid_device *hdev)
1029 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
1032 report = hdev->report_enum[HID_OUTPUT_REPORT].report_id_hash[3];
1035 hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
1042 struct hid_device *hdev = to_hid_device(dev);
1043 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
1056 switch (hdev->product) {
1058 lenovo_led_set_tpkbd(hdev);
1062 ret = lenovo_led_set_tp10ubkbd(hdev, tp10ubkbd_led[led_nr], value);
1069 static int lenovo_register_leds(struct hid_device *hdev)
1071 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
1072 size_t name_sz = strlen(dev_name(&hdev->dev)) + 16;
1076 name_mute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL);
1077 name_micm = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL);
1079 hid_err(hdev, "Could not allocate memory for led data\n");
1082 snprintf(name_mute, name_sz, "%s:amber:mute", dev_name(&hdev->dev));
1083 snprintf(name_micm, name_sz, "%s:amber:micmute", dev_name(&hdev->dev));
1090 data->led_mute.dev = &hdev->dev;
1091 ret = led_classdev_register(&hdev->dev, &data->led_mute);
1100 data->led_micmute.dev = &hdev->dev;
1101 ret = led_classdev_register(&hdev->dev, &data->led_micmute);
1110 static int lenovo_probe_tpkbd(struct hid_device *hdev)
1119 if (!hid_get_drvdata(hdev))
1122 hid_set_drvdata(hdev, NULL);
1126 if (!hid_validate_values(hdev, HID_FEATURE_REPORT, 4, i, 1))
1129 if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 3, 0, 2))
1132 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd);
1134 hid_warn(hdev, "Could not create sysfs group: %d\n", ret);
1136 data_pointer = devm_kzalloc(&hdev->dev,
1140 hid_err(hdev, "Could not allocate memory for driver data\n");
1149 hid_set_drvdata(hdev, data_pointer);
1151 ret = lenovo_register_leds(hdev);
1155 lenovo_features_set_tpkbd(hdev);
1159 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd);
1163 static int lenovo_probe_cptkbd(struct hid_device *hdev)
1169 if (((hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD) ||
1170 (hdev->product == USB_DEVICE_ID_LENOVO_TPIIUSBKBD)) &&
1171 hdev->type != HID_TYPE_USBMOUSE) {
1172 hid_dbg(hdev, "Ignoring keyboard half of device\n");
1176 cptkbd_data = devm_kzalloc(&hdev->dev,
1180 hid_err(hdev, "can't alloc keyboard descriptor\n");
1183 hid_set_drvdata(hdev, cptkbd_data);
1190 lenovo_features_set_cptkbd(hdev);
1192 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_cptkbd);
1194 hid_warn(hdev, "Could not create sysfs group: %d\n", ret);
1208 static int lenovo_probe_tp10ubkbd(struct hid_device *hdev)
1222 rep_enum = &hdev->report_enum[HID_OUTPUT_REPORT];
1230 data = devm_kzalloc(&hdev->dev, sizeof(*data), GFP_KERNEL);
1236 data->hdev = hdev;
1238 hid_set_drvdata(hdev, data);
1247 lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, data->fn_lock);
1249 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd);
1253 ret = lenovo_register_leds(hdev);
1259 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd);
1263 static int lenovo_probe(struct hid_device *hdev,
1268 ret = hid_parse(hdev);
1270 hid_err(hdev, "hid_parse failed\n");
1274 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
1276 hid_err(hdev, "hid_hw_start failed\n");
1280 switch (hdev->product) {
1282 ret = lenovo_probe_tpkbd(hdev);
1288 ret = lenovo_probe_cptkbd(hdev);
1292 ret = lenovo_probe_tp10ubkbd(hdev);
1303 hid_hw_stop(hdev);
1309 static int lenovo_reset_resume(struct hid_device *hdev)
1311 switch (hdev->product) {
1314 if (hdev->type == HID_TYPE_USBMOUSE)
1315 lenovo_features_set_cptkbd(hdev);
1326 static void lenovo_remove_tpkbd(struct hid_device *hdev)
1328 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
1337 sysfs_remove_group(&hdev->dev.kobj,
1344 static void lenovo_remove_cptkbd(struct hid_device *hdev)
1346 sysfs_remove_group(&hdev->dev.kobj,
1350 static void lenovo_remove_tp10ubkbd(struct hid_device *hdev)
1352 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
1360 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd);
1364 static void lenovo_remove(struct hid_device *hdev)
1366 switch (hdev->product) {
1368 lenovo_remove_tpkbd(hdev);
1374 lenovo_remove_cptkbd(hdev);
1378 lenovo_remove_tp10ubkbd(hdev);
1382 hid_hw_stop(hdev);
1385 static int lenovo_input_configured(struct hid_device *hdev,
1388 switch (hdev->product) {