Lines Matching defs:hdev

46 	struct hid_device *hdev;
73 static int lenovo_led_set_tp10ubkbd(struct hid_device *hdev, u8 led_code,
76 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
84 ret = hid_hw_raw_request(hdev, data->led_report[0], data->led_report, 3,
88 hid_err(hdev, "Set LED output report error: %d\n", ret);
105 lenovo_led_set_tp10ubkbd(data->hdev, TP10UBKBD_FN_LOCK_LED,
118 static __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc,
121 switch (hdev->product) {
138 static int lenovo_input_mapping_tpkbd(struct hid_device *hdev,
144 hid_set_drvdata(hdev, (void *)1);
151 static int lenovo_input_mapping_cptkbd(struct hid_device *hdev,
225 static int lenovo_input_mapping_scrollpoint(struct hid_device *hdev,
236 static int lenovo_input_mapping_tp10_ultrabook_kbd(struct hid_device *hdev,
274 static int lenovo_input_mapping(struct hid_device *hdev,
278 switch (hdev->product) {
280 return lenovo_input_mapping_tpkbd(hdev, hi, field,
284 return lenovo_input_mapping_cptkbd(hdev, hi, field,
292 return lenovo_input_mapping_scrollpoint(hdev, hi, field,
295 return lenovo_input_mapping_tp10_ultrabook_kbd(hdev, hi, field,
305 static int lenovo_send_cmd_cptkbd(struct hid_device *hdev,
319 switch (hdev->product) {
321 ret = hid_hw_raw_request(hdev, 0x13, buf, 3,
325 ret = hid_hw_output_report(hdev, buf, 3);
337 static void lenovo_features_set_cptkbd(struct hid_device *hdev)
340 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
342 ret = lenovo_send_cmd_cptkbd(hdev, 0x05, cptkbd_data->fn_lock);
344 hid_err(hdev, "Fn-lock setting failed: %d\n", ret);
346 ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity);
348 hid_err(hdev, "Sensitivity setting failed: %d\n", ret);
355 struct hid_device *hdev = to_hid_device(dev);
356 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
366 struct hid_device *hdev = to_hid_device(dev);
367 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
377 switch (hdev->product) {
380 lenovo_features_set_cptkbd(hdev);
383 ret = lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, value);
396 struct hid_device *hdev = to_hid_device(dev);
397 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
408 struct hid_device *hdev = to_hid_device(dev);
409 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
416 lenovo_features_set_cptkbd(hdev);
443 static int lenovo_raw_event(struct hid_device *hdev,
451 if (unlikely(hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD
463 static int lenovo_event_tp10ubkbd(struct hid_device *hdev,
466 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
481 static int lenovo_event_cptkbd(struct hid_device *hdev,
484 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev);
492 if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD &&
534 static int lenovo_event(struct hid_device *hdev, struct hid_field *field,
537 if (!hid_get_drvdata(hdev))
540 switch (hdev->product) {
543 return lenovo_event_cptkbd(hdev, field, usage, value);
545 return lenovo_event_tp10ubkbd(hdev, field, usage, value);
551 static int lenovo_features_set_tpkbd(struct hid_device *hdev)
554 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
556 report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[4];
566 hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
574 struct hid_device *hdev = to_hid_device(dev);
575 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
585 struct hid_device *hdev = to_hid_device(dev);
586 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
595 lenovo_features_set_tpkbd(hdev);
604 struct hid_device *hdev = to_hid_device(dev);
605 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
615 struct hid_device *hdev = to_hid_device(dev);
616 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
625 lenovo_features_set_tpkbd(hdev);
634 struct hid_device *hdev = to_hid_device(dev);
635 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
645 struct hid_device *hdev = to_hid_device(dev);
646 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
655 lenovo_features_set_tpkbd(hdev);
664 struct hid_device *hdev = to_hid_device(dev);
665 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
675 struct hid_device *hdev = to_hid_device(dev);
676 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
685 lenovo_features_set_tpkbd(hdev);
694 struct hid_device *hdev = to_hid_device(dev);
695 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
706 struct hid_device *hdev = to_hid_device(dev);
707 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
714 lenovo_features_set_tpkbd(hdev);
723 struct hid_device *hdev = to_hid_device(dev);
724 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
735 struct hid_device *hdev = to_hid_device(dev);
736 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
743 lenovo_features_set_tpkbd(hdev);
792 static void lenovo_led_set_tpkbd(struct hid_device *hdev)
794 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
797 report = hdev->report_enum[HID_OUTPUT_REPORT].report_id_hash[3];
800 hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
807 struct hid_device *hdev = to_hid_device(dev);
808 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
823 struct hid_device *hdev = to_hid_device(dev);
824 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
837 switch (hdev->product) {
839 lenovo_led_set_tpkbd(hdev);
842 ret = lenovo_led_set_tp10ubkbd(hdev, tp10ubkbd_led[led_nr], value);
849 static int lenovo_register_leds(struct hid_device *hdev)
851 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
852 size_t name_sz = strlen(dev_name(&hdev->dev)) + 16;
856 name_mute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL);
857 name_micm = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL);
859 hid_err(hdev, "Could not allocate memory for led data\n");
862 snprintf(name_mute, name_sz, "%s:amber:mute", dev_name(&hdev->dev));
863 snprintf(name_micm, name_sz, "%s:amber:micmute", dev_name(&hdev->dev));
869 data->led_mute.dev = &hdev->dev;
870 ret = led_classdev_register(&hdev->dev, &data->led_mute);
878 data->led_micmute.dev = &hdev->dev;
879 ret = led_classdev_register(&hdev->dev, &data->led_micmute);
888 static int lenovo_probe_tpkbd(struct hid_device *hdev)
897 if (!hid_get_drvdata(hdev))
900 hid_set_drvdata(hdev, NULL);
904 if (!hid_validate_values(hdev, HID_FEATURE_REPORT, 4, i, 1))
907 if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 3, 0, 2))
910 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd);
912 hid_warn(hdev, "Could not create sysfs group: %d\n", ret);
914 data_pointer = devm_kzalloc(&hdev->dev,
918 hid_err(hdev, "Could not allocate memory for driver data\n");
927 hid_set_drvdata(hdev, data_pointer);
929 ret = lenovo_register_leds(hdev);
933 lenovo_features_set_tpkbd(hdev);
937 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd);
941 static int lenovo_probe_cptkbd(struct hid_device *hdev)
947 if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD
948 && hdev->type != HID_TYPE_USBMOUSE) {
949 hid_dbg(hdev, "Ignoring keyboard half of device\n");
953 cptkbd_data = devm_kzalloc(&hdev->dev,
957 hid_err(hdev, "can't alloc keyboard descriptor\n");
960 hid_set_drvdata(hdev, cptkbd_data);
966 ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03);
968 hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret);
971 ret = lenovo_send_cmd_cptkbd(hdev, 0x09, 0x01);
973 hid_warn(hdev, "Failed to switch middle button: %d\n", ret);
979 lenovo_features_set_cptkbd(hdev);
981 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_cptkbd);
983 hid_warn(hdev, "Could not create sysfs group: %d\n", ret);
997 static int lenovo_probe_tp10ubkbd(struct hid_device *hdev)
1003 if (hdev->type != HID_TYPE_USBMOUSE)
1006 data = devm_kzalloc(&hdev->dev, sizeof(*data), GFP_KERNEL);
1012 data->hdev = hdev;
1014 hid_set_drvdata(hdev, data);
1023 lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, data->fn_lock);
1025 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd);
1029 ret = lenovo_register_leds(hdev);
1035 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd);
1039 static int lenovo_probe(struct hid_device *hdev,
1044 ret = hid_parse(hdev);
1046 hid_err(hdev, "hid_parse failed\n");
1050 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
1052 hid_err(hdev, "hid_hw_start failed\n");
1056 switch (hdev->product) {
1058 ret = lenovo_probe_tpkbd(hdev);
1062 ret = lenovo_probe_cptkbd(hdev);
1065 ret = lenovo_probe_tp10ubkbd(hdev);
1076 hid_hw_stop(hdev);
1081 static void lenovo_remove_tpkbd(struct hid_device *hdev)
1083 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev);
1092 sysfs_remove_group(&hdev->dev.kobj,
1099 static void lenovo_remove_cptkbd(struct hid_device *hdev)
1101 sysfs_remove_group(&hdev->dev.kobj,
1105 static void lenovo_remove_tp10ubkbd(struct hid_device *hdev)
1107 struct lenovo_drvdata *data = hid_get_drvdata(hdev);
1115 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd);
1119 static void lenovo_remove(struct hid_device *hdev)
1121 switch (hdev->product) {
1123 lenovo_remove_tpkbd(hdev);
1127 lenovo_remove_cptkbd(hdev);
1130 lenovo_remove_tp10ubkbd(hdev);
1134 hid_hw_stop(hdev);
1137 static int lenovo_input_configured(struct hid_device *hdev,
1140 switch (hdev->product) {