Lines Matching refs:hdev

125 	struct hid_device *hdev;  member
133 static int rmi_write_report(struct hid_device *hdev, u8 *report, int len);
149 static int rmi_set_page(struct hid_device *hdev, u8 page) in rmi_set_page() argument
151 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_set_page()
159 retval = rmi_write_report(hdev, data->writeReport, in rmi_set_page()
162 dev_err(&hdev->dev, in rmi_set_page()
171 static int rmi_set_mode(struct hid_device *hdev, u8 mode) in rmi_set_mode() argument
176 ret = hid_hw_raw_request(hdev, RMI_SET_RMI_MODE_REPORT_ID, txbuf, in rmi_set_mode()
179 dev_err(&hdev->dev, "unable to set rmi mode to %d (%d)\n", mode, in rmi_set_mode()
187 static int rmi_write_report(struct hid_device *hdev, u8 *report, int len) in rmi_write_report() argument
191 ret = hid_hw_output_report(hdev, (void *)report, len); in rmi_write_report()
193 dev_err(&hdev->dev, "failed to write hid report (%d)\n", ret); in rmi_write_report()
200 static int rmi_read_block(struct hid_device *hdev, u16 addr, void *buf, in rmi_read_block() argument
203 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_read_block()
213 ret = rmi_set_page(hdev, RMI_PAGE(addr)); in rmi_read_block()
228 ret = rmi_write_report(hdev, data->writeReport, in rmi_read_block()
232 dev_err(&hdev->dev, in rmi_read_block()
244 hid_warn(hdev, "%s: timeout elapsed\n", in rmi_read_block()
272 static inline int rmi_read(struct hid_device *hdev, u16 addr, void *buf) in rmi_read() argument
274 return rmi_read_block(hdev, addr, buf, 1); in rmi_read()
277 static int rmi_write_block(struct hid_device *hdev, u16 addr, void *buf, in rmi_write_block() argument
280 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_write_block()
286 ret = rmi_set_page(hdev, RMI_PAGE(addr)); in rmi_write_block()
297 ret = rmi_write_report(hdev, data->writeReport, in rmi_write_block()
300 dev_err(&hdev->dev, in rmi_write_block()
312 static inline int rmi_write(struct hid_device *hdev, u16 addr, void *buf) in rmi_write() argument
314 return rmi_write_block(hdev, addr, buf, 1); in rmi_write()
355 rmi_set_mode(hdata->hdev, RMI_MODE_ATTN_REPORTS); in rmi_reset_work()
358 static inline int rmi_schedule_reset(struct hid_device *hdev) in rmi_schedule_reset() argument
360 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_schedule_reset()
364 static int rmi_f11_input_event(struct hid_device *hdev, u8 irq, u8 *data, in rmi_f11_input_event() argument
367 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_f11_input_event()
386 dev_driver_string(&hdev->dev), in rmi_f11_input_event()
387 dev_name(&hdev->dev)); in rmi_f11_input_event()
388 hid_dbg(hdev, "Incomplete finger report\n"); in rmi_f11_input_event()
399 static int rmi_f30_input_event(struct hid_device *hdev, u8 irq, u8 *data, in rmi_f30_input_event() argument
402 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_f30_input_event()
411 hid_warn(hdev, "Click Button pressed, but the click data is missing\n"); in rmi_f30_input_event()
427 static int rmi_input_event(struct hid_device *hdev, u8 *data, int size) in rmi_input_event() argument
429 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_input_event()
440 hid_dbg(hdev, "unknown intr source:%02lx %s:%d\n", in rmi_input_event()
444 index += rmi_f11_input_event(hdev, data[1], &data[index], in rmi_input_event()
446 index += rmi_f30_input_event(hdev, data[1], &data[index], in rmi_input_event()
449 index += rmi_f30_input_event(hdev, data[1], &data[index], in rmi_input_event()
451 index += rmi_f11_input_event(hdev, data[1], &data[index], in rmi_input_event()
458 static int rmi_read_data_event(struct hid_device *hdev, u8 *data, int size) in rmi_read_data_event() argument
460 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_read_data_event()
463 hid_dbg(hdev, "no read request pending\n"); in rmi_read_data_event()
475 static int rmi_check_sanity(struct hid_device *hdev, u8 *data, int size) in rmi_check_sanity() argument
491 static int rmi_raw_event(struct hid_device *hdev, in rmi_raw_event() argument
494 size = rmi_check_sanity(hdev, data, size); in rmi_raw_event()
500 return rmi_read_data_event(hdev, data, size); in rmi_raw_event()
502 return rmi_input_event(hdev, data, size); in rmi_raw_event()
510 static int rmi_event(struct hid_device *hdev, struct hid_field *field, in rmi_event() argument
513 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_event()
527 rmi_schedule_reset(hdev); in rmi_event()
535 static int rmi_post_reset(struct hid_device *hdev) in rmi_post_reset() argument
537 return rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); in rmi_post_reset()
540 static int rmi_post_resume(struct hid_device *hdev) in rmi_post_resume() argument
542 return rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); in rmi_post_resume()
601 static int rmi_scan_pdt(struct hid_device *hdev) in rmi_scan_pdt() argument
603 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_scan_pdt()
612 hid_info(hdev, "Scanning PDT...\n"); in rmi_scan_pdt()
621 retval = rmi_read_block(hdev, i, &entry, sizeof(entry)); in rmi_scan_pdt()
623 hid_err(hdev, in rmi_scan_pdt()
634 hid_info(hdev, "Found F%02X on page %#04x\n", in rmi_scan_pdt()
645 hid_info(hdev, "%s: Done with PDT scan.\n", __func__); in rmi_scan_pdt()
654 static int rmi_populate_f01(struct hid_device *hdev) in rmi_populate_f01() argument
656 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_populate_f01()
670 ret = rmi_read_block(hdev, query_offset, basic_queries, in rmi_populate_f01()
673 hid_err(hdev, "Can not read basic queries from Function 0x1.\n"); in rmi_populate_f01()
692 ret = rmi_read(hdev, query_offset, info); in rmi_populate_f01()
694 hid_err(hdev, "Can not read query42.\n"); in rmi_populate_f01()
702 ret = rmi_read(hdev, query_offset, &ds4_query_len); in rmi_populate_f01()
704 hid_err(hdev, "Can not read DS4 Query length.\n"); in rmi_populate_f01()
710 ret = rmi_read(hdev, query_offset, info); in rmi_populate_f01()
712 hid_err(hdev, "Can not read DS4 query.\n"); in rmi_populate_f01()
725 ret = rmi_read_block(hdev, prod_info_addr, info, 3); in rmi_populate_f01()
727 hid_err(hdev, "Can not read product info.\n"); in rmi_populate_f01()
738 static int rmi_populate_f11(struct hid_device *hdev) in rmi_populate_f11() argument
740 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_populate_f11()
760 hid_err(hdev, "No 2D sensor found, giving up.\n"); in rmi_populate_f11()
765 ret = rmi_read(hdev, data->f11.query_base_addr, buf); in rmi_populate_f11()
767 hid_err(hdev, "can not get query 0: %d.\n", ret); in rmi_populate_f11()
777 ret = rmi_read(hdev, data->f11.query_base_addr + 1, buf); in rmi_populate_f11()
779 hid_err(hdev, "can not get NumberOfFingers: %d.\n", ret); in rmi_populate_f11()
790 hid_err(hdev, "No absolute events, giving up.\n"); in rmi_populate_f11()
797 ret = rmi_read(hdev, data->f11.query_base_addr + 5, buf); in rmi_populate_f11()
799 hid_err(hdev, "can not get absolute data sources: %d.\n", ret); in rmi_populate_f11()
817 ret = rmi_read(hdev, in rmi_populate_f11()
820 hid_err(hdev, "can not read gesture information: %d.\n", in rmi_populate_f11()
841 ret = rmi_read(hdev, data->f11.query_base_addr in rmi_populate_f11()
844 hid_err(hdev, "can not get query 12: %d.\n", ret); in rmi_populate_f11()
851 ret = rmi_read_block(hdev, in rmi_populate_f11()
855 hid_err(hdev, "can not read query 15-18: %d.\n", in rmi_populate_f11()
866 hid_info(hdev, "%s: size in mm: %d x %d\n", in rmi_populate_f11()
881 ret = rmi_read(hdev, data->f11.query_base_addr in rmi_populate_f11()
884 hid_err(hdev, "can not get query 28: %d.\n", ret); in rmi_populate_f11()
893 ret = rmi_read(hdev, data->f11.query_base_addr in rmi_populate_f11()
896 hid_err(hdev, "can not get query 36: %d.\n", ret); in rmi_populate_f11()
913 ret = rmi_read_block(hdev, data->f11.control_base_addr, buf, 12); in rmi_populate_f11()
915 hid_err(hdev, "can not read ctrl block of size 11: %d.\n", ret); in rmi_populate_f11()
924 ret = rmi_write(hdev, data->f11.control_base_addr, buf); in rmi_populate_f11()
926 hid_err(hdev, "can not write to control reg 0: %d.\n", in rmi_populate_f11()
934 ret = rmi_write(hdev, data->f11.control_base_addr + 11, in rmi_populate_f11()
937 hid_err(hdev, "can not write to control reg 11: %d.\n", in rmi_populate_f11()
946 static int rmi_populate_f30(struct hid_device *hdev) in rmi_populate_f30() argument
948 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_populate_f30()
959 hid_err(hdev, "No GPIO/LEDs found, giving up.\n"); in rmi_populate_f30()
963 ret = rmi_read_block(hdev, data->f30.query_base_addr, buf, 2); in rmi_populate_f30()
965 hid_err(hdev, "can not get F30 query registers: %d.\n", ret); in rmi_populate_f30()
983 ret = rmi_read_block(hdev, data->f30.control_base_addr + ctrl2_addr, in rmi_populate_f30()
986 hid_err(hdev, "can not read ctrl 2&3 block of size %d: %d.\n", in rmi_populate_f30()
1014 static int rmi_populate(struct hid_device *hdev) in rmi_populate() argument
1018 ret = rmi_scan_pdt(hdev); in rmi_populate()
1020 hid_err(hdev, "PDT scan failed with code %d.\n", ret); in rmi_populate()
1024 ret = rmi_populate_f01(hdev); in rmi_populate()
1026 hid_err(hdev, "Error while initializing F01 (%d).\n", ret); in rmi_populate()
1030 ret = rmi_populate_f11(hdev); in rmi_populate()
1032 hid_err(hdev, "Error while initializing F11 (%d).\n", ret); in rmi_populate()
1036 ret = rmi_populate_f30(hdev); in rmi_populate()
1038 hid_warn(hdev, "Error while initializing F30 (%d).\n", ret); in rmi_populate()
1043 static void rmi_input_configured(struct hid_device *hdev, struct hid_input *hi) in rmi_input_configured() argument
1045 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_input_configured()
1052 hid_dbg(hdev, "Opening low level driver\n"); in rmi_input_configured()
1053 ret = hid_hw_open(hdev); in rmi_input_configured()
1061 hid_device_io_start(hdev); in rmi_input_configured()
1063 ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); in rmi_input_configured()
1065 dev_err(&hdev->dev, "failed to set rmi mode\n"); in rmi_input_configured()
1069 ret = rmi_set_page(hdev, 0); in rmi_input_configured()
1071 dev_err(&hdev->dev, "failed to set page select to 0.\n"); in rmi_input_configured()
1075 ret = rmi_populate(hdev); in rmi_input_configured()
1079 hid_info(hdev, "firmware id: %ld\n", data->firmware_id); in rmi_input_configured()
1112 hid_device_io_stop(hdev); in rmi_input_configured()
1113 hid_hw_close(hdev); in rmi_input_configured()
1116 static int rmi_input_mapping(struct hid_device *hdev, in rmi_input_mapping() argument
1120 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_input_mapping()
1137 static int rmi_check_valid_report_id(struct hid_device *hdev, unsigned type, in rmi_check_valid_report_id() argument
1142 *report = hdev->report_enum[type].report_id_hash[id]; in rmi_check_valid_report_id()
1154 static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id) in rmi_probe() argument
1163 data = devm_kzalloc(&hdev->dev, sizeof(struct rmi_data), GFP_KERNEL); in rmi_probe()
1168 data->hdev = hdev; in rmi_probe()
1170 hid_set_drvdata(hdev, data); in rmi_probe()
1172 hdev->quirks |= HID_QUIRK_NO_INIT_REPORTS; in rmi_probe()
1174 ret = hid_parse(hdev); in rmi_probe()
1176 hid_err(hdev, "parse failed\n"); in rmi_probe()
1187 if (!rmi_check_valid_report_id(hdev, HID_FEATURE_REPORT, in rmi_probe()
1189 hid_dbg(hdev, "device does not have set mode feature report\n"); in rmi_probe()
1193 if (!rmi_check_valid_report_id(hdev, HID_INPUT_REPORT, in rmi_probe()
1195 hid_dbg(hdev, "device does not have attention input report\n"); in rmi_probe()
1201 if (!rmi_check_valid_report_id(hdev, HID_OUTPUT_REPORT, in rmi_probe()
1203 hid_dbg(hdev, in rmi_probe()
1213 data->writeReport = devm_kzalloc(&hdev->dev, alloc_size, GFP_KERNEL); in rmi_probe()
1226 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); in rmi_probe()
1228 hid_err(hdev, "hw start failed\n"); in rmi_probe()
1241 hid_err(hdev, "Device failed to be properly configured\n"); in rmi_probe()
1246 static void rmi_remove(struct hid_device *hdev) in rmi_remove() argument
1248 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_remove()
1252 hid_hw_stop(hdev); in rmi_remove()