Lines Matching refs:hdev

43 	struct hid_device *hdev;  member
65 static void lenovo_led_set_tp10ubkbd(struct hid_device *hdev, u8 led_code, in lenovo_led_set_tp10ubkbd() argument
68 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in lenovo_led_set_tp10ubkbd()
76 ret = hid_hw_raw_request(hdev, data->led_report[0], data->led_report, 3, in lenovo_led_set_tp10ubkbd()
79 hid_err(hdev, "Set LED output report error: %d\n", ret); in lenovo_led_set_tp10ubkbd()
89 lenovo_led_set_tp10ubkbd(data->hdev, TP10UBKBD_FN_LOCK_LED, in lenovo_tp10ubkbd_sync_fn_lock()
102 static __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc, in lenovo_report_fixup() argument
105 switch (hdev->product) { in lenovo_report_fixup()
122 static int lenovo_input_mapping_tpkbd(struct hid_device *hdev, in lenovo_input_mapping_tpkbd() argument
128 hid_set_drvdata(hdev, (void *)1); in lenovo_input_mapping_tpkbd()
135 static int lenovo_input_mapping_cptkbd(struct hid_device *hdev, in lenovo_input_mapping_cptkbd() argument
209 static int lenovo_input_mapping_scrollpoint(struct hid_device *hdev, in lenovo_input_mapping_scrollpoint() argument
220 static int lenovo_input_mapping_tp10_ultrabook_kbd(struct hid_device *hdev, in lenovo_input_mapping_tp10_ultrabook_kbd() argument
258 static int lenovo_input_mapping(struct hid_device *hdev, in lenovo_input_mapping() argument
262 switch (hdev->product) { in lenovo_input_mapping()
264 return lenovo_input_mapping_tpkbd(hdev, hi, field, in lenovo_input_mapping()
268 return lenovo_input_mapping_cptkbd(hdev, hi, field, in lenovo_input_mapping()
276 return lenovo_input_mapping_scrollpoint(hdev, hi, field, in lenovo_input_mapping()
279 return lenovo_input_mapping_tp10_ultrabook_kbd(hdev, hi, field, in lenovo_input_mapping()
289 static int lenovo_send_cmd_cptkbd(struct hid_device *hdev, in lenovo_send_cmd_cptkbd() argument
303 switch (hdev->product) { in lenovo_send_cmd_cptkbd()
305 ret = hid_hw_raw_request(hdev, 0x13, buf, 3, in lenovo_send_cmd_cptkbd()
309 ret = hid_hw_output_report(hdev, buf, 3); in lenovo_send_cmd_cptkbd()
321 static void lenovo_features_set_cptkbd(struct hid_device *hdev) in lenovo_features_set_cptkbd() argument
324 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev); in lenovo_features_set_cptkbd()
326 ret = lenovo_send_cmd_cptkbd(hdev, 0x05, cptkbd_data->fn_lock); in lenovo_features_set_cptkbd()
328 hid_err(hdev, "Fn-lock setting failed: %d\n", ret); in lenovo_features_set_cptkbd()
330 ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity); in lenovo_features_set_cptkbd()
332 hid_err(hdev, "Sensitivity setting failed: %d\n", ret); in lenovo_features_set_cptkbd()
339 struct hid_device *hdev = to_hid_device(dev); in attr_fn_lock_show() local
340 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in attr_fn_lock_show()
350 struct hid_device *hdev = to_hid_device(dev); in attr_fn_lock_store() local
351 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in attr_fn_lock_store()
361 switch (hdev->product) { in attr_fn_lock_store()
364 lenovo_features_set_cptkbd(hdev); in attr_fn_lock_store()
367 lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, value); in attr_fn_lock_store()
378 struct hid_device *hdev = to_hid_device(dev); in attr_sensitivity_show_cptkbd() local
379 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev); in attr_sensitivity_show_cptkbd()
390 struct hid_device *hdev = to_hid_device(dev); in attr_sensitivity_store_cptkbd() local
391 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev); in attr_sensitivity_store_cptkbd()
398 lenovo_features_set_cptkbd(hdev); in attr_sensitivity_store_cptkbd()
425 static int lenovo_raw_event(struct hid_device *hdev, in lenovo_raw_event() argument
433 if (unlikely(hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD in lenovo_raw_event()
445 static int lenovo_event_tp10ubkbd(struct hid_device *hdev, in lenovo_event_tp10ubkbd() argument
448 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in lenovo_event_tp10ubkbd()
463 static int lenovo_event_cptkbd(struct hid_device *hdev, in lenovo_event_cptkbd() argument
466 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev); in lenovo_event_cptkbd()
498 static int lenovo_event(struct hid_device *hdev, struct hid_field *field, in lenovo_event() argument
501 switch (hdev->product) { in lenovo_event()
504 return lenovo_event_cptkbd(hdev, field, usage, value); in lenovo_event()
506 return lenovo_event_tp10ubkbd(hdev, field, usage, value); in lenovo_event()
512 static int lenovo_features_set_tpkbd(struct hid_device *hdev) in lenovo_features_set_tpkbd() argument
515 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_features_set_tpkbd()
517 report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[4]; in lenovo_features_set_tpkbd()
527 hid_hw_request(hdev, report, HID_REQ_SET_REPORT); in lenovo_features_set_tpkbd()
535 struct hid_device *hdev = to_hid_device(dev); in attr_press_to_select_show_tpkbd() local
536 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_press_to_select_show_tpkbd()
546 struct hid_device *hdev = to_hid_device(dev); in attr_press_to_select_store_tpkbd() local
547 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_press_to_select_store_tpkbd()
556 lenovo_features_set_tpkbd(hdev); in attr_press_to_select_store_tpkbd()
565 struct hid_device *hdev = to_hid_device(dev); in attr_dragging_show_tpkbd() local
566 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_dragging_show_tpkbd()
576 struct hid_device *hdev = to_hid_device(dev); in attr_dragging_store_tpkbd() local
577 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_dragging_store_tpkbd()
586 lenovo_features_set_tpkbd(hdev); in attr_dragging_store_tpkbd()
595 struct hid_device *hdev = to_hid_device(dev); in attr_release_to_select_show_tpkbd() local
596 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_release_to_select_show_tpkbd()
606 struct hid_device *hdev = to_hid_device(dev); in attr_release_to_select_store_tpkbd() local
607 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_release_to_select_store_tpkbd()
616 lenovo_features_set_tpkbd(hdev); in attr_release_to_select_store_tpkbd()
625 struct hid_device *hdev = to_hid_device(dev); in attr_select_right_show_tpkbd() local
626 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_select_right_show_tpkbd()
636 struct hid_device *hdev = to_hid_device(dev); in attr_select_right_store_tpkbd() local
637 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_select_right_store_tpkbd()
646 lenovo_features_set_tpkbd(hdev); in attr_select_right_store_tpkbd()
655 struct hid_device *hdev = to_hid_device(dev); in attr_sensitivity_show_tpkbd() local
656 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_sensitivity_show_tpkbd()
667 struct hid_device *hdev = to_hid_device(dev); in attr_sensitivity_store_tpkbd() local
668 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_sensitivity_store_tpkbd()
675 lenovo_features_set_tpkbd(hdev); in attr_sensitivity_store_tpkbd()
684 struct hid_device *hdev = to_hid_device(dev); in attr_press_speed_show_tpkbd() local
685 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_press_speed_show_tpkbd()
696 struct hid_device *hdev = to_hid_device(dev); in attr_press_speed_store_tpkbd() local
697 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_press_speed_store_tpkbd()
704 lenovo_features_set_tpkbd(hdev); in attr_press_speed_store_tpkbd()
753 static void lenovo_led_set_tpkbd(struct hid_device *hdev) in lenovo_led_set_tpkbd() argument
755 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_led_set_tpkbd()
758 report = hdev->report_enum[HID_OUTPUT_REPORT].report_id_hash[3]; in lenovo_led_set_tpkbd()
761 hid_hw_request(hdev, report, HID_REQ_SET_REPORT); in lenovo_led_set_tpkbd()
768 struct hid_device *hdev = to_hid_device(dev); in lenovo_led_brightness_get() local
769 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_led_brightness_get()
784 struct hid_device *hdev = to_hid_device(dev); in lenovo_led_brightness_set() local
785 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_led_brightness_set()
797 switch (hdev->product) { in lenovo_led_brightness_set()
799 lenovo_led_set_tpkbd(hdev); in lenovo_led_brightness_set()
802 lenovo_led_set_tp10ubkbd(hdev, tp10ubkbd_led[led_nr], value); in lenovo_led_brightness_set()
807 static int lenovo_register_leds(struct hid_device *hdev) in lenovo_register_leds() argument
809 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in lenovo_register_leds()
810 size_t name_sz = strlen(dev_name(&hdev->dev)) + 16; in lenovo_register_leds()
814 name_mute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL); in lenovo_register_leds()
815 name_micm = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL); in lenovo_register_leds()
817 hid_err(hdev, "Could not allocate memory for led data\n"); in lenovo_register_leds()
820 snprintf(name_mute, name_sz, "%s:amber:mute", dev_name(&hdev->dev)); in lenovo_register_leds()
821 snprintf(name_micm, name_sz, "%s:amber:micmute", dev_name(&hdev->dev)); in lenovo_register_leds()
826 data->led_mute.dev = &hdev->dev; in lenovo_register_leds()
827 ret = led_classdev_register(&hdev->dev, &data->led_mute); in lenovo_register_leds()
834 data->led_micmute.dev = &hdev->dev; in lenovo_register_leds()
835 ret = led_classdev_register(&hdev->dev, &data->led_micmute); in lenovo_register_leds()
844 static int lenovo_probe_tpkbd(struct hid_device *hdev) in lenovo_probe_tpkbd() argument
853 if (!hid_get_drvdata(hdev)) in lenovo_probe_tpkbd()
856 hid_set_drvdata(hdev, NULL); in lenovo_probe_tpkbd()
860 if (!hid_validate_values(hdev, HID_FEATURE_REPORT, 4, i, 1)) in lenovo_probe_tpkbd()
863 if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 3, 0, 2)) in lenovo_probe_tpkbd()
866 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd); in lenovo_probe_tpkbd()
868 hid_warn(hdev, "Could not create sysfs group: %d\n", ret); in lenovo_probe_tpkbd()
870 data_pointer = devm_kzalloc(&hdev->dev, in lenovo_probe_tpkbd()
874 hid_err(hdev, "Could not allocate memory for driver data\n"); in lenovo_probe_tpkbd()
883 hid_set_drvdata(hdev, data_pointer); in lenovo_probe_tpkbd()
885 ret = lenovo_register_leds(hdev); in lenovo_probe_tpkbd()
889 lenovo_features_set_tpkbd(hdev); in lenovo_probe_tpkbd()
893 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd); in lenovo_probe_tpkbd()
897 static int lenovo_probe_cptkbd(struct hid_device *hdev) in lenovo_probe_cptkbd() argument
903 if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD in lenovo_probe_cptkbd()
904 && hdev->type != HID_TYPE_USBMOUSE) { in lenovo_probe_cptkbd()
905 hid_dbg(hdev, "Ignoring keyboard half of device\n"); in lenovo_probe_cptkbd()
909 cptkbd_data = devm_kzalloc(&hdev->dev, in lenovo_probe_cptkbd()
913 hid_err(hdev, "can't alloc keyboard descriptor\n"); in lenovo_probe_cptkbd()
916 hid_set_drvdata(hdev, cptkbd_data); in lenovo_probe_cptkbd()
922 ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03); in lenovo_probe_cptkbd()
924 hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret); in lenovo_probe_cptkbd()
927 ret = lenovo_send_cmd_cptkbd(hdev, 0x09, 0x01); in lenovo_probe_cptkbd()
929 hid_warn(hdev, "Failed to switch middle button: %d\n", ret); in lenovo_probe_cptkbd()
935 lenovo_features_set_cptkbd(hdev); in lenovo_probe_cptkbd()
937 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_cptkbd); in lenovo_probe_cptkbd()
939 hid_warn(hdev, "Could not create sysfs group: %d\n", ret); in lenovo_probe_cptkbd()
953 static int lenovo_probe_tp10ubkbd(struct hid_device *hdev) in lenovo_probe_tp10ubkbd() argument
959 if (hdev->type != HID_TYPE_USBMOUSE) in lenovo_probe_tp10ubkbd()
962 data = devm_kzalloc(&hdev->dev, sizeof(*data), GFP_KERNEL); in lenovo_probe_tp10ubkbd()
968 data->hdev = hdev; in lenovo_probe_tp10ubkbd()
970 hid_set_drvdata(hdev, data); in lenovo_probe_tp10ubkbd()
979 lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, data->fn_lock); in lenovo_probe_tp10ubkbd()
981 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd); in lenovo_probe_tp10ubkbd()
985 ret = lenovo_register_leds(hdev); in lenovo_probe_tp10ubkbd()
991 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd); in lenovo_probe_tp10ubkbd()
995 static int lenovo_probe(struct hid_device *hdev, in lenovo_probe() argument
1000 ret = hid_parse(hdev); in lenovo_probe()
1002 hid_err(hdev, "hid_parse failed\n"); in lenovo_probe()
1006 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); in lenovo_probe()
1008 hid_err(hdev, "hid_hw_start failed\n"); in lenovo_probe()
1012 switch (hdev->product) { in lenovo_probe()
1014 ret = lenovo_probe_tpkbd(hdev); in lenovo_probe()
1018 ret = lenovo_probe_cptkbd(hdev); in lenovo_probe()
1021 ret = lenovo_probe_tp10ubkbd(hdev); in lenovo_probe()
1032 hid_hw_stop(hdev); in lenovo_probe()
1037 static void lenovo_remove_tpkbd(struct hid_device *hdev) in lenovo_remove_tpkbd() argument
1039 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_remove_tpkbd()
1048 sysfs_remove_group(&hdev->dev.kobj, in lenovo_remove_tpkbd()
1055 static void lenovo_remove_cptkbd(struct hid_device *hdev) in lenovo_remove_cptkbd() argument
1057 sysfs_remove_group(&hdev->dev.kobj, in lenovo_remove_cptkbd()
1061 static void lenovo_remove_tp10ubkbd(struct hid_device *hdev) in lenovo_remove_tp10ubkbd() argument
1063 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in lenovo_remove_tp10ubkbd()
1071 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd); in lenovo_remove_tp10ubkbd()
1075 static void lenovo_remove(struct hid_device *hdev) in lenovo_remove() argument
1077 switch (hdev->product) { in lenovo_remove()
1079 lenovo_remove_tpkbd(hdev); in lenovo_remove()
1083 lenovo_remove_cptkbd(hdev); in lenovo_remove()
1086 lenovo_remove_tp10ubkbd(hdev); in lenovo_remove()
1090 hid_hw_stop(hdev); in lenovo_remove()
1093 static int lenovo_input_configured(struct hid_device *hdev, in lenovo_input_configured() argument
1096 switch (hdev->product) { in lenovo_input_configured()