Lines Matching refs:hdev

98 	struct hid_device *hdev;  member
108 static int rmi_write_report(struct hid_device *hdev, u8 *report, int len);
124 static int rmi_set_page(struct hid_device *hdev, u8 page) in rmi_set_page() argument
126 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_set_page()
134 retval = rmi_write_report(hdev, data->writeReport, in rmi_set_page()
137 dev_err(&hdev->dev, in rmi_set_page()
146 static int rmi_set_mode(struct hid_device *hdev, u8 mode) in rmi_set_mode() argument
156 ret = hid_hw_raw_request(hdev, RMI_SET_RMI_MODE_REPORT_ID, buf, in rmi_set_mode()
160 dev_err(&hdev->dev, "unable to set rmi mode to %d (%d)\n", mode, in rmi_set_mode()
168 static int rmi_write_report(struct hid_device *hdev, u8 *report, int len) in rmi_write_report() argument
172 ret = hid_hw_output_report(hdev, (void *)report, len); in rmi_write_report()
174 dev_err(&hdev->dev, "failed to write hid report (%d)\n", ret); in rmi_write_report()
185 struct hid_device *hdev = data->hdev; in rmi_hid_read_block() local
195 ret = rmi_set_page(hdev, RMI_PAGE(addr)); in rmi_hid_read_block()
210 ret = rmi_write_report(hdev, data->writeReport, in rmi_hid_read_block()
214 dev_err(&hdev->dev, in rmi_hid_read_block()
226 hid_warn(hdev, "%s: timeout elapsed\n", in rmi_hid_read_block()
258 struct hid_device *hdev = data->hdev; in rmi_hid_write_block() local
264 ret = rmi_set_page(hdev, RMI_PAGE(addr)); in rmi_hid_write_block()
275 ret = rmi_write_report(hdev, data->writeReport, in rmi_hid_write_block()
278 dev_err(&hdev->dev, in rmi_hid_write_block()
290 static int rmi_reset_attn_mode(struct hid_device *hdev) in rmi_reset_attn_mode() argument
292 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_reset_attn_mode()
296 ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); in rmi_reset_attn_mode()
312 rmi_reset_attn_mode(hdata->hdev); in rmi_reset_work()
315 static int rmi_input_event(struct hid_device *hdev, u8 *data, int size) in rmi_input_event() argument
317 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_input_event()
335 static int rmi_read_data_event(struct hid_device *hdev, u8 *data, int size) in rmi_read_data_event() argument
337 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_read_data_event()
340 hid_dbg(hdev, "no read request pending\n"); in rmi_read_data_event()
352 static int rmi_check_sanity(struct hid_device *hdev, u8 *data, int size) in rmi_check_sanity() argument
368 static int rmi_raw_event(struct hid_device *hdev, in rmi_raw_event() argument
371 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_raw_event()
376 size = rmi_check_sanity(hdev, data, size); in rmi_raw_event()
382 return rmi_read_data_event(hdev, data, size); in rmi_raw_event()
384 return rmi_input_event(hdev, data, size); in rmi_raw_event()
392 static int rmi_event(struct hid_device *hdev, struct hid_field *field, in rmi_event() argument
395 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_event()
435 static int rmi_suspend(struct hid_device *hdev, pm_message_t message) in rmi_suspend() argument
437 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_suspend()
446 hid_warn(hdev, "Failed to suspend device: %d\n", ret); in rmi_suspend()
453 static int rmi_post_resume(struct hid_device *hdev) in rmi_post_resume() argument
455 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_post_resume()
463 ret = hid_hw_open(hdev); in rmi_post_resume()
467 ret = rmi_reset_attn_mode(hdev); in rmi_post_resume()
473 hid_warn(hdev, "Failed to resume device: %d\n", ret); in rmi_post_resume()
478 hid_hw_close(hdev); in rmi_post_resume()
486 struct hid_device *hdev = data->hdev; in rmi_hid_reset() local
488 return rmi_reset_attn_mode(hdev); in rmi_hid_reset()
491 static int rmi_input_configured(struct hid_device *hdev, struct hid_input *hi) in rmi_input_configured() argument
493 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_input_configured()
502 hid_dbg(hdev, "Opening low level driver\n"); in rmi_input_configured()
503 ret = hid_hw_open(hdev); in rmi_input_configured()
508 hid_device_io_start(hdev); in rmi_input_configured()
510 ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); in rmi_input_configured()
512 dev_err(&hdev->dev, "failed to set rmi mode\n"); in rmi_input_configured()
516 ret = rmi_set_page(hdev, 0); in rmi_input_configured()
518 dev_err(&hdev->dev, "failed to set page select to 0.\n"); in rmi_input_configured()
524 dev_err(&hdev->dev, "failed to register transport driver\n"); in rmi_input_configured()
531 hid_device_io_stop(hdev); in rmi_input_configured()
532 hid_hw_close(hdev); in rmi_input_configured()
536 static int rmi_input_mapping(struct hid_device *hdev, in rmi_input_mapping() argument
540 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_input_mapping()
557 static int rmi_check_valid_report_id(struct hid_device *hdev, unsigned type, in rmi_check_valid_report_id() argument
562 *report = hdev->report_enum[type].report_id_hash[id]; in rmi_check_valid_report_id()
616 static int rmi_setup_irq_domain(struct hid_device *hdev) in rmi_setup_irq_domain() argument
618 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_setup_irq_domain()
621 hdata->domain = irq_domain_create_linear(hdev->dev.fwnode, 1, in rmi_setup_irq_domain()
626 ret = devm_add_action_or_reset(&hdev->dev, &rmi_irq_teardown, hdata); in rmi_setup_irq_domain()
632 hid_err(hdev, "Can't allocate an IRQ\n"); in rmi_setup_irq_domain()
639 static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id) in rmi_probe() argument
648 data = devm_kzalloc(&hdev->dev, sizeof(struct rmi_data), GFP_KERNEL); in rmi_probe()
653 data->hdev = hdev; in rmi_probe()
655 hid_set_drvdata(hdev, data); in rmi_probe()
657 hdev->quirks |= HID_QUIRK_NO_INIT_REPORTS; in rmi_probe()
658 hdev->quirks |= HID_QUIRK_NO_INPUT_SYNC; in rmi_probe()
660 ret = hid_parse(hdev); in rmi_probe()
662 hid_err(hdev, "parse failed\n"); in rmi_probe()
673 if (!rmi_check_valid_report_id(hdev, HID_FEATURE_REPORT, in rmi_probe()
675 hid_dbg(hdev, "device does not have set mode feature report\n"); in rmi_probe()
679 if (!rmi_check_valid_report_id(hdev, HID_INPUT_REPORT, in rmi_probe()
681 hid_dbg(hdev, "device does not have attention input report\n"); in rmi_probe()
687 if (!rmi_check_valid_report_id(hdev, HID_OUTPUT_REPORT, in rmi_probe()
689 hid_dbg(hdev, in rmi_probe()
699 data->writeReport = devm_kzalloc(&hdev->dev, alloc_size, GFP_KERNEL); in rmi_probe()
701 hid_err(hdev, "failed to allocate buffer for HID reports\n"); in rmi_probe()
711 ret = rmi_setup_irq_domain(hdev); in rmi_probe()
713 hid_err(hdev, "failed to allocate IRQ domain\n"); in rmi_probe()
720 data->xport.dev = hdev->dev.parent; in rmi_probe()
727 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); in rmi_probe()
729 hid_err(hdev, "hw start failed\n"); in rmi_probe()
736 static void rmi_remove(struct hid_device *hdev) in rmi_remove() argument
738 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_remove()
746 hid_hw_stop(hdev); in rmi_remove()