Lines Matching refs:data

61  * @wait: Used for waiting for read data
123 struct rmi_data *data = hid_get_drvdata(hdev);
126 data->writeReport[0] = RMI_WRITE_REPORT_ID;
127 data->writeReport[1] = 1;
128 data->writeReport[2] = 0xFF;
129 data->writeReport[4] = page;
131 retval = rmi_write_report(hdev, data->writeReport,
132 data->output_report_size);
133 if (retval != data->output_report_size) {
139 data->page = page;
167 struct rmi_data *data = hid_get_drvdata(hdev);
170 if (data->device_flags & RMI_DEVICE_OUTPUT_SET_REPORT) {
191 struct rmi_data *data = container_of(xport, struct rmi_data, xport);
192 struct hid_device *hdev = data->hdev;
199 mutex_lock(&data->page_mutex);
201 if (RMI_PAGE(addr) != data->page) {
208 data->writeReport[0] = RMI_READ_ADDR_REPORT_ID;
209 data->writeReport[1] = 0; /* old 1 byte read count */
210 data->writeReport[2] = addr & 0xFF;
211 data->writeReport[3] = (addr >> 8) & 0xFF;
212 data->writeReport[4] = len & 0xFF;
213 data->writeReport[5] = (len >> 8) & 0xFF;
215 set_bit(RMI_READ_REQUEST_PENDING, &data->flags);
217 ret = rmi_write_report(hdev, data->writeReport,
218 data->output_report_size);
219 if (ret != data->output_report_size) {
229 if (!wait_event_timeout(data->wait,
230 test_bit(RMI_READ_DATA_PENDING, &data->flags),
238 read_input_count = data->readReport[1];
239 memcpy(buf + bytes_read, &data->readReport[2],
245 clear_bit(RMI_READ_DATA_PENDING, &data->flags);
255 clear_bit(RMI_READ_REQUEST_PENDING, &data->flags);
256 mutex_unlock(&data->page_mutex);
263 struct rmi_data *data = container_of(xport, struct rmi_data, xport);
264 struct hid_device *hdev = data->hdev;
267 mutex_lock(&data->page_mutex);
269 if (RMI_PAGE(addr) != data->page) {
275 data->writeReport[0] = RMI_WRITE_REPORT_ID;
276 data->writeReport[1] = len;
277 data->writeReport[2] = addr & 0xFF;
278 data->writeReport[3] = (addr >> 8) & 0xFF;
279 memcpy(&data->writeReport[4], buf, len);
281 ret = rmi_write_report(hdev, data->writeReport,
282 data->output_report_size);
292 mutex_unlock(&data->page_mutex);
298 struct rmi_data *data = hid_get_drvdata(hdev);
299 struct rmi_device *rmi_dev = data->xport.rmi_dev;
306 if (test_bit(RMI_STARTED, &data->flags))
321 static int rmi_input_event(struct hid_device *hdev, u8 *data, int size)
332 rmi_set_attn_data(rmi_dev, data[1], &data[2], size - 2);
341 static int rmi_read_data_event(struct hid_device *hdev, u8 *data, int size)
350 memcpy(hdata->readReport, data, size < hdata->input_report_size ?
358 static int rmi_check_sanity(struct hid_device *hdev, u8 *data, int size)
368 while ((data[valid_size - 1] == 0xff) && valid_size > 0)
375 struct hid_report *report, u8 *data, int size)
382 size = rmi_check_sanity(hdev, data, size);
386 switch (data[0]) {
388 return rmi_read_data_event(hdev, data, size);
390 return rmi_input_event(hdev, data, size);
401 struct rmi_data *data = hid_get_drvdata(hdev);
403 if ((data->device_flags & RMI_DEVICE) &&
406 if (data->device_flags & RMI_DEVICE_HAS_PHYS_BUTTONS) {
415 schedule_work(&data->reset_work);
442 struct rmi_data *data = hid_get_drvdata(hdev);
443 struct rmi_device *rmi_dev = data->xport.rmi_dev;
446 if (!(data->device_flags & RMI_DEVICE))
460 struct rmi_data *data = hid_get_drvdata(hdev);
461 struct rmi_device *rmi_dev = data->xport.rmi_dev;
464 if (!(data->device_flags & RMI_DEVICE))
490 struct rmi_data *data = container_of(xport, struct rmi_data, xport);
491 struct hid_device *hdev = data->hdev;
498 struct rmi_data *data = hid_get_drvdata(hdev);
502 if (!(data->device_flags & RMI_DEVICE))
505 data->xport.input = input;
527 ret = rmi_register_transport_device(&data->xport);
533 set_bit(RMI_STARTED, &data->flags);
545 struct rmi_data *data = hid_get_drvdata(hdev);
551 if (data->device_flags & RMI_DEVICE) {
552 if ((data->device_flags & RMI_DEVICE_HAS_PHYS_BUTTONS) &&
594 static void rmi_irq_teardown(void *data)
596 struct rmi_data *hdata = data;
646 struct rmi_data *data = NULL;
653 data = devm_kzalloc(&hdev->dev, sizeof(struct rmi_data), GFP_KERNEL);
654 if (!data)
657 INIT_WORK(&data->reset_work, rmi_reset_work);
658 data->hdev = hdev;
660 hid_set_drvdata(hdev, data);
672 data->device_flags = id->driver_data;
690 data->input_report_size = hid_report_len(input_report);
699 data->output_report_size = hid_report_len(output_report);
701 data->device_flags |= RMI_DEVICE;
702 alloc_size = data->output_report_size + data->input_report_size;
704 data->writeReport = devm_kzalloc(&hdev->dev, alloc_size, GFP_KERNEL);
705 if (!data->writeReport) {
710 data->readReport = data->writeReport + data->output_report_size;
712 init_waitqueue_head(&data->wait);
714 mutex_init(&data->page_mutex);
722 if (data->device_flags & RMI_DEVICE_HAS_PHYS_BUTTONS)
725 data->xport.dev = hdev->dev.parent;
726 data->xport.pdata = rmi_hid_pdata;
727 data->xport.pdata.irq = data->rmi_irq;
728 data->xport.proto_name = "hid";
729 data->xport.ops = &hid_rmi_ops;