• Home
  • Raw
  • Download

Lines Matching refs:hdev

95 	struct hid_device *hdev;  member
105 static int rmi_write_report(struct hid_device *hdev, u8 *report, int len);
121 static int rmi_set_page(struct hid_device *hdev, u8 page) in rmi_set_page() argument
123 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_set_page()
131 retval = rmi_write_report(hdev, data->writeReport, in rmi_set_page()
134 dev_err(&hdev->dev, in rmi_set_page()
143 static int rmi_set_mode(struct hid_device *hdev, u8 mode) in rmi_set_mode() argument
153 ret = hid_hw_raw_request(hdev, RMI_SET_RMI_MODE_REPORT_ID, buf, in rmi_set_mode()
157 dev_err(&hdev->dev, "unable to set rmi mode to %d (%d)\n", mode, in rmi_set_mode()
165 static int rmi_write_report(struct hid_device *hdev, u8 *report, int len) in rmi_write_report() argument
167 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_write_report()
174 ret = hid_hw_raw_request(hdev, report[0], report, in rmi_write_report()
177 ret = hid_hw_output_report(hdev, (void *)report, len); in rmi_write_report()
181 dev_err(&hdev->dev, "failed to write hid report (%d)\n", ret); in rmi_write_report()
192 struct hid_device *hdev = data->hdev; in rmi_hid_read_block() local
202 ret = rmi_set_page(hdev, RMI_PAGE(addr)); in rmi_hid_read_block()
217 ret = rmi_write_report(hdev, data->writeReport, in rmi_hid_read_block()
220 dev_err(&hdev->dev, in rmi_hid_read_block()
232 hid_warn(hdev, "%s: timeout elapsed\n", in rmi_hid_read_block()
264 struct hid_device *hdev = data->hdev; in rmi_hid_write_block() local
270 ret = rmi_set_page(hdev, RMI_PAGE(addr)); in rmi_hid_write_block()
281 ret = rmi_write_report(hdev, data->writeReport, in rmi_hid_write_block()
284 dev_err(&hdev->dev, in rmi_hid_write_block()
296 static int rmi_reset_attn_mode(struct hid_device *hdev) in rmi_reset_attn_mode() argument
298 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_reset_attn_mode()
302 ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); in rmi_reset_attn_mode()
318 rmi_reset_attn_mode(hdata->hdev); in rmi_reset_work()
321 static int rmi_input_event(struct hid_device *hdev, u8 *data, int size) in rmi_input_event() argument
323 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_input_event()
341 static int rmi_read_data_event(struct hid_device *hdev, u8 *data, int size) in rmi_read_data_event() argument
343 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_read_data_event()
346 hid_dbg(hdev, "no read request pending\n"); in rmi_read_data_event()
358 static int rmi_check_sanity(struct hid_device *hdev, u8 *data, int size) in rmi_check_sanity() argument
374 static int rmi_raw_event(struct hid_device *hdev, in rmi_raw_event() argument
377 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_raw_event()
382 size = rmi_check_sanity(hdev, data, size); in rmi_raw_event()
388 return rmi_read_data_event(hdev, data, size); in rmi_raw_event()
390 return rmi_input_event(hdev, data, size); in rmi_raw_event()
398 static int rmi_event(struct hid_device *hdev, struct hid_field *field, in rmi_event() argument
401 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_event()
440 static int rmi_suspend(struct hid_device *hdev, pm_message_t message) in rmi_suspend() argument
442 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_suspend()
451 hid_warn(hdev, "Failed to suspend device: %d\n", ret); in rmi_suspend()
458 static int rmi_post_resume(struct hid_device *hdev) in rmi_post_resume() argument
460 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_post_resume()
468 ret = hid_hw_open(hdev); in rmi_post_resume()
472 ret = rmi_reset_attn_mode(hdev); in rmi_post_resume()
478 hid_warn(hdev, "Failed to resume device: %d\n", ret); in rmi_post_resume()
483 hid_hw_close(hdev); in rmi_post_resume()
491 struct hid_device *hdev = data->hdev; in rmi_hid_reset() local
493 return rmi_reset_attn_mode(hdev); in rmi_hid_reset()
496 static int rmi_input_configured(struct hid_device *hdev, struct hid_input *hi) in rmi_input_configured() argument
498 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_input_configured()
507 hid_dbg(hdev, "Opening low level driver\n"); in rmi_input_configured()
508 ret = hid_hw_open(hdev); in rmi_input_configured()
513 hid_device_io_start(hdev); in rmi_input_configured()
515 ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS); in rmi_input_configured()
517 dev_err(&hdev->dev, "failed to set rmi mode\n"); in rmi_input_configured()
521 ret = rmi_set_page(hdev, 0); in rmi_input_configured()
523 dev_err(&hdev->dev, "failed to set page select to 0.\n"); in rmi_input_configured()
529 dev_err(&hdev->dev, "failed to register transport driver\n"); in rmi_input_configured()
536 hid_device_io_stop(hdev); in rmi_input_configured()
537 hid_hw_close(hdev); in rmi_input_configured()
541 static int rmi_input_mapping(struct hid_device *hdev, in rmi_input_mapping() argument
545 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_input_mapping()
562 static int rmi_check_valid_report_id(struct hid_device *hdev, unsigned type, in rmi_check_valid_report_id() argument
567 *report = hdev->report_enum[type].report_id_hash[id]; in rmi_check_valid_report_id()
621 static int rmi_setup_irq_domain(struct hid_device *hdev) in rmi_setup_irq_domain() argument
623 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_setup_irq_domain()
626 hdata->domain = irq_domain_create_linear(hdev->dev.fwnode, 1, in rmi_setup_irq_domain()
631 ret = devm_add_action_or_reset(&hdev->dev, &rmi_irq_teardown, hdata); in rmi_setup_irq_domain()
637 hid_err(hdev, "Can't allocate an IRQ\n"); in rmi_setup_irq_domain()
644 static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id) in rmi_probe() argument
653 data = devm_kzalloc(&hdev->dev, sizeof(struct rmi_data), GFP_KERNEL); in rmi_probe()
658 data->hdev = hdev; in rmi_probe()
660 hid_set_drvdata(hdev, data); in rmi_probe()
662 hdev->quirks |= HID_QUIRK_NO_INIT_REPORTS; in rmi_probe()
663 hdev->quirks |= HID_QUIRK_NO_INPUT_SYNC; in rmi_probe()
665 ret = hid_parse(hdev); in rmi_probe()
667 hid_err(hdev, "parse failed\n"); in rmi_probe()
678 if (!rmi_check_valid_report_id(hdev, HID_FEATURE_REPORT, in rmi_probe()
680 hid_dbg(hdev, "device does not have set mode feature report\n"); in rmi_probe()
684 if (!rmi_check_valid_report_id(hdev, HID_INPUT_REPORT, in rmi_probe()
686 hid_dbg(hdev, "device does not have attention input report\n"); in rmi_probe()
692 if (!rmi_check_valid_report_id(hdev, HID_OUTPUT_REPORT, in rmi_probe()
694 hid_dbg(hdev, in rmi_probe()
704 data->writeReport = devm_kzalloc(&hdev->dev, alloc_size, GFP_KERNEL); in rmi_probe()
706 hid_err(hdev, "failed to allocate buffer for HID reports\n"); in rmi_probe()
716 ret = rmi_setup_irq_domain(hdev); in rmi_probe()
718 hid_err(hdev, "failed to allocate IRQ domain\n"); in rmi_probe()
725 data->xport.dev = hdev->dev.parent; in rmi_probe()
732 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT); in rmi_probe()
734 hid_err(hdev, "hw start failed\n"); in rmi_probe()
741 static void rmi_remove(struct hid_device *hdev) in rmi_remove() argument
743 struct rmi_data *hdata = hid_get_drvdata(hdev); in rmi_remove()
752 hid_hw_stop(hdev); in rmi_remove()