tsdata 153 drivers/input/touchscreen/edt-ft5x06.c static bool edt_ft5x06_ts_check_crc(struct edt_ft5x06_ts_data *tsdata, tsdata 163 drivers/input/touchscreen/edt-ft5x06.c dev_err_ratelimited(&tsdata->client->dev, tsdata 174 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata = dev_id; tsdata 175 drivers/input/touchscreen/edt-ft5x06.c struct device *dev = &tsdata->client->dev; tsdata 182 drivers/input/touchscreen/edt-ft5x06.c switch (tsdata->version) { tsdata 205 drivers/input/touchscreen/edt-ft5x06.c datalen = tplen * tsdata->max_support_points + offset + crclen; tsdata 207 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_ts_readwrite(tsdata->client, tsdata 217 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->version == EDT_M06) { tsdata 226 drivers/input/touchscreen/edt-ft5x06.c if (!edt_ft5x06_ts_check_crc(tsdata, rdbuf, datalen)) tsdata 230 drivers/input/touchscreen/edt-ft5x06.c for (i = 0; i < tsdata->max_support_points; i++) { tsdata 239 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->version == EDT_M06 && type == TOUCH_EVENT_DOWN) tsdata 245 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->version == EV_FT) tsdata 250 drivers/input/touchscreen/edt-ft5x06.c input_mt_slot(tsdata->input, id); tsdata 251 drivers/input/touchscreen/edt-ft5x06.c if (input_mt_report_slot_state(tsdata->input, MT_TOOL_FINGER, tsdata 253 drivers/input/touchscreen/edt-ft5x06.c touchscreen_report_pos(tsdata->input, &tsdata->prop, tsdata 257 drivers/input/touchscreen/edt-ft5x06.c input_mt_report_pointer_emulation(tsdata->input, true); tsdata 258 drivers/input/touchscreen/edt-ft5x06.c input_sync(tsdata->input); tsdata 264 drivers/input/touchscreen/edt-ft5x06.c static int edt_ft5x06_register_write(struct edt_ft5x06_ts_data *tsdata, tsdata 269 drivers/input/touchscreen/edt-ft5x06.c switch (tsdata->version) { tsdata 271 drivers/input/touchscreen/edt-ft5x06.c wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc; tsdata 272 drivers/input/touchscreen/edt-ft5x06.c wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f; tsdata 275 drivers/input/touchscreen/edt-ft5x06.c return edt_ft5x06_ts_readwrite(tsdata->client, 4, tsdata 285 drivers/input/touchscreen/edt-ft5x06.c return edt_ft5x06_ts_readwrite(tsdata->client, 2, tsdata 293 drivers/input/touchscreen/edt-ft5x06.c static int edt_ft5x06_register_read(struct edt_ft5x06_ts_data *tsdata, tsdata 299 drivers/input/touchscreen/edt-ft5x06.c switch (tsdata->version) { tsdata 301 drivers/input/touchscreen/edt-ft5x06.c wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc; tsdata 302 drivers/input/touchscreen/edt-ft5x06.c wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f; tsdata 303 drivers/input/touchscreen/edt-ft5x06.c wrbuf[1] |= tsdata->factory_mode ? 0x80 : 0x40; tsdata 305 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_ts_readwrite(tsdata->client, 2, wrbuf, 2, tsdata 311 drivers/input/touchscreen/edt-ft5x06.c dev_err(&tsdata->client->dev, tsdata 325 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_ts_readwrite(tsdata->client, 1, tsdata 367 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); tsdata 370 drivers/input/touchscreen/edt-ft5x06.c u8 *field = (u8 *)tsdata + attr->field_offset; tsdata 376 drivers/input/touchscreen/edt-ft5x06.c mutex_lock(&tsdata->mutex); tsdata 378 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->factory_mode) { tsdata 383 drivers/input/touchscreen/edt-ft5x06.c switch (tsdata->version) { tsdata 404 drivers/input/touchscreen/edt-ft5x06.c val = edt_ft5x06_register_read(tsdata, addr); tsdata 407 drivers/input/touchscreen/edt-ft5x06.c dev_err(&tsdata->client->dev, tsdata 417 drivers/input/touchscreen/edt-ft5x06.c dev_warn(&tsdata->client->dev, tsdata 425 drivers/input/touchscreen/edt-ft5x06.c mutex_unlock(&tsdata->mutex); tsdata 434 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); tsdata 437 drivers/input/touchscreen/edt-ft5x06.c u8 *field = (u8 *)tsdata + attr->field_offset; tsdata 442 drivers/input/touchscreen/edt-ft5x06.c mutex_lock(&tsdata->mutex); tsdata 444 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->factory_mode) { tsdata 458 drivers/input/touchscreen/edt-ft5x06.c switch (tsdata->version) { tsdata 479 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_register_write(tsdata, addr, val); tsdata 481 drivers/input/touchscreen/edt-ft5x06.c dev_err(&tsdata->client->dev, tsdata 490 drivers/input/touchscreen/edt-ft5x06.c mutex_unlock(&tsdata->mutex); tsdata 528 drivers/input/touchscreen/edt-ft5x06.c static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts_data *tsdata) tsdata 530 drivers/input/touchscreen/edt-ft5x06.c struct i2c_client *client = tsdata->client; tsdata 535 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->version != EDT_M06) { tsdata 543 drivers/input/touchscreen/edt-ft5x06.c if (!tsdata->raw_buffer) { tsdata 544 drivers/input/touchscreen/edt-ft5x06.c tsdata->raw_bufsize = tsdata->num_x * tsdata->num_y * tsdata 546 drivers/input/touchscreen/edt-ft5x06.c tsdata->raw_buffer = kzalloc(tsdata->raw_bufsize, GFP_KERNEL); tsdata 547 drivers/input/touchscreen/edt-ft5x06.c if (!tsdata->raw_buffer) { tsdata 554 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_register_write(tsdata, WORK_REGISTER_OPMODE, 0x03); tsdata 561 drivers/input/touchscreen/edt-ft5x06.c tsdata->factory_mode = true; tsdata 565 drivers/input/touchscreen/edt-ft5x06.c ret = edt_ft5x06_register_read(tsdata, FACTORY_REGISTER_OPMODE); tsdata 580 drivers/input/touchscreen/edt-ft5x06.c kfree(tsdata->raw_buffer); tsdata 581 drivers/input/touchscreen/edt-ft5x06.c tsdata->raw_buffer = NULL; tsdata 582 drivers/input/touchscreen/edt-ft5x06.c tsdata->factory_mode = false; tsdata 588 drivers/input/touchscreen/edt-ft5x06.c static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_data *tsdata) tsdata 590 drivers/input/touchscreen/edt-ft5x06.c struct i2c_client *client = tsdata->client; tsdata 592 drivers/input/touchscreen/edt-ft5x06.c struct edt_reg_addr *reg_addr = &tsdata->reg_addr; tsdata 597 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_register_write(tsdata, FACTORY_REGISTER_OPMODE, 0x1); tsdata 604 drivers/input/touchscreen/edt-ft5x06.c tsdata->factory_mode = false; tsdata 609 drivers/input/touchscreen/edt-ft5x06.c ret = edt_ft5x06_register_read(tsdata, WORK_REGISTER_OPMODE); tsdata 617 drivers/input/touchscreen/edt-ft5x06.c tsdata->factory_mode = true; tsdata 621 drivers/input/touchscreen/edt-ft5x06.c kfree(tsdata->raw_buffer); tsdata 622 drivers/input/touchscreen/edt-ft5x06.c tsdata->raw_buffer = NULL; tsdata 625 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, tsdata 626 drivers/input/touchscreen/edt-ft5x06.c tsdata->threshold); tsdata 627 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, tsdata 628 drivers/input/touchscreen/edt-ft5x06.c tsdata->gain); tsdata 630 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, tsdata 631 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset); tsdata 633 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_x, tsdata 634 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset_x); tsdata 636 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_y, tsdata 637 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset_y); tsdata 639 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate, tsdata 640 drivers/input/touchscreen/edt-ft5x06.c tsdata->report_rate); tsdata 649 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata = data; tsdata 651 drivers/input/touchscreen/edt-ft5x06.c *mode = tsdata->factory_mode; tsdata 658 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata = data; tsdata 664 drivers/input/touchscreen/edt-ft5x06.c mutex_lock(&tsdata->mutex); tsdata 666 drivers/input/touchscreen/edt-ft5x06.c if (mode != tsdata->factory_mode) { tsdata 667 drivers/input/touchscreen/edt-ft5x06.c retval = mode ? edt_ft5x06_factory_mode(tsdata) : tsdata 668 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_work_mode(tsdata); tsdata 671 drivers/input/touchscreen/edt-ft5x06.c mutex_unlock(&tsdata->mutex); tsdata 682 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata = file->private_data; tsdata 683 drivers/input/touchscreen/edt-ft5x06.c struct i2c_client *client = tsdata->client; tsdata 691 drivers/input/touchscreen/edt-ft5x06.c if (*off < 0 || *off >= tsdata->raw_bufsize) tsdata 694 drivers/input/touchscreen/edt-ft5x06.c mutex_lock(&tsdata->mutex); tsdata 696 drivers/input/touchscreen/edt-ft5x06.c if (!tsdata->factory_mode || !tsdata->raw_buffer) { tsdata 701 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_register_write(tsdata, 0x08, 0x01); tsdata 710 drivers/input/touchscreen/edt-ft5x06.c val = edt_ft5x06_register_read(tsdata, 0x08); tsdata 729 drivers/input/touchscreen/edt-ft5x06.c rdbuf = tsdata->raw_buffer; tsdata 730 drivers/input/touchscreen/edt-ft5x06.c colbytes = tsdata->num_y * sizeof(u16); tsdata 734 drivers/input/touchscreen/edt-ft5x06.c for (i = 0; i < tsdata->num_x; i++) { tsdata 736 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_ts_readwrite(tsdata->client, tsdata 745 drivers/input/touchscreen/edt-ft5x06.c read = min_t(size_t, count, tsdata->raw_bufsize - *off); tsdata 746 drivers/input/touchscreen/edt-ft5x06.c if (copy_to_user(buf, tsdata->raw_buffer + *off, read)) { tsdata 753 drivers/input/touchscreen/edt-ft5x06.c mutex_unlock(&tsdata->mutex); tsdata 763 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata, tsdata 766 drivers/input/touchscreen/edt-ft5x06.c tsdata->debug_dir = debugfs_create_dir(debugfs_name, NULL); tsdata 768 drivers/input/touchscreen/edt-ft5x06.c debugfs_create_u16("num_x", S_IRUSR, tsdata->debug_dir, &tsdata->num_x); tsdata 769 drivers/input/touchscreen/edt-ft5x06.c debugfs_create_u16("num_y", S_IRUSR, tsdata->debug_dir, &tsdata->num_y); tsdata 772 drivers/input/touchscreen/edt-ft5x06.c tsdata->debug_dir, tsdata, &debugfs_mode_fops); tsdata 774 drivers/input/touchscreen/edt-ft5x06.c tsdata->debug_dir, tsdata, &debugfs_raw_data_fops); tsdata 778 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_teardown_debugfs(struct edt_ft5x06_ts_data *tsdata) tsdata 780 drivers/input/touchscreen/edt-ft5x06.c debugfs_remove_recursive(tsdata->debug_dir); tsdata 781 drivers/input/touchscreen/edt-ft5x06.c kfree(tsdata->raw_buffer); tsdata 787 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata, tsdata 793 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_teardown_debugfs(struct edt_ft5x06_ts_data *tsdata) tsdata 800 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata, tsdata 806 drivers/input/touchscreen/edt-ft5x06.c char *model_name = tsdata->name; tsdata 823 drivers/input/touchscreen/edt-ft5x06.c tsdata->version = EDT_M06; tsdata 837 drivers/input/touchscreen/edt-ft5x06.c tsdata->version = EDT_M12; tsdata 860 drivers/input/touchscreen/edt-ft5x06.c tsdata->version = GENERIC_FT; tsdata 884 drivers/input/touchscreen/edt-ft5x06.c tsdata->version = EDT_M09; tsdata 889 drivers/input/touchscreen/edt-ft5x06.c tsdata->version = EDT_M09; tsdata 897 drivers/input/touchscreen/edt-ft5x06.c tsdata->version = EV_FT; tsdata 918 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata) tsdata 920 drivers/input/touchscreen/edt-ft5x06.c struct edt_reg_addr *reg_addr = &tsdata->reg_addr; tsdata 926 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, val); tsdata 927 drivers/input/touchscreen/edt-ft5x06.c tsdata->threshold = val; tsdata 932 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, val); tsdata 933 drivers/input/touchscreen/edt-ft5x06.c tsdata->gain = val; tsdata 938 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, val); tsdata 939 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset = val; tsdata 944 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_x, val); tsdata 945 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset_x = val; tsdata 950 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_y, val); tsdata 951 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset_y = val; tsdata 956 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_get_parameters(struct edt_ft5x06_ts_data *tsdata) tsdata 958 drivers/input/touchscreen/edt-ft5x06.c struct edt_reg_addr *reg_addr = &tsdata->reg_addr; tsdata 960 drivers/input/touchscreen/edt-ft5x06.c tsdata->threshold = edt_ft5x06_register_read(tsdata, tsdata 962 drivers/input/touchscreen/edt-ft5x06.c tsdata->gain = edt_ft5x06_register_read(tsdata, reg_addr->reg_gain); tsdata 964 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset = tsdata 965 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_register_read(tsdata, reg_addr->reg_offset); tsdata 967 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset_x = edt_ft5x06_register_read(tsdata, tsdata 970 drivers/input/touchscreen/edt-ft5x06.c tsdata->offset_y = edt_ft5x06_register_read(tsdata, tsdata 973 drivers/input/touchscreen/edt-ft5x06.c tsdata->report_rate = edt_ft5x06_register_read(tsdata, tsdata 975 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->version == EDT_M06 || tsdata 976 drivers/input/touchscreen/edt-ft5x06.c tsdata->version == EDT_M09 || tsdata 977 drivers/input/touchscreen/edt-ft5x06.c tsdata->version == EDT_M12) { tsdata 978 drivers/input/touchscreen/edt-ft5x06.c tsdata->num_x = edt_ft5x06_register_read(tsdata, tsdata 980 drivers/input/touchscreen/edt-ft5x06.c tsdata->num_y = edt_ft5x06_register_read(tsdata, tsdata 983 drivers/input/touchscreen/edt-ft5x06.c tsdata->num_x = -1; tsdata 984 drivers/input/touchscreen/edt-ft5x06.c tsdata->num_y = -1; tsdata 989 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata) tsdata 991 drivers/input/touchscreen/edt-ft5x06.c struct edt_reg_addr *reg_addr = &tsdata->reg_addr; tsdata 993 drivers/input/touchscreen/edt-ft5x06.c switch (tsdata->version) { tsdata 1043 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata; tsdata 1052 drivers/input/touchscreen/edt-ft5x06.c tsdata = devm_kzalloc(&client->dev, sizeof(*tsdata), GFP_KERNEL); tsdata 1053 drivers/input/touchscreen/edt-ft5x06.c if (!tsdata) { tsdata 1066 drivers/input/touchscreen/edt-ft5x06.c tsdata->max_support_points = chip_data->max_support_points; tsdata 1068 drivers/input/touchscreen/edt-ft5x06.c tsdata->reset_gpio = devm_gpiod_get_optional(&client->dev, tsdata 1070 drivers/input/touchscreen/edt-ft5x06.c if (IS_ERR(tsdata->reset_gpio)) { tsdata 1071 drivers/input/touchscreen/edt-ft5x06.c error = PTR_ERR(tsdata->reset_gpio); tsdata 1077 drivers/input/touchscreen/edt-ft5x06.c tsdata->wake_gpio = devm_gpiod_get_optional(&client->dev, tsdata 1079 drivers/input/touchscreen/edt-ft5x06.c if (IS_ERR(tsdata->wake_gpio)) { tsdata 1080 drivers/input/touchscreen/edt-ft5x06.c error = PTR_ERR(tsdata->wake_gpio); tsdata 1086 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->wake_gpio) { tsdata 1088 drivers/input/touchscreen/edt-ft5x06.c gpiod_set_value_cansleep(tsdata->wake_gpio, 1); tsdata 1091 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->reset_gpio) { tsdata 1093 drivers/input/touchscreen/edt-ft5x06.c gpiod_set_value_cansleep(tsdata->reset_gpio, 0); tsdata 1103 drivers/input/touchscreen/edt-ft5x06.c mutex_init(&tsdata->mutex); tsdata 1104 drivers/input/touchscreen/edt-ft5x06.c tsdata->client = client; tsdata 1105 drivers/input/touchscreen/edt-ft5x06.c tsdata->input = input; tsdata 1106 drivers/input/touchscreen/edt-ft5x06.c tsdata->factory_mode = false; tsdata 1108 drivers/input/touchscreen/edt-ft5x06.c error = edt_ft5x06_ts_identify(client, tsdata, fw_version); tsdata 1118 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_readwrite(tsdata->client, 2, buf, 2, buf); tsdata 1120 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_set_regs(tsdata); tsdata 1121 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_get_defaults(&client->dev, tsdata); tsdata 1122 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_get_parameters(tsdata); tsdata 1126 drivers/input/touchscreen/edt-ft5x06.c tsdata->name, fw_version, tsdata->num_x, tsdata->num_y); tsdata 1128 drivers/input/touchscreen/edt-ft5x06.c input->name = tsdata->name; tsdata 1132 drivers/input/touchscreen/edt-ft5x06.c if (tsdata->version == EDT_M06 || tsdata 1133 drivers/input/touchscreen/edt-ft5x06.c tsdata->version == EDT_M09 || tsdata 1134 drivers/input/touchscreen/edt-ft5x06.c tsdata->version == EDT_M12) { tsdata 1136 drivers/input/touchscreen/edt-ft5x06.c 0, tsdata->num_x * 64 - 1, 0, 0); tsdata 1138 drivers/input/touchscreen/edt-ft5x06.c 0, tsdata->num_y * 64 - 1, 0, 0); tsdata 1147 drivers/input/touchscreen/edt-ft5x06.c touchscreen_parse_properties(input, true, &tsdata->prop); tsdata 1149 drivers/input/touchscreen/edt-ft5x06.c error = input_mt_init_slots(input, tsdata->max_support_points, tsdata 1156 drivers/input/touchscreen/edt-ft5x06.c i2c_set_clientdata(client, tsdata); tsdata 1165 drivers/input/touchscreen/edt-ft5x06.c client->name, tsdata); tsdata 1179 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_prepare_debugfs(tsdata, dev_driver_string(&client->dev)); tsdata 1185 drivers/input/touchscreen/edt-ft5x06.c tsdata->wake_gpio ? desc_to_gpio(tsdata->wake_gpio) : -1, tsdata 1186 drivers/input/touchscreen/edt-ft5x06.c tsdata->reset_gpio ? desc_to_gpio(tsdata->reset_gpio) : -1); tsdata 1193 drivers/input/touchscreen/edt-ft5x06.c struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); tsdata 1195 drivers/input/touchscreen/edt-ft5x06.c edt_ft5x06_ts_teardown_debugfs(tsdata); tsdata 43 drivers/input/touchscreen/pixcir_i2c_ts.c static void pixcir_ts_parse(struct pixcir_i2c_ts_data *tsdata, tsdata 52 drivers/input/touchscreen/pixcir_i2c_ts.c const struct pixcir_i2c_chip_data *chip = tsdata->chip; tsdata 57 drivers/input/touchscreen/pixcir_i2c_ts.c readsize = 2 + tsdata->max_fingers * (4 + i); tsdata 61 drivers/input/touchscreen/pixcir_i2c_ts.c ret = i2c_master_send(tsdata->client, wrbuf, sizeof(wrbuf)); tsdata 63 drivers/input/touchscreen/pixcir_i2c_ts.c dev_err(&tsdata->client->dev, tsdata 69 drivers/input/touchscreen/pixcir_i2c_ts.c ret = i2c_master_recv(tsdata->client, rdbuf, readsize); tsdata 71 drivers/input/touchscreen/pixcir_i2c_ts.c dev_err(&tsdata->client->dev, tsdata 78 drivers/input/touchscreen/pixcir_i2c_ts.c if (touch > tsdata->max_fingers) tsdata 79 drivers/input/touchscreen/pixcir_i2c_ts.c touch = tsdata->max_fingers; tsdata 85 drivers/input/touchscreen/pixcir_i2c_ts.c touchscreen_set_mt_pos(&report->pos[i], &tsdata->prop, tsdata 143 drivers/input/touchscreen/pixcir_i2c_ts.c struct pixcir_i2c_ts_data *tsdata = dev_id; tsdata 146 drivers/input/touchscreen/pixcir_i2c_ts.c while (tsdata->running) { tsdata 148 drivers/input/touchscreen/pixcir_i2c_ts.c pixcir_ts_parse(tsdata, &report); tsdata 151 drivers/input/touchscreen/pixcir_i2c_ts.c pixcir_ts_report(tsdata, &report); tsdata 153 drivers/input/touchscreen/pixcir_i2c_ts.c if (gpiod_get_value_cansleep(tsdata->gpio_attb)) { tsdata 159 drivers/input/touchscreen/pixcir_i2c_ts.c input_mt_sync_frame(tsdata->input); tsdata 160 drivers/input/touchscreen/pixcir_i2c_ts.c input_sync(tsdata->input); tsdata 171 drivers/input/touchscreen/pixcir_i2c_ts.c static void pixcir_reset(struct pixcir_i2c_ts_data *tsdata) tsdata 173 drivers/input/touchscreen/pixcir_i2c_ts.c if (!IS_ERR_OR_NULL(tsdata->gpio_reset)) { tsdata 174 drivers/input/touchscreen/pixcir_i2c_ts.c gpiod_set_value_cansleep(tsdata->gpio_reset, 1); tsdata 176 drivers/input/touchscreen/pixcir_i2c_ts.c gpiod_set_value_cansleep(tsdata->gpio_reset, 0); tsdata 419 drivers/input/touchscreen/pixcir_i2c_ts.c struct pixcir_i2c_ts_data *tsdata) tsdata 421 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->chip = of_device_get_match_data(dev); tsdata 422 drivers/input/touchscreen/pixcir_i2c_ts.c if (!tsdata->chip) tsdata 429 drivers/input/touchscreen/pixcir_i2c_ts.c struct pixcir_i2c_ts_data *tsdata) tsdata 441 drivers/input/touchscreen/pixcir_i2c_ts.c struct pixcir_i2c_ts_data *tsdata; tsdata 445 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata = devm_kzalloc(dev, sizeof(*tsdata), GFP_KERNEL); tsdata 446 drivers/input/touchscreen/pixcir_i2c_ts.c if (!tsdata) tsdata 450 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->chip = &pdata->chip; tsdata 452 drivers/input/touchscreen/pixcir_i2c_ts.c error = pixcir_parse_dt(dev, tsdata); tsdata 460 drivers/input/touchscreen/pixcir_i2c_ts.c if (!tsdata->chip->max_fingers) { tsdata 471 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->client = client; tsdata 472 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->input = input; tsdata 486 drivers/input/touchscreen/pixcir_i2c_ts.c touchscreen_parse_properties(input, true, &tsdata->prop); tsdata 494 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->max_fingers = tsdata->chip->max_fingers; tsdata 495 drivers/input/touchscreen/pixcir_i2c_ts.c if (tsdata->max_fingers > PIXCIR_MAX_SLOTS) { tsdata 496 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->max_fingers = PIXCIR_MAX_SLOTS; tsdata 498 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->max_fingers); tsdata 501 drivers/input/touchscreen/pixcir_i2c_ts.c error = input_mt_init_slots(input, tsdata->max_fingers, tsdata 508 drivers/input/touchscreen/pixcir_i2c_ts.c input_set_drvdata(input, tsdata); tsdata 510 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->gpio_attb = devm_gpiod_get(dev, "attb", GPIOD_IN); tsdata 511 drivers/input/touchscreen/pixcir_i2c_ts.c if (IS_ERR(tsdata->gpio_attb)) { tsdata 512 drivers/input/touchscreen/pixcir_i2c_ts.c error = PTR_ERR(tsdata->gpio_attb); tsdata 517 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->gpio_reset = devm_gpiod_get_optional(dev, "reset", tsdata 519 drivers/input/touchscreen/pixcir_i2c_ts.c if (IS_ERR(tsdata->gpio_reset)) { tsdata 520 drivers/input/touchscreen/pixcir_i2c_ts.c error = PTR_ERR(tsdata->gpio_reset); tsdata 525 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->gpio_wake = devm_gpiod_get_optional(dev, "wake", tsdata 527 drivers/input/touchscreen/pixcir_i2c_ts.c if (IS_ERR(tsdata->gpio_wake)) { tsdata 528 drivers/input/touchscreen/pixcir_i2c_ts.c error = PTR_ERR(tsdata->gpio_wake); tsdata 534 drivers/input/touchscreen/pixcir_i2c_ts.c tsdata->gpio_enable = devm_gpiod_get_optional(dev, "enable", tsdata 536 drivers/input/touchscreen/pixcir_i2c_ts.c if (IS_ERR(tsdata->gpio_enable)) { tsdata 537 drivers/input/touchscreen/pixcir_i2c_ts.c error = PTR_ERR(tsdata->gpio_enable); tsdata 543 drivers/input/touchscreen/pixcir_i2c_ts.c if (tsdata->gpio_enable) tsdata 548 drivers/input/touchscreen/pixcir_i2c_ts.c client->name, tsdata); tsdata 554 drivers/input/touchscreen/pixcir_i2c_ts.c pixcir_reset(tsdata); tsdata 557 drivers/input/touchscreen/pixcir_i2c_ts.c error = pixcir_set_power_mode(tsdata, PIXCIR_POWER_IDLE); tsdata 564 drivers/input/touchscreen/pixcir_i2c_ts.c error = pixcir_stop(tsdata); tsdata 572 drivers/input/touchscreen/pixcir_i2c_ts.c i2c_set_clientdata(client, tsdata); tsdata 140 drivers/input/touchscreen/tsc200x-core.c struct tsc200x_data tsdata; tsdata 144 drivers/input/touchscreen/tsc200x-core.c error = regmap_bulk_read(ts->regmap, TSC200X_REG_X, &tsdata, tsdata 150 drivers/input/touchscreen/tsc200x-core.c if (unlikely(tsdata.x > MAX_12BIT || tsdata.y > MAX_12BIT)) tsdata 154 drivers/input/touchscreen/tsc200x-core.c if (unlikely(tsdata.z1 == 0 || tsdata.z2 > MAX_12BIT)) tsdata 156 drivers/input/touchscreen/tsc200x-core.c if (unlikely(tsdata.z1 >= tsdata.z2)) tsdata 164 drivers/input/touchscreen/tsc200x-core.c ts->in_x == tsdata.x && ts->in_y == tsdata.y && tsdata 165 drivers/input/touchscreen/tsc200x-core.c ts->in_z1 == tsdata.z1 && ts->in_z2 == tsdata.z2) { tsdata 173 drivers/input/touchscreen/tsc200x-core.c ts->in_x = tsdata.x; tsdata 174 drivers/input/touchscreen/tsc200x-core.c ts->in_y = tsdata.y; tsdata 175 drivers/input/touchscreen/tsc200x-core.c ts->in_z1 = tsdata.z1; tsdata 176 drivers/input/touchscreen/tsc200x-core.c ts->in_z2 = tsdata.z2; tsdata 179 drivers/input/touchscreen/tsc200x-core.c pressure = tsdata.x * (tsdata.z2 - tsdata.z1) / tsdata.z1; tsdata 186 drivers/input/touchscreen/tsc200x-core.c tsc200x_update_pen_state(ts, tsdata.x, tsdata.y, pressure);