• Home
  • Raw
  • Download

Lines Matching refs:hdev

46 	struct hid_device *hdev;  member
73 static int lenovo_led_set_tp10ubkbd(struct hid_device *hdev, u8 led_code, in lenovo_led_set_tp10ubkbd() argument
76 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in lenovo_led_set_tp10ubkbd()
84 ret = hid_hw_raw_request(hdev, data->led_report[0], data->led_report, 3, in lenovo_led_set_tp10ubkbd()
88 hid_err(hdev, "Set LED output report error: %d\n", ret); in lenovo_led_set_tp10ubkbd()
105 lenovo_led_set_tp10ubkbd(data->hdev, TP10UBKBD_FN_LOCK_LED, in lenovo_tp10ubkbd_sync_fn_lock()
118 static __u8 *lenovo_report_fixup(struct hid_device *hdev, __u8 *rdesc, in lenovo_report_fixup() argument
121 switch (hdev->product) { in lenovo_report_fixup()
138 static int lenovo_input_mapping_tpkbd(struct hid_device *hdev, in lenovo_input_mapping_tpkbd() argument
144 hid_set_drvdata(hdev, (void *)1); in lenovo_input_mapping_tpkbd()
151 static int lenovo_input_mapping_cptkbd(struct hid_device *hdev, in lenovo_input_mapping_cptkbd() argument
225 static int lenovo_input_mapping_scrollpoint(struct hid_device *hdev, in lenovo_input_mapping_scrollpoint() argument
236 static int lenovo_input_mapping_tp10_ultrabook_kbd(struct hid_device *hdev, in lenovo_input_mapping_tp10_ultrabook_kbd() argument
274 static int lenovo_input_mapping_x1_tab_kbd(struct hid_device *hdev, in lenovo_input_mapping_x1_tab_kbd() argument
322 static int lenovo_input_mapping(struct hid_device *hdev, in lenovo_input_mapping() argument
326 switch (hdev->product) { in lenovo_input_mapping()
328 return lenovo_input_mapping_tpkbd(hdev, hi, field, in lenovo_input_mapping()
332 return lenovo_input_mapping_cptkbd(hdev, hi, field, in lenovo_input_mapping()
340 return lenovo_input_mapping_scrollpoint(hdev, hi, field, in lenovo_input_mapping()
343 return lenovo_input_mapping_tp10_ultrabook_kbd(hdev, hi, field, in lenovo_input_mapping()
346 return lenovo_input_mapping_x1_tab_kbd(hdev, hi, field, usage, bit, max); in lenovo_input_mapping()
355 static int lenovo_send_cmd_cptkbd(struct hid_device *hdev, in lenovo_send_cmd_cptkbd() argument
369 switch (hdev->product) { in lenovo_send_cmd_cptkbd()
371 ret = hid_hw_raw_request(hdev, 0x13, buf, 3, in lenovo_send_cmd_cptkbd()
375 ret = hid_hw_output_report(hdev, buf, 3); in lenovo_send_cmd_cptkbd()
387 static void lenovo_features_set_cptkbd(struct hid_device *hdev) in lenovo_features_set_cptkbd() argument
390 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev); in lenovo_features_set_cptkbd()
392 ret = lenovo_send_cmd_cptkbd(hdev, 0x05, cptkbd_data->fn_lock); in lenovo_features_set_cptkbd()
394 hid_err(hdev, "Fn-lock setting failed: %d\n", ret); in lenovo_features_set_cptkbd()
396 ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity); in lenovo_features_set_cptkbd()
398 hid_err(hdev, "Sensitivity setting failed: %d\n", ret); in lenovo_features_set_cptkbd()
405 struct hid_device *hdev = to_hid_device(dev); in attr_fn_lock_show() local
406 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in attr_fn_lock_show()
416 struct hid_device *hdev = to_hid_device(dev); in attr_fn_lock_store() local
417 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in attr_fn_lock_store()
427 switch (hdev->product) { in attr_fn_lock_store()
430 lenovo_features_set_cptkbd(hdev); in attr_fn_lock_store()
434 ret = lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, value); in attr_fn_lock_store()
447 struct hid_device *hdev = to_hid_device(dev); in attr_sensitivity_show_cptkbd() local
448 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev); in attr_sensitivity_show_cptkbd()
459 struct hid_device *hdev = to_hid_device(dev); in attr_sensitivity_store_cptkbd() local
460 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev); in attr_sensitivity_store_cptkbd()
467 lenovo_features_set_cptkbd(hdev); in attr_sensitivity_store_cptkbd()
494 static int lenovo_raw_event(struct hid_device *hdev, in lenovo_raw_event() argument
502 if (unlikely(hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD in lenovo_raw_event()
514 static int lenovo_event_tp10ubkbd(struct hid_device *hdev, in lenovo_event_tp10ubkbd() argument
517 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in lenovo_event_tp10ubkbd()
532 static int lenovo_event_cptkbd(struct hid_device *hdev, in lenovo_event_cptkbd() argument
535 struct lenovo_drvdata *cptkbd_data = hid_get_drvdata(hdev); in lenovo_event_cptkbd()
543 if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD && in lenovo_event_cptkbd()
585 static int lenovo_event(struct hid_device *hdev, struct hid_field *field, in lenovo_event() argument
588 if (!hid_get_drvdata(hdev)) in lenovo_event()
591 switch (hdev->product) { in lenovo_event()
594 return lenovo_event_cptkbd(hdev, field, usage, value); in lenovo_event()
597 return lenovo_event_tp10ubkbd(hdev, field, usage, value); in lenovo_event()
603 static int lenovo_features_set_tpkbd(struct hid_device *hdev) in lenovo_features_set_tpkbd() argument
606 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_features_set_tpkbd()
608 report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[4]; in lenovo_features_set_tpkbd()
618 hid_hw_request(hdev, report, HID_REQ_SET_REPORT); in lenovo_features_set_tpkbd()
626 struct hid_device *hdev = to_hid_device(dev); in attr_press_to_select_show_tpkbd() local
627 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_press_to_select_show_tpkbd()
637 struct hid_device *hdev = to_hid_device(dev); in attr_press_to_select_store_tpkbd() local
638 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_press_to_select_store_tpkbd()
647 lenovo_features_set_tpkbd(hdev); in attr_press_to_select_store_tpkbd()
656 struct hid_device *hdev = to_hid_device(dev); in attr_dragging_show_tpkbd() local
657 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_dragging_show_tpkbd()
667 struct hid_device *hdev = to_hid_device(dev); in attr_dragging_store_tpkbd() local
668 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_dragging_store_tpkbd()
677 lenovo_features_set_tpkbd(hdev); in attr_dragging_store_tpkbd()
686 struct hid_device *hdev = to_hid_device(dev); in attr_release_to_select_show_tpkbd() local
687 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_release_to_select_show_tpkbd()
697 struct hid_device *hdev = to_hid_device(dev); in attr_release_to_select_store_tpkbd() local
698 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_release_to_select_store_tpkbd()
707 lenovo_features_set_tpkbd(hdev); in attr_release_to_select_store_tpkbd()
716 struct hid_device *hdev = to_hid_device(dev); in attr_select_right_show_tpkbd() local
717 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_select_right_show_tpkbd()
727 struct hid_device *hdev = to_hid_device(dev); in attr_select_right_store_tpkbd() local
728 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_select_right_store_tpkbd()
737 lenovo_features_set_tpkbd(hdev); in attr_select_right_store_tpkbd()
746 struct hid_device *hdev = to_hid_device(dev); in attr_sensitivity_show_tpkbd() local
747 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_sensitivity_show_tpkbd()
758 struct hid_device *hdev = to_hid_device(dev); in attr_sensitivity_store_tpkbd() local
759 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_sensitivity_store_tpkbd()
766 lenovo_features_set_tpkbd(hdev); in attr_sensitivity_store_tpkbd()
775 struct hid_device *hdev = to_hid_device(dev); in attr_press_speed_show_tpkbd() local
776 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_press_speed_show_tpkbd()
787 struct hid_device *hdev = to_hid_device(dev); in attr_press_speed_store_tpkbd() local
788 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in attr_press_speed_store_tpkbd()
795 lenovo_features_set_tpkbd(hdev); in attr_press_speed_store_tpkbd()
844 static void lenovo_led_set_tpkbd(struct hid_device *hdev) in lenovo_led_set_tpkbd() argument
846 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_led_set_tpkbd()
849 report = hdev->report_enum[HID_OUTPUT_REPORT].report_id_hash[3]; in lenovo_led_set_tpkbd()
852 hid_hw_request(hdev, report, HID_REQ_SET_REPORT); in lenovo_led_set_tpkbd()
859 struct hid_device *hdev = to_hid_device(dev); in lenovo_led_brightness_set() local
860 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_led_brightness_set()
873 switch (hdev->product) { in lenovo_led_brightness_set()
875 lenovo_led_set_tpkbd(hdev); in lenovo_led_brightness_set()
879 ret = lenovo_led_set_tp10ubkbd(hdev, tp10ubkbd_led[led_nr], value); in lenovo_led_brightness_set()
886 static int lenovo_register_leds(struct hid_device *hdev) in lenovo_register_leds() argument
888 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in lenovo_register_leds()
889 size_t name_sz = strlen(dev_name(&hdev->dev)) + 16; in lenovo_register_leds()
893 name_mute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL); in lenovo_register_leds()
894 name_micm = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL); in lenovo_register_leds()
896 hid_err(hdev, "Could not allocate memory for led data\n"); in lenovo_register_leds()
899 snprintf(name_mute, name_sz, "%s:amber:mute", dev_name(&hdev->dev)); in lenovo_register_leds()
900 snprintf(name_micm, name_sz, "%s:amber:micmute", dev_name(&hdev->dev)); in lenovo_register_leds()
907 data->led_mute.dev = &hdev->dev; in lenovo_register_leds()
908 ret = led_classdev_register(&hdev->dev, &data->led_mute); in lenovo_register_leds()
917 data->led_micmute.dev = &hdev->dev; in lenovo_register_leds()
918 ret = led_classdev_register(&hdev->dev, &data->led_micmute); in lenovo_register_leds()
927 static int lenovo_probe_tpkbd(struct hid_device *hdev) in lenovo_probe_tpkbd() argument
936 if (!hid_get_drvdata(hdev)) in lenovo_probe_tpkbd()
939 hid_set_drvdata(hdev, NULL); in lenovo_probe_tpkbd()
943 if (!hid_validate_values(hdev, HID_FEATURE_REPORT, 4, i, 1)) in lenovo_probe_tpkbd()
946 if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 3, 0, 2)) in lenovo_probe_tpkbd()
949 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd); in lenovo_probe_tpkbd()
951 hid_warn(hdev, "Could not create sysfs group: %d\n", ret); in lenovo_probe_tpkbd()
953 data_pointer = devm_kzalloc(&hdev->dev, in lenovo_probe_tpkbd()
957 hid_err(hdev, "Could not allocate memory for driver data\n"); in lenovo_probe_tpkbd()
966 hid_set_drvdata(hdev, data_pointer); in lenovo_probe_tpkbd()
968 ret = lenovo_register_leds(hdev); in lenovo_probe_tpkbd()
972 lenovo_features_set_tpkbd(hdev); in lenovo_probe_tpkbd()
976 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd); in lenovo_probe_tpkbd()
980 static int lenovo_probe_cptkbd(struct hid_device *hdev) in lenovo_probe_cptkbd() argument
986 if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD in lenovo_probe_cptkbd()
987 && hdev->type != HID_TYPE_USBMOUSE) { in lenovo_probe_cptkbd()
988 hid_dbg(hdev, "Ignoring keyboard half of device\n"); in lenovo_probe_cptkbd()
992 cptkbd_data = devm_kzalloc(&hdev->dev, in lenovo_probe_cptkbd()
996 hid_err(hdev, "can't alloc keyboard descriptor\n"); in lenovo_probe_cptkbd()
999 hid_set_drvdata(hdev, cptkbd_data); in lenovo_probe_cptkbd()
1005 ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03); in lenovo_probe_cptkbd()
1007 hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret); in lenovo_probe_cptkbd()
1010 ret = lenovo_send_cmd_cptkbd(hdev, 0x09, 0x01); in lenovo_probe_cptkbd()
1012 hid_warn(hdev, "Failed to switch middle button: %d\n", ret); in lenovo_probe_cptkbd()
1018 lenovo_features_set_cptkbd(hdev); in lenovo_probe_cptkbd()
1020 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_cptkbd); in lenovo_probe_cptkbd()
1022 hid_warn(hdev, "Could not create sysfs group: %d\n", ret); in lenovo_probe_cptkbd()
1036 static int lenovo_probe_tp10ubkbd(struct hid_device *hdev) in lenovo_probe_tp10ubkbd() argument
1050 rep_enum = &hdev->report_enum[HID_OUTPUT_REPORT]; in lenovo_probe_tp10ubkbd()
1058 data = devm_kzalloc(&hdev->dev, sizeof(*data), GFP_KERNEL); in lenovo_probe_tp10ubkbd()
1064 data->hdev = hdev; in lenovo_probe_tp10ubkbd()
1066 hid_set_drvdata(hdev, data); in lenovo_probe_tp10ubkbd()
1075 lenovo_led_set_tp10ubkbd(hdev, TP10UBKBD_FN_LOCK_LED, data->fn_lock); in lenovo_probe_tp10ubkbd()
1077 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd); in lenovo_probe_tp10ubkbd()
1081 ret = lenovo_register_leds(hdev); in lenovo_probe_tp10ubkbd()
1087 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd); in lenovo_probe_tp10ubkbd()
1091 static int lenovo_probe(struct hid_device *hdev, in lenovo_probe() argument
1096 ret = hid_parse(hdev); in lenovo_probe()
1098 hid_err(hdev, "hid_parse failed\n"); in lenovo_probe()
1102 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); in lenovo_probe()
1104 hid_err(hdev, "hid_hw_start failed\n"); in lenovo_probe()
1108 switch (hdev->product) { in lenovo_probe()
1110 ret = lenovo_probe_tpkbd(hdev); in lenovo_probe()
1114 ret = lenovo_probe_cptkbd(hdev); in lenovo_probe()
1118 ret = lenovo_probe_tp10ubkbd(hdev); in lenovo_probe()
1129 hid_hw_stop(hdev); in lenovo_probe()
1134 static void lenovo_remove_tpkbd(struct hid_device *hdev) in lenovo_remove_tpkbd() argument
1136 struct lenovo_drvdata *data_pointer = hid_get_drvdata(hdev); in lenovo_remove_tpkbd()
1145 sysfs_remove_group(&hdev->dev.kobj, in lenovo_remove_tpkbd()
1152 static void lenovo_remove_cptkbd(struct hid_device *hdev) in lenovo_remove_cptkbd() argument
1154 sysfs_remove_group(&hdev->dev.kobj, in lenovo_remove_cptkbd()
1158 static void lenovo_remove_tp10ubkbd(struct hid_device *hdev) in lenovo_remove_tp10ubkbd() argument
1160 struct lenovo_drvdata *data = hid_get_drvdata(hdev); in lenovo_remove_tp10ubkbd()
1168 sysfs_remove_group(&hdev->dev.kobj, &lenovo_attr_group_tp10ubkbd); in lenovo_remove_tp10ubkbd()
1172 static void lenovo_remove(struct hid_device *hdev) in lenovo_remove() argument
1174 switch (hdev->product) { in lenovo_remove()
1176 lenovo_remove_tpkbd(hdev); in lenovo_remove()
1180 lenovo_remove_cptkbd(hdev); in lenovo_remove()
1184 lenovo_remove_tp10ubkbd(hdev); in lenovo_remove()
1188 hid_hw_stop(hdev); in lenovo_remove()
1191 static int lenovo_input_configured(struct hid_device *hdev, in lenovo_input_configured() argument
1194 switch (hdev->product) { in lenovo_input_configured()