Lines Matching defs:hdev
157 struct hid_device *hdev;
577 static struct dj_receiver_dev *dj_find_receiver_dev(struct hid_device *hdev,
592 hid_compare_device_paths(hdev, djrcv_dev->mouse, sep)) {
597 hid_compare_device_paths(hdev, djrcv_dev->keyboard, sep)) {
602 hid_compare_device_paths(hdev, djrcv_dev->hidpp, sep)) {
620 static void dj_put_receiver_dev(struct hid_device *hdev)
622 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
626 if (djrcv_dev->mouse == hdev)
628 if (djrcv_dev->keyboard == hdev)
630 if (djrcv_dev->hidpp == hdev)
638 static struct dj_receiver_dev *dj_get_receiver_dev(struct hid_device *hdev,
647 djrcv_dev = dj_find_receiver_dev(hdev, type);
669 djrcv_dev->keyboard = hdev;
671 djrcv_dev->mouse = hdev;
673 djrcv_dev->hidpp = hdev;
675 hid_set_drvdata(hdev, djrcv_dev);
694 hid_destroy_device(dj_dev->hdev);
775 dj_dev->hdev = dj_hiddev;
939 static void logi_hidpp_dev_conn_notif_equad(struct hid_device *hdev,
943 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
975 static void logi_hidpp_dev_conn_notif_27mhz(struct hid_device *hdev,
989 hid_info(hdev, "Keyboard connection is encrypted\n");
991 hid_warn(hdev, "Keyboard events are send over the air in plain-text / unencrypted\n");
992 hid_warn(hdev, "See: https://gitlab.freedesktop.org/jwrdegoede/logitech-27mhz-keyboard-encryption-setup/\n");
1001 hid_warn(hdev, "%s: unexpected device-index %d", __func__,
1006 static void logi_hidpp_recv_queue_notif(struct hid_device *hdev,
1010 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
1021 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1024 hid_info(hdev, "Non Logitech device connected on slot %d\n",
1031 logi_hidpp_dev_conn_notif_27mhz(hdev, hidpp_report, &workitem);
1035 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1039 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1046 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1050 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1058 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1062 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1067 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1073 logi_hidpp_dev_conn_notif_equad(hdev, hidpp_report, &workitem);
1084 hid_warn(hdev,
1092 hid_info(hdev, "device of type %s (0x%02x) connected on slot %d",
1115 if (hid_input_report(djdev->hdev,
1140 if (hid_input_report(dj_device->hdev,
1151 if (hid_input_report(dj_dev->hdev, HID_INPUT_REPORT, data, size, 1))
1155 static void logi_dj_recv_forward_input_report(struct hid_device *hdev,
1158 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
1165 hid_err(hdev, "Unexpected input report number %d\n", report);
1188 struct hid_device *hdev = djrcv_dev->hidpp;
1194 output_report_enum = &hdev->report_enum[HID_OUTPUT_REPORT];
1198 hid_err(hdev, "%s: unable to find dj report\n", __func__);
1205 hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
1262 struct hid_device *hdev = djrcv_dev->hidpp;
1312 retval = hid_hw_raw_request(hdev, REPORT_ID_HIDPP_SHORT, buf,
1419 djdev->hdev->version = 0x0111;
1420 djdev->hdev->country = 0x00;
1522 static int logi_dj_dj_event(struct hid_device *hdev,
1526 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
1556 hid_err(hdev, "%s: invalid device index:%d\n",
1592 static int logi_dj_hidpp_event(struct hid_device *hdev,
1596 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
1628 hid_err(hdev, "%s: invalid device index:%d\n", __func__,
1645 dj_dev->hdev->product) {
1659 logi_hidpp_recv_queue_notif(hdev, hidpp_report);
1669 static int logi_dj_raw_event(struct hid_device *hdev,
1673 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
1679 if (!hdev->report_enum[HID_INPUT_REPORT].numbered) {
1690 logi_dj_recv_forward_input_report(hdev, data, size);
1707 logi_dj_recv_forward_input_report(hdev, mouse_report,
1717 hid_err(hdev, "Short DJ report bad size (%d)", size);
1720 return logi_dj_dj_event(hdev, report, data, size);
1723 hid_err(hdev, "Long DJ report bad size (%d)", size);
1726 return logi_dj_dj_event(hdev, report, data, size);
1729 hid_err(hdev, "Short HID++ report bad size (%d)", size);
1732 return logi_dj_hidpp_event(hdev, report, data, size);
1735 hid_err(hdev, "Long HID++ report bad size (%d)", size);
1738 return logi_dj_hidpp_event(hdev, report, data, size);
1741 logi_dj_recv_forward_input_report(hdev, data, size);
1746 static int logi_dj_probe(struct hid_device *hdev,
1763 retval = hid_parse(hdev);
1765 hid_err(hdev, "%s: parse failed\n", __func__);
1784 if (hid_is_usb(hdev)) {
1785 intf = to_usb_interface(hdev->dev.parent);
1788 hdev->quirks |= HID_QUIRK_INPUT_PER_APP;
1789 return hid_hw_start(hdev, HID_CONNECT_DEFAULT);
1793 rep_enum = &hdev->report_enum[HID_INPUT_REPORT];
1818 djrcv_dev = dj_get_receiver_dev(hdev, id->driver_data,
1821 hid_err(hdev, "%s: dj_get_receiver_dev failed\n", __func__);
1830 retval = hid_hw_start(hdev, HID_CONNECT_HIDRAW|HID_CONNECT_HIDDEV);
1832 hid_err(hdev, "%s: hid_hw_start returned error\n", __func__);
1839 hid_err(hdev, "%s: logi_dj_recv_switch_to_dj_mode returned error:%d\n",
1846 retval = hid_hw_open(hdev);
1848 hid_err(hdev, "%s: hid_hw_open returned error:%d\n",
1854 hid_device_io_start(hdev);
1862 hid_err(hdev, "%s: logi_dj_recv_query_paired_devices error:%d\n",
1875 hid_hw_stop(hdev);
1878 dj_put_receiver_dev(hdev);
1883 static int logi_dj_reset_resume(struct hid_device *hdev)
1886 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
1888 if (!djrcv_dev || djrcv_dev->hidpp != hdev)
1893 hid_err(hdev, "%s: logi_dj_recv_switch_to_dj_mode returned error:%d\n",
1901 static void logi_dj_remove(struct hid_device *hdev)
1903 struct dj_receiver_dev *djrcv_dev = hid_get_drvdata(hdev);
1911 return hid_hw_stop(hdev);
1923 hid_hw_close(hdev);
1924 hid_hw_stop(hdev);
1939 hid_destroy_device(dj_dev->hdev);
1944 dj_put_receiver_dev(hdev);