Lines Matching refs:hdev

46 static int lenovo_input_mapping_tpkbd(struct hid_device *hdev,  in lenovo_input_mapping_tpkbd()  argument
52 hid_set_drvdata(hdev, (void *)1); in lenovo_input_mapping_tpkbd()
59 static int lenovo_input_mapping_cptkbd(struct hid_device *hdev, in lenovo_input_mapping_cptkbd() argument
133 static int lenovo_input_mapping(struct hid_device *hdev, in lenovo_input_mapping() argument
137 switch (hdev->product) { in lenovo_input_mapping()
139 return lenovo_input_mapping_tpkbd(hdev, hi, field, in lenovo_input_mapping()
143 return lenovo_input_mapping_cptkbd(hdev, hi, field, in lenovo_input_mapping()
153 static int lenovo_send_cmd_cptkbd(struct hid_device *hdev, in lenovo_send_cmd_cptkbd() argument
159 switch (hdev->product) { in lenovo_send_cmd_cptkbd()
161 ret = hid_hw_raw_request(hdev, 0x13, buf, sizeof(buf), in lenovo_send_cmd_cptkbd()
165 ret = hid_hw_output_report(hdev, buf, sizeof(buf)); in lenovo_send_cmd_cptkbd()
175 static void lenovo_features_set_cptkbd(struct hid_device *hdev) in lenovo_features_set_cptkbd() argument
178 struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev); in lenovo_features_set_cptkbd()
180 ret = lenovo_send_cmd_cptkbd(hdev, 0x05, cptkbd_data->fn_lock); in lenovo_features_set_cptkbd()
181 ret = lenovo_send_cmd_cptkbd(hdev, 0x02, cptkbd_data->sensitivity); in lenovo_features_set_cptkbd()
183 hid_err(hdev, "Fn-lock setting failed: %d\n", ret); in lenovo_features_set_cptkbd()
190 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_fn_lock_show_cptkbd() local
191 struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev); in attr_fn_lock_show_cptkbd()
201 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_fn_lock_store_cptkbd() local
202 struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev); in attr_fn_lock_store_cptkbd()
211 lenovo_features_set_cptkbd(hdev); in attr_fn_lock_store_cptkbd()
220 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_sensitivity_show_cptkbd() local
221 struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev); in attr_sensitivity_show_cptkbd()
232 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_sensitivity_store_cptkbd() local
233 struct lenovo_drvdata_cptkbd *cptkbd_data = hid_get_drvdata(hdev); in attr_sensitivity_store_cptkbd()
240 lenovo_features_set_cptkbd(hdev); in attr_sensitivity_store_cptkbd()
267 static int lenovo_raw_event(struct hid_device *hdev, in lenovo_raw_event() argument
275 if (unlikely(hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD in lenovo_raw_event()
287 static int lenovo_features_set_tpkbd(struct hid_device *hdev) in lenovo_features_set_tpkbd() argument
290 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in lenovo_features_set_tpkbd()
292 report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[4]; in lenovo_features_set_tpkbd()
302 hid_hw_request(hdev, report, HID_REQ_SET_REPORT); in lenovo_features_set_tpkbd()
310 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_press_to_select_show_tpkbd() local
311 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_press_to_select_show_tpkbd()
321 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_press_to_select_store_tpkbd() local
322 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_press_to_select_store_tpkbd()
331 lenovo_features_set_tpkbd(hdev); in attr_press_to_select_store_tpkbd()
340 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_dragging_show_tpkbd() local
341 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_dragging_show_tpkbd()
351 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_dragging_store_tpkbd() local
352 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_dragging_store_tpkbd()
361 lenovo_features_set_tpkbd(hdev); in attr_dragging_store_tpkbd()
370 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_release_to_select_show_tpkbd() local
371 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_release_to_select_show_tpkbd()
381 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_release_to_select_store_tpkbd() local
382 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_release_to_select_store_tpkbd()
391 lenovo_features_set_tpkbd(hdev); in attr_release_to_select_store_tpkbd()
400 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_select_right_show_tpkbd() local
401 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_select_right_show_tpkbd()
411 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_select_right_store_tpkbd() local
412 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_select_right_store_tpkbd()
421 lenovo_features_set_tpkbd(hdev); in attr_select_right_store_tpkbd()
430 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_sensitivity_show_tpkbd() local
431 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_sensitivity_show_tpkbd()
442 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_sensitivity_store_tpkbd() local
443 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_sensitivity_store_tpkbd()
450 lenovo_features_set_tpkbd(hdev); in attr_sensitivity_store_tpkbd()
459 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_press_speed_show_tpkbd() local
460 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_press_speed_show_tpkbd()
471 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in attr_press_speed_store_tpkbd() local
472 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in attr_press_speed_store_tpkbd()
479 lenovo_features_set_tpkbd(hdev); in attr_press_speed_store_tpkbd()
532 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in lenovo_led_brightness_get_tpkbd() local
533 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in lenovo_led_brightness_get_tpkbd()
548 struct hid_device *hdev = container_of(dev, struct hid_device, dev); in lenovo_led_brightness_set_tpkbd() local
549 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in lenovo_led_brightness_set_tpkbd()
561 report = hdev->report_enum[HID_OUTPUT_REPORT].report_id_hash[3]; in lenovo_led_brightness_set_tpkbd()
564 hid_hw_request(hdev, report, HID_REQ_SET_REPORT); in lenovo_led_brightness_set_tpkbd()
567 static int lenovo_probe_tpkbd(struct hid_device *hdev) in lenovo_probe_tpkbd() argument
569 struct device *dev = &hdev->dev; in lenovo_probe_tpkbd()
580 if (!hid_get_drvdata(hdev)) in lenovo_probe_tpkbd()
583 hid_set_drvdata(hdev, NULL); in lenovo_probe_tpkbd()
587 if (!hid_validate_values(hdev, HID_FEATURE_REPORT, 4, i, 1)) in lenovo_probe_tpkbd()
590 if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 3, 0, 2)) in lenovo_probe_tpkbd()
593 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_tpkbd); in lenovo_probe_tpkbd()
595 hid_warn(hdev, "Could not create sysfs group: %d\n", ret); in lenovo_probe_tpkbd()
597 data_pointer = devm_kzalloc(&hdev->dev, in lenovo_probe_tpkbd()
601 hid_err(hdev, "Could not allocate memory for driver data\n"); in lenovo_probe_tpkbd()
609 name_mute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL); in lenovo_probe_tpkbd()
610 name_micmute = devm_kzalloc(&hdev->dev, name_sz, GFP_KERNEL); in lenovo_probe_tpkbd()
612 hid_err(hdev, "Could not allocate memory for led data\n"); in lenovo_probe_tpkbd()
618 hid_set_drvdata(hdev, data_pointer); in lenovo_probe_tpkbd()
634 lenovo_features_set_tpkbd(hdev); in lenovo_probe_tpkbd()
639 static int lenovo_probe_cptkbd(struct hid_device *hdev) in lenovo_probe_cptkbd() argument
645 if (hdev->product == USB_DEVICE_ID_LENOVO_CUSBKBD in lenovo_probe_cptkbd()
646 && hdev->type != HID_TYPE_USBMOUSE) { in lenovo_probe_cptkbd()
647 hid_dbg(hdev, "Ignoring keyboard half of device\n"); in lenovo_probe_cptkbd()
651 cptkbd_data = devm_kzalloc(&hdev->dev, in lenovo_probe_cptkbd()
655 hid_err(hdev, "can't alloc keyboard descriptor\n"); in lenovo_probe_cptkbd()
658 hid_set_drvdata(hdev, cptkbd_data); in lenovo_probe_cptkbd()
664 ret = lenovo_send_cmd_cptkbd(hdev, 0x01, 0x03); in lenovo_probe_cptkbd()
666 hid_warn(hdev, "Failed to switch F7/9/11 mode: %d\n", ret); in lenovo_probe_cptkbd()
669 ret = lenovo_send_cmd_cptkbd(hdev, 0x09, 0x01); in lenovo_probe_cptkbd()
671 hid_warn(hdev, "Failed to switch middle button: %d\n", ret); in lenovo_probe_cptkbd()
676 lenovo_features_set_cptkbd(hdev); in lenovo_probe_cptkbd()
678 ret = sysfs_create_group(&hdev->dev.kobj, &lenovo_attr_group_cptkbd); in lenovo_probe_cptkbd()
680 hid_warn(hdev, "Could not create sysfs group: %d\n", ret); in lenovo_probe_cptkbd()
685 static int lenovo_probe(struct hid_device *hdev, in lenovo_probe() argument
690 ret = hid_parse(hdev); in lenovo_probe()
692 hid_err(hdev, "hid_parse failed\n"); in lenovo_probe()
696 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); in lenovo_probe()
698 hid_err(hdev, "hid_hw_start failed\n"); in lenovo_probe()
702 switch (hdev->product) { in lenovo_probe()
704 ret = lenovo_probe_tpkbd(hdev); in lenovo_probe()
708 ret = lenovo_probe_cptkbd(hdev); in lenovo_probe()
719 hid_hw_stop(hdev); in lenovo_probe()
724 static void lenovo_remove_tpkbd(struct hid_device *hdev) in lenovo_remove_tpkbd() argument
726 struct lenovo_drvdata_tpkbd *data_pointer = hid_get_drvdata(hdev); in lenovo_remove_tpkbd()
735 sysfs_remove_group(&hdev->dev.kobj, in lenovo_remove_tpkbd()
741 hid_set_drvdata(hdev, NULL); in lenovo_remove_tpkbd()
744 static void lenovo_remove_cptkbd(struct hid_device *hdev) in lenovo_remove_cptkbd() argument
746 sysfs_remove_group(&hdev->dev.kobj, in lenovo_remove_cptkbd()
750 static void lenovo_remove(struct hid_device *hdev) in lenovo_remove() argument
752 switch (hdev->product) { in lenovo_remove()
754 lenovo_remove_tpkbd(hdev); in lenovo_remove()
758 lenovo_remove_cptkbd(hdev); in lenovo_remove()
762 hid_hw_stop(hdev); in lenovo_remove()