Lines Matching refs:data

151 	struct rmi_data *data = hid_get_drvdata(hdev);  in rmi_set_page()  local
154 data->writeReport[0] = RMI_WRITE_REPORT_ID; in rmi_set_page()
155 data->writeReport[1] = 1; in rmi_set_page()
156 data->writeReport[2] = 0xFF; in rmi_set_page()
157 data->writeReport[4] = page; in rmi_set_page()
159 retval = rmi_write_report(hdev, data->writeReport, in rmi_set_page()
160 data->output_report_size); in rmi_set_page()
161 if (retval != data->output_report_size) { in rmi_set_page()
167 data->page = page; in rmi_set_page()
203 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_read_block() local
210 mutex_lock(&data->page_mutex); in rmi_read_block()
212 if (RMI_PAGE(addr) != data->page) { in rmi_read_block()
219 data->writeReport[0] = RMI_READ_ADDR_REPORT_ID; in rmi_read_block()
220 data->writeReport[1] = 0; /* old 1 byte read count */ in rmi_read_block()
221 data->writeReport[2] = addr & 0xFF; in rmi_read_block()
222 data->writeReport[3] = (addr >> 8) & 0xFF; in rmi_read_block()
223 data->writeReport[4] = len & 0xFF; in rmi_read_block()
224 data->writeReport[5] = (len >> 8) & 0xFF; in rmi_read_block()
226 set_bit(RMI_READ_REQUEST_PENDING, &data->flags); in rmi_read_block()
228 ret = rmi_write_report(hdev, data->writeReport, in rmi_read_block()
229 data->output_report_size); in rmi_read_block()
230 if (ret != data->output_report_size) { in rmi_read_block()
231 clear_bit(RMI_READ_REQUEST_PENDING, &data->flags); in rmi_read_block()
241 if (!wait_event_timeout(data->wait, in rmi_read_block()
242 test_bit(RMI_READ_DATA_PENDING, &data->flags), in rmi_read_block()
250 read_input_count = data->readReport[1]; in rmi_read_block()
251 memcpy(buf + bytes_read, &data->readReport[2], in rmi_read_block()
257 clear_bit(RMI_READ_DATA_PENDING, &data->flags); in rmi_read_block()
267 clear_bit(RMI_READ_REQUEST_PENDING, &data->flags); in rmi_read_block()
268 mutex_unlock(&data->page_mutex); in rmi_read_block()
280 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_write_block() local
283 mutex_lock(&data->page_mutex); in rmi_write_block()
285 if (RMI_PAGE(addr) != data->page) { in rmi_write_block()
291 data->writeReport[0] = RMI_WRITE_REPORT_ID; in rmi_write_block()
292 data->writeReport[1] = len; in rmi_write_block()
293 data->writeReport[2] = addr & 0xFF; in rmi_write_block()
294 data->writeReport[3] = (addr >> 8) & 0xFF; in rmi_write_block()
295 memcpy(&data->writeReport[4], buf, len); in rmi_write_block()
297 ret = rmi_write_report(hdev, data->writeReport, in rmi_write_block()
298 data->output_report_size); in rmi_write_block()
308 mutex_unlock(&data->page_mutex); in rmi_write_block()
364 static int rmi_f11_input_event(struct hid_device *hdev, u8 irq, u8 *data, in rmi_f11_input_event() argument
378 int finger_state = (data[fs_byte_position] >> fs_bit_position) & in rmi_f11_input_event()
392 rmi_f11_process_touch(hdata, i, finger_state, &data[position]); in rmi_f11_input_event()
399 static int rmi_f30_input_event(struct hid_device *hdev, u8 irq, u8 *data, in rmi_f30_input_event() argument
417 value = (data[i / 8] >> (i & 0x07)) & BIT(0); in rmi_f30_input_event()
427 static int rmi_input_event(struct hid_device *hdev, u8 *data, int size) in rmi_input_event() argument
439 if (data[1] & ~irq_mask) in rmi_input_event()
441 data[1] & ~irq_mask, __FILE__, __LINE__); in rmi_input_event()
444 index += rmi_f11_input_event(hdev, data[1], &data[index], in rmi_input_event()
446 index += rmi_f30_input_event(hdev, data[1], &data[index], in rmi_input_event()
449 index += rmi_f30_input_event(hdev, data[1], &data[index], in rmi_input_event()
451 index += rmi_f11_input_event(hdev, data[1], &data[index], in rmi_input_event()
458 static int rmi_read_data_event(struct hid_device *hdev, u8 *data, int size) in rmi_read_data_event() argument
467 memcpy(hdata->readReport, data, size < hdata->input_report_size ? in rmi_read_data_event()
475 static int rmi_check_sanity(struct hid_device *hdev, u8 *data, int size) in rmi_check_sanity() argument
485 while ((data[valid_size - 1] == 0xff) && valid_size > 0) in rmi_check_sanity()
492 struct hid_report *report, u8 *data, int size) in rmi_raw_event() argument
494 size = rmi_check_sanity(hdev, data, size); in rmi_raw_event()
498 switch (data[0]) { in rmi_raw_event()
500 return rmi_read_data_event(hdev, data, size); in rmi_raw_event()
502 return rmi_input_event(hdev, data, size); in rmi_raw_event()
513 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_event() local
515 if ((data->device_flags & RMI_DEVICE) && in rmi_event()
518 if (data->device_flags & RMI_DEVICE_HAS_PHYS_BUTTONS) { in rmi_event()
570 static void rmi_register_function(struct rmi_data *data, in rmi_register_function() argument
578 f = &data->f01; in rmi_register_function()
581 f = &data->f11; in rmi_register_function()
584 f = &data->f30; in rmi_register_function()
603 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_scan_pdt() local
637 rmi_register_function(data, &entry, page, interrupt); in rmi_scan_pdt()
656 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_populate_f01() local
666 u16 query_offset = data->f01.query_base_addr; in rmi_populate_f01()
731 data->firmware_id = info[1] << 8 | info[0]; in rmi_populate_f01()
732 data->firmware_id += info[2] * 65536; in rmi_populate_f01()
740 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_populate_f11() local
759 if (!data->f11.query_base_addr) { in rmi_populate_f11()
765 ret = rmi_read(hdev, data->f11.query_base_addr, buf); in rmi_populate_f11()
777 ret = rmi_read(hdev, data->f11.query_base_addr + 1, buf); in rmi_populate_f11()
782 data->max_fingers = (buf[0] & 0x07) + 1; in rmi_populate_f11()
783 if (data->max_fingers > 5) in rmi_populate_f11()
784 data->max_fingers = 10; in rmi_populate_f11()
786 data->f11.report_size = data->max_fingers * 5 + in rmi_populate_f11()
787 DIV_ROUND_UP(data->max_fingers, 4); in rmi_populate_f11()
797 ret = rmi_read(hdev, data->f11.query_base_addr + 5, buf); in rmi_populate_f11()
818 data->f11.query_base_addr + query_offset + 1, buf); in rmi_populate_f11()
841 ret = rmi_read(hdev, data->f11.query_base_addr in rmi_populate_f11()
852 data->f11.query_base_addr in rmi_populate_f11()
863 data->x_size_mm = DIV_ROUND_CLOSEST(x_size, 10); in rmi_populate_f11()
864 data->y_size_mm = DIV_ROUND_CLOSEST(y_size, 10); in rmi_populate_f11()
867 __func__, data->x_size_mm, data->y_size_mm); in rmi_populate_f11()
881 ret = rmi_read(hdev, data->f11.query_base_addr in rmi_populate_f11()
893 ret = rmi_read(hdev, data->f11.query_base_addr in rmi_populate_f11()
905 data->f11.report_size += data->max_fingers * 2; in rmi_populate_f11()
913 ret = rmi_read_block(hdev, data->f11.control_base_addr, buf, 12); in rmi_populate_f11()
919 data->max_x = buf[6] | (buf[7] << 8); in rmi_populate_f11()
920 data->max_y = buf[8] | (buf[9] << 8); in rmi_populate_f11()
924 ret = rmi_write(hdev, data->f11.control_base_addr, buf); in rmi_populate_f11()
934 ret = rmi_write(hdev, data->f11.control_base_addr + 11, in rmi_populate_f11()
948 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_populate_f30() local
958 if (!data->f30.query_base_addr) { in rmi_populate_f30()
963 ret = rmi_read_block(hdev, data->f30.query_base_addr, buf, 2); in rmi_populate_f30()
971 data->gpio_led_count = buf[1] & 0x1f; in rmi_populate_f30()
974 bytes_per_ctrl = (data->gpio_led_count + 7) / 8; in rmi_populate_f30()
981 data->f30.report_size = bytes_per_ctrl; in rmi_populate_f30()
983 ret = rmi_read_block(hdev, data->f30.control_base_addr + ctrl2_addr, in rmi_populate_f30()
991 for (i = 0; i < data->gpio_led_count; i++) { in rmi_populate_f30()
1003 data->button_count++; in rmi_populate_f30()
1004 set_bit(i, &data->button_mask); in rmi_populate_f30()
1005 set_bit(i, &data->button_state_mask); in rmi_populate_f30()
1045 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_input_configured() local
1050 data->input = input; in rmi_input_configured()
1057 if (!(data->device_flags & RMI_DEVICE)) in rmi_input_configured()
1079 hid_info(hdev, "firmware id: %ld\n", data->firmware_id); in rmi_input_configured()
1082 input_set_abs_params(input, ABS_MT_POSITION_X, 1, data->max_x, 0, 0); in rmi_input_configured()
1083 input_set_abs_params(input, ABS_MT_POSITION_Y, 1, data->max_y, 0, 0); in rmi_input_configured()
1085 if (data->x_size_mm && data->y_size_mm) { in rmi_input_configured()
1086 res_x = (data->max_x - 1) / data->x_size_mm; in rmi_input_configured()
1087 res_y = (data->max_y - 1) / data->y_size_mm; in rmi_input_configured()
1098 input_mt_init_slots(input, data->max_fingers, INPUT_MT_POINTER); in rmi_input_configured()
1100 if (data->button_count) { in rmi_input_configured()
1102 for (i = 0; i < data->button_count; i++) in rmi_input_configured()
1105 if (data->button_count == 1) in rmi_input_configured()
1109 set_bit(RMI_STARTED, &data->flags); in rmi_input_configured()
1120 struct rmi_data *data = hid_get_drvdata(hdev); in rmi_input_mapping() local
1126 if (data->device_flags & RMI_DEVICE) { in rmi_input_mapping()
1127 if ((data->device_flags & RMI_DEVICE_HAS_PHYS_BUTTONS) && in rmi_input_mapping()
1156 struct rmi_data *data = NULL; in rmi_probe() local
1163 data = devm_kzalloc(&hdev->dev, sizeof(struct rmi_data), GFP_KERNEL); in rmi_probe()
1164 if (!data) in rmi_probe()
1167 INIT_WORK(&data->reset_work, rmi_reset_work); in rmi_probe()
1168 data->hdev = hdev; in rmi_probe()
1170 hid_set_drvdata(hdev, data); in rmi_probe()
1181 data->device_flags = id->driver_data; in rmi_probe()
1199 data->input_report_size = hid_report_len(input_report); in rmi_probe()
1208 data->output_report_size = hid_report_len(output_report); in rmi_probe()
1210 data->device_flags |= RMI_DEVICE; in rmi_probe()
1211 alloc_size = data->output_report_size + data->input_report_size; in rmi_probe()
1213 data->writeReport = devm_kzalloc(&hdev->dev, alloc_size, GFP_KERNEL); in rmi_probe()
1214 if (!data->writeReport) { in rmi_probe()
1219 data->readReport = data->writeReport + data->output_report_size; in rmi_probe()
1221 init_waitqueue_head(&data->wait); in rmi_probe()
1223 mutex_init(&data->page_mutex); in rmi_probe()
1232 if ((data->device_flags & RMI_DEVICE) && in rmi_probe()
1233 !test_bit(RMI_STARTED, &data->flags)) in rmi_probe()