Lines Matching defs:hdev

72  * @hdev: pointer to the struct hid_device
95 struct hid_device *hdev;
105 static int rmi_write_report(struct hid_device *hdev, u8 *report, int len);
109 * @hdev: The pointer to the hid_device struct
121 static int rmi_set_page(struct hid_device *hdev, u8 page)
123 struct rmi_data *data = hid_get_drvdata(hdev);
131 retval = rmi_write_report(hdev, data->writeReport,
134 dev_err(&hdev->dev,
143 static int rmi_set_mode(struct hid_device *hdev, u8 mode)
153 ret = hid_hw_raw_request(hdev, RMI_SET_RMI_MODE_REPORT_ID, buf,
157 dev_err(&hdev->dev, "unable to set rmi mode to %d (%d)\n", mode,
165 static int rmi_write_report(struct hid_device *hdev, u8 *report, int len)
167 struct rmi_data *data = hid_get_drvdata(hdev);
174 ret = hid_hw_raw_request(hdev, report[0], report,
177 ret = hid_hw_output_report(hdev, (void *)report, len);
181 dev_err(&hdev->dev, "failed to write hid report (%d)\n", ret);
192 struct hid_device *hdev = data->hdev;
202 ret = rmi_set_page(hdev, RMI_PAGE(addr));
217 ret = rmi_write_report(hdev, data->writeReport,
220 dev_err(&hdev->dev,
232 hid_warn(hdev, "%s: timeout elapsed\n",
263 struct hid_device *hdev = data->hdev;
269 ret = rmi_set_page(hdev, RMI_PAGE(addr));
280 ret = rmi_write_report(hdev, data->writeReport,
283 dev_err(&hdev->dev,
295 static int rmi_reset_attn_mode(struct hid_device *hdev)
297 struct rmi_data *data = hid_get_drvdata(hdev);
301 ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS);
317 rmi_reset_attn_mode(hdata->hdev);
320 static int rmi_input_event(struct hid_device *hdev, u8 *data, int size)
322 struct rmi_data *hdata = hid_get_drvdata(hdev);
329 pm_wakeup_event(hdev->dev.parent, 0);
342 static int rmi_read_data_event(struct hid_device *hdev, u8 *data, int size)
344 struct rmi_data *hdata = hid_get_drvdata(hdev);
347 hid_dbg(hdev, "no read request pending\n");
358 static int rmi_check_sanity(struct hid_device *hdev, u8 *data, int size)
374 static int rmi_raw_event(struct hid_device *hdev,
377 struct rmi_data *hdata = hid_get_drvdata(hdev);
382 size = rmi_check_sanity(hdev, data, size);
388 return rmi_read_data_event(hdev, data, size);
390 return rmi_input_event(hdev, data, size);
398 static int rmi_event(struct hid_device *hdev, struct hid_field *field,
401 struct rmi_data *data = hid_get_drvdata(hdev);
439 static int rmi_suspend(struct hid_device *hdev, pm_message_t message)
441 struct rmi_data *data = hid_get_drvdata(hdev);
450 hid_warn(hdev, "Failed to suspend device: %d\n", ret);
457 static int rmi_post_resume(struct hid_device *hdev)
459 struct rmi_data *data = hid_get_drvdata(hdev);
467 ret = hid_hw_open(hdev);
471 ret = rmi_reset_attn_mode(hdev);
477 hid_warn(hdev, "Failed to resume device: %d\n", ret);
482 hid_hw_close(hdev);
489 struct hid_device *hdev = data->hdev;
491 return rmi_reset_attn_mode(hdev);
494 static int rmi_input_configured(struct hid_device *hdev, struct hid_input *hi)
496 struct rmi_data *data = hid_get_drvdata(hdev);
505 hid_dbg(hdev, "Opening low level driver\n");
506 ret = hid_hw_open(hdev);
511 hid_device_io_start(hdev);
513 ret = rmi_set_mode(hdev, RMI_MODE_ATTN_REPORTS);
515 dev_err(&hdev->dev, "failed to set rmi mode\n");
519 ret = rmi_set_page(hdev, 0);
521 dev_err(&hdev->dev, "failed to set page select to 0.\n");
527 dev_err(&hdev->dev, "failed to register transport driver\n");
534 hid_device_io_stop(hdev);
535 hid_hw_close(hdev);
539 static int rmi_input_mapping(struct hid_device *hdev,
543 struct rmi_data *data = hid_get_drvdata(hdev);
560 static int rmi_check_valid_report_id(struct hid_device *hdev, unsigned type,
565 *report = hdev->report_enum[type].report_id_hash[id];
619 static int rmi_setup_irq_domain(struct hid_device *hdev)
621 struct rmi_data *hdata = hid_get_drvdata(hdev);
624 hdata->domain = irq_domain_create_linear(hdev->dev.fwnode, 1,
629 ret = devm_add_action_or_reset(&hdev->dev, &rmi_irq_teardown, hdata);
635 hid_err(hdev, "Can't allocate an IRQ\n");
642 static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id)
651 data = devm_kzalloc(&hdev->dev, sizeof(struct rmi_data), GFP_KERNEL);
656 data->hdev = hdev;
658 hid_set_drvdata(hdev, data);
660 hdev->quirks |= HID_QUIRK_NO_INIT_REPORTS;
661 hdev->quirks |= HID_QUIRK_NO_INPUT_SYNC;
663 ret = hid_parse(hdev);
665 hid_err(hdev, "parse failed\n");
676 if (!rmi_check_valid_report_id(hdev, HID_FEATURE_REPORT,
678 hid_dbg(hdev, "device does not have set mode feature report\n");
682 if (!rmi_check_valid_report_id(hdev, HID_INPUT_REPORT,
684 hid_dbg(hdev, "device does not have attention input report\n");
690 if (!rmi_check_valid_report_id(hdev, HID_OUTPUT_REPORT,
692 hid_dbg(hdev,
702 data->writeReport = devm_kzalloc(&hdev->dev, alloc_size, GFP_KERNEL);
704 hid_err(hdev, "failed to allocate buffer for HID reports\n");
714 ret = rmi_setup_irq_domain(hdev);
716 hid_err(hdev, "failed to allocate IRQ domain\n");
723 data->xport.dev = hdev->dev.parent;
730 ret = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
732 hid_err(hdev, "hw start failed\n");
739 static void rmi_remove(struct hid_device *hdev)
741 struct rmi_data *hdata = hid_get_drvdata(hdev);
750 hid_hw_stop(hdev);