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],
244 clear_bit(RMI_READ_DATA_PENDING, &data->flags);
254 clear_bit(RMI_READ_REQUEST_PENDING, &data->flags);
255 mutex_unlock(&data->page_mutex);
262 struct rmi_data *data = container_of(xport, struct rmi_data, xport);
263 struct hid_device *hdev = data->hdev;
266 mutex_lock(&data->page_mutex);
268 if (RMI_PAGE(addr) != data->page) {
274 data->writeReport[0] = RMI_WRITE_REPORT_ID;
275 data->writeReport[1] = len;
276 data->writeReport[2] = addr & 0xFF;
277 data->writeReport[3] = (addr >> 8) & 0xFF;
278 memcpy(&data->writeReport[4], buf, len);
280 ret = rmi_write_report(hdev, data->writeReport,
281 data->output_report_size);
291 mutex_unlock(&data->page_mutex);
297 struct rmi_data *data = hid_get_drvdata(hdev);
298 struct rmi_device *rmi_dev = data->xport.rmi_dev;
305 if (test_bit(RMI_STARTED, &data->flags))
320 static int rmi_input_event(struct hid_device *hdev, u8 *data, int size)
333 rmi_set_attn_data(rmi_dev, data[1], &data[2], size - 2);
342 static int rmi_read_data_event(struct hid_device *hdev, u8 *data, int size)
351 memcpy(hdata->readReport, data, min((u32)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;