Lines Matching refs:tsdata

177 static bool edt_ft5x06_ts_check_crc(struct edt_ft5x06_ts_data *tsdata,  in edt_ft5x06_ts_check_crc()  argument
187 tsdata->crc_errors++; in edt_ft5x06_ts_check_crc()
188 dev_err_ratelimited(&tsdata->client->dev, in edt_ft5x06_ts_check_crc()
199 struct edt_ft5x06_ts_data *tsdata = dev_id; in edt_ft5x06_ts_isr() local
200 struct device *dev = &tsdata->client->dev; in edt_ft5x06_ts_isr()
207 switch (tsdata->version) { in edt_ft5x06_ts_isr()
230 datalen = tplen * tsdata->max_support_points + offset + crclen; in edt_ft5x06_ts_isr()
232 error = edt_ft5x06_ts_readwrite(tsdata->client, in edt_ft5x06_ts_isr()
242 if (tsdata->version == EDT_M06) { in edt_ft5x06_ts_isr()
245 tsdata->header_errors++; in edt_ft5x06_ts_isr()
252 if (!edt_ft5x06_ts_check_crc(tsdata, rdbuf, datalen)) in edt_ft5x06_ts_isr()
256 for (i = 0; i < tsdata->max_support_points; i++) { in edt_ft5x06_ts_isr()
265 if (tsdata->version == EDT_M06 && type == TOUCH_EVENT_DOWN) in edt_ft5x06_ts_isr()
271 if (tsdata->version == EV_FT) in edt_ft5x06_ts_isr()
276 input_mt_slot(tsdata->input, id); in edt_ft5x06_ts_isr()
277 if (input_mt_report_slot_state(tsdata->input, MT_TOOL_FINGER, in edt_ft5x06_ts_isr()
279 touchscreen_report_pos(tsdata->input, &tsdata->prop, in edt_ft5x06_ts_isr()
283 input_mt_report_pointer_emulation(tsdata->input, true); in edt_ft5x06_ts_isr()
284 input_sync(tsdata->input); in edt_ft5x06_ts_isr()
290 static int edt_ft5x06_register_write(struct edt_ft5x06_ts_data *tsdata, in edt_ft5x06_register_write() argument
295 switch (tsdata->version) { in edt_ft5x06_register_write()
297 wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc; in edt_ft5x06_register_write()
298 wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f; in edt_ft5x06_register_write()
301 return edt_ft5x06_ts_readwrite(tsdata->client, 4, in edt_ft5x06_register_write()
311 return edt_ft5x06_ts_readwrite(tsdata->client, 2, in edt_ft5x06_register_write()
319 static int edt_ft5x06_register_read(struct edt_ft5x06_ts_data *tsdata, in edt_ft5x06_register_read() argument
325 switch (tsdata->version) { in edt_ft5x06_register_read()
327 wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc; in edt_ft5x06_register_read()
328 wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f; in edt_ft5x06_register_read()
329 wrbuf[1] |= tsdata->factory_mode ? 0x80 : 0x40; in edt_ft5x06_register_read()
331 error = edt_ft5x06_ts_readwrite(tsdata->client, 2, wrbuf, 2, in edt_ft5x06_register_read()
337 dev_err(&tsdata->client->dev, in edt_ft5x06_register_read()
350 error = edt_ft5x06_ts_readwrite(tsdata->client, 1, in edt_ft5x06_register_read()
392 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in edt_ft5x06_setting_show() local
395 u8 *field = (u8 *)tsdata + attr->field_offset; in edt_ft5x06_setting_show()
401 mutex_lock(&tsdata->mutex); in edt_ft5x06_setting_show()
403 if (tsdata->factory_mode) { in edt_ft5x06_setting_show()
408 switch (tsdata->version) { in edt_ft5x06_setting_show()
429 val = edt_ft5x06_register_read(tsdata, addr); in edt_ft5x06_setting_show()
432 dev_err(&tsdata->client->dev, in edt_ft5x06_setting_show()
442 dev_warn(&tsdata->client->dev, in edt_ft5x06_setting_show()
450 mutex_unlock(&tsdata->mutex); in edt_ft5x06_setting_show()
459 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in edt_ft5x06_setting_store() local
462 u8 *field = (u8 *)tsdata + attr->field_offset; in edt_ft5x06_setting_store()
467 mutex_lock(&tsdata->mutex); in edt_ft5x06_setting_store()
469 if (tsdata->factory_mode) { in edt_ft5x06_setting_store()
483 switch (tsdata->version) { in edt_ft5x06_setting_store()
504 error = edt_ft5x06_register_write(tsdata, addr, val); in edt_ft5x06_setting_store()
506 dev_err(&tsdata->client->dev, in edt_ft5x06_setting_store()
515 mutex_unlock(&tsdata->mutex); in edt_ft5x06_setting_store()
542 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in model_show() local
544 return sysfs_emit(buf, "%s\n", tsdata->name); in model_show()
553 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in fw_version_show() local
555 return sysfs_emit(buf, "%s\n", tsdata->fw_version); in fw_version_show()
565 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in header_errors_show() local
567 return sysfs_emit(buf, "%d\n", tsdata->header_errors); in header_errors_show()
577 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in crc_errors_show() local
579 return sysfs_emit(buf, "%d\n", tsdata->crc_errors); in crc_errors_show()
602 static void edt_ft5x06_restore_reg_parameters(struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_restore_reg_parameters() argument
604 struct edt_reg_addr *reg_addr = &tsdata->reg_addr; in edt_ft5x06_restore_reg_parameters()
606 edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, in edt_ft5x06_restore_reg_parameters()
607 tsdata->threshold); in edt_ft5x06_restore_reg_parameters()
608 edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, in edt_ft5x06_restore_reg_parameters()
609 tsdata->gain); in edt_ft5x06_restore_reg_parameters()
611 edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, in edt_ft5x06_restore_reg_parameters()
612 tsdata->offset); in edt_ft5x06_restore_reg_parameters()
614 edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_x, in edt_ft5x06_restore_reg_parameters()
615 tsdata->offset_x); in edt_ft5x06_restore_reg_parameters()
617 edt_ft5x06_register_write(tsdata, reg_addr->reg_offset_y, in edt_ft5x06_restore_reg_parameters()
618 tsdata->offset_y); in edt_ft5x06_restore_reg_parameters()
620 edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate, in edt_ft5x06_restore_reg_parameters()
621 tsdata->report_rate); in edt_ft5x06_restore_reg_parameters()
626 static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_factory_mode() argument
628 struct i2c_client *client = tsdata->client; in edt_ft5x06_factory_mode()
633 if (tsdata->version != EDT_M06) { in edt_ft5x06_factory_mode()
641 if (!tsdata->raw_buffer) { in edt_ft5x06_factory_mode()
642 tsdata->raw_bufsize = tsdata->num_x * tsdata->num_y * in edt_ft5x06_factory_mode()
644 tsdata->raw_buffer = kzalloc(tsdata->raw_bufsize, GFP_KERNEL); in edt_ft5x06_factory_mode()
645 if (!tsdata->raw_buffer) { in edt_ft5x06_factory_mode()
652 error = edt_ft5x06_register_write(tsdata, WORK_REGISTER_OPMODE, 0x03); in edt_ft5x06_factory_mode()
659 tsdata->factory_mode = true; in edt_ft5x06_factory_mode()
663 ret = edt_ft5x06_register_read(tsdata, FACTORY_REGISTER_OPMODE); in edt_ft5x06_factory_mode()
678 kfree(tsdata->raw_buffer); in edt_ft5x06_factory_mode()
679 tsdata->raw_buffer = NULL; in edt_ft5x06_factory_mode()
680 tsdata->factory_mode = false; in edt_ft5x06_factory_mode()
686 static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_work_mode() argument
688 struct i2c_client *client = tsdata->client; in edt_ft5x06_work_mode()
694 error = edt_ft5x06_register_write(tsdata, FACTORY_REGISTER_OPMODE, 0x1); in edt_ft5x06_work_mode()
701 tsdata->factory_mode = false; in edt_ft5x06_work_mode()
706 ret = edt_ft5x06_register_read(tsdata, WORK_REGISTER_OPMODE); in edt_ft5x06_work_mode()
714 tsdata->factory_mode = true; in edt_ft5x06_work_mode()
718 kfree(tsdata->raw_buffer); in edt_ft5x06_work_mode()
719 tsdata->raw_buffer = NULL; in edt_ft5x06_work_mode()
721 edt_ft5x06_restore_reg_parameters(tsdata); in edt_ft5x06_work_mode()
729 struct edt_ft5x06_ts_data *tsdata = data; in edt_ft5x06_debugfs_mode_get() local
731 *mode = tsdata->factory_mode; in edt_ft5x06_debugfs_mode_get()
738 struct edt_ft5x06_ts_data *tsdata = data; in edt_ft5x06_debugfs_mode_set() local
744 mutex_lock(&tsdata->mutex); in edt_ft5x06_debugfs_mode_set()
746 if (mode != tsdata->factory_mode) { in edt_ft5x06_debugfs_mode_set()
747 retval = mode ? edt_ft5x06_factory_mode(tsdata) : in edt_ft5x06_debugfs_mode_set()
748 edt_ft5x06_work_mode(tsdata); in edt_ft5x06_debugfs_mode_set()
751 mutex_unlock(&tsdata->mutex); in edt_ft5x06_debugfs_mode_set()
762 struct edt_ft5x06_ts_data *tsdata = file->private_data; in edt_ft5x06_debugfs_raw_data_read() local
763 struct i2c_client *client = tsdata->client; in edt_ft5x06_debugfs_raw_data_read()
771 if (*off < 0 || *off >= tsdata->raw_bufsize) in edt_ft5x06_debugfs_raw_data_read()
774 mutex_lock(&tsdata->mutex); in edt_ft5x06_debugfs_raw_data_read()
776 if (!tsdata->factory_mode || !tsdata->raw_buffer) { in edt_ft5x06_debugfs_raw_data_read()
781 error = edt_ft5x06_register_write(tsdata, 0x08, 0x01); in edt_ft5x06_debugfs_raw_data_read()
790 val = edt_ft5x06_register_read(tsdata, 0x08); in edt_ft5x06_debugfs_raw_data_read()
809 rdbuf = tsdata->raw_buffer; in edt_ft5x06_debugfs_raw_data_read()
810 colbytes = tsdata->num_y * sizeof(u16); in edt_ft5x06_debugfs_raw_data_read()
814 for (i = 0; i < tsdata->num_x; i++) { in edt_ft5x06_debugfs_raw_data_read()
816 error = edt_ft5x06_ts_readwrite(tsdata->client, in edt_ft5x06_debugfs_raw_data_read()
825 read = min_t(size_t, count, tsdata->raw_bufsize - *off); in edt_ft5x06_debugfs_raw_data_read()
826 if (copy_to_user(buf, tsdata->raw_buffer + *off, read)) { in edt_ft5x06_debugfs_raw_data_read()
833 mutex_unlock(&tsdata->mutex); in edt_ft5x06_debugfs_raw_data_read()
842 static void edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata, in edt_ft5x06_ts_prepare_debugfs() argument
845 tsdata->debug_dir = debugfs_create_dir(debugfs_name, NULL); in edt_ft5x06_ts_prepare_debugfs()
847 debugfs_create_u16("num_x", S_IRUSR, tsdata->debug_dir, &tsdata->num_x); in edt_ft5x06_ts_prepare_debugfs()
848 debugfs_create_u16("num_y", S_IRUSR, tsdata->debug_dir, &tsdata->num_y); in edt_ft5x06_ts_prepare_debugfs()
851 tsdata->debug_dir, tsdata, &debugfs_mode_fops); in edt_ft5x06_ts_prepare_debugfs()
853 tsdata->debug_dir, tsdata, &debugfs_raw_data_fops); in edt_ft5x06_ts_prepare_debugfs()
856 static void edt_ft5x06_ts_teardown_debugfs(struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_ts_teardown_debugfs() argument
858 debugfs_remove_recursive(tsdata->debug_dir); in edt_ft5x06_ts_teardown_debugfs()
859 kfree(tsdata->raw_buffer); in edt_ft5x06_ts_teardown_debugfs()
864 static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_factory_mode() argument
869 static void edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata, in edt_ft5x06_ts_prepare_debugfs() argument
874 static void edt_ft5x06_ts_teardown_debugfs(struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_ts_teardown_debugfs() argument
881 struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_ts_identify() argument
886 char *model_name = tsdata->name; in edt_ft5x06_ts_identify()
887 char *fw_version = tsdata->fw_version; in edt_ft5x06_ts_identify()
904 tsdata->version = EDT_M06; in edt_ft5x06_ts_identify()
918 tsdata->version = EDT_M12; in edt_ft5x06_ts_identify()
941 tsdata->version = GENERIC_FT; in edt_ft5x06_ts_identify()
966 tsdata->version = EDT_M09; in edt_ft5x06_ts_identify()
971 tsdata->version = EDT_M09; in edt_ft5x06_ts_identify()
979 tsdata->version = EV_FT; in edt_ft5x06_ts_identify()
1000 struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_ts_get_defaults() argument
1002 struct edt_reg_addr *reg_addr = &tsdata->reg_addr; in edt_ft5x06_ts_get_defaults()
1008 edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, val); in edt_ft5x06_ts_get_defaults()
1009 tsdata->threshold = val; in edt_ft5x06_ts_get_defaults()
1014 edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, val); in edt_ft5x06_ts_get_defaults()
1015 tsdata->gain = val; in edt_ft5x06_ts_get_defaults()
1021 edt_ft5x06_register_write(tsdata, in edt_ft5x06_ts_get_defaults()
1023 tsdata->offset = val; in edt_ft5x06_ts_get_defaults()
1029 edt_ft5x06_register_write(tsdata, in edt_ft5x06_ts_get_defaults()
1031 tsdata->offset_x = val; in edt_ft5x06_ts_get_defaults()
1037 edt_ft5x06_register_write(tsdata, in edt_ft5x06_ts_get_defaults()
1039 tsdata->offset_y = val; in edt_ft5x06_ts_get_defaults()
1043 static void edt_ft5x06_ts_get_parameters(struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_ts_get_parameters() argument
1045 struct edt_reg_addr *reg_addr = &tsdata->reg_addr; in edt_ft5x06_ts_get_parameters()
1047 tsdata->threshold = edt_ft5x06_register_read(tsdata, in edt_ft5x06_ts_get_parameters()
1049 tsdata->gain = edt_ft5x06_register_read(tsdata, reg_addr->reg_gain); in edt_ft5x06_ts_get_parameters()
1051 tsdata->offset = in edt_ft5x06_ts_get_parameters()
1052 edt_ft5x06_register_read(tsdata, reg_addr->reg_offset); in edt_ft5x06_ts_get_parameters()
1054 tsdata->offset_x = edt_ft5x06_register_read(tsdata, in edt_ft5x06_ts_get_parameters()
1057 tsdata->offset_y = edt_ft5x06_register_read(tsdata, in edt_ft5x06_ts_get_parameters()
1060 tsdata->report_rate = edt_ft5x06_register_read(tsdata, in edt_ft5x06_ts_get_parameters()
1062 tsdata->num_x = EDT_DEFAULT_NUM_X; in edt_ft5x06_ts_get_parameters()
1064 tsdata->num_x = edt_ft5x06_register_read(tsdata, in edt_ft5x06_ts_get_parameters()
1066 tsdata->num_y = EDT_DEFAULT_NUM_Y; in edt_ft5x06_ts_get_parameters()
1068 tsdata->num_y = edt_ft5x06_register_read(tsdata, in edt_ft5x06_ts_get_parameters()
1072 static void edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata) in edt_ft5x06_ts_set_regs() argument
1074 struct edt_reg_addr *reg_addr = &tsdata->reg_addr; in edt_ft5x06_ts_set_regs()
1076 switch (tsdata->version) { in edt_ft5x06_ts_set_regs()
1091 reg_addr->reg_report_rate = tsdata->version == EDT_M12 ? in edt_ft5x06_ts_set_regs()
1138 struct edt_ft5x06_ts_data *tsdata; in edt_ft5x06_ts_probe() local
1147 tsdata = devm_kzalloc(&client->dev, sizeof(*tsdata), GFP_KERNEL); in edt_ft5x06_ts_probe()
1148 if (!tsdata) { in edt_ft5x06_ts_probe()
1161 tsdata->max_support_points = chip_data->max_support_points; in edt_ft5x06_ts_probe()
1163 tsdata->vcc = devm_regulator_get(&client->dev, "vcc"); in edt_ft5x06_ts_probe()
1164 if (IS_ERR(tsdata->vcc)) { in edt_ft5x06_ts_probe()
1165 error = PTR_ERR(tsdata->vcc); in edt_ft5x06_ts_probe()
1172 tsdata->iovcc = devm_regulator_get(&client->dev, "iovcc"); in edt_ft5x06_ts_probe()
1173 if (IS_ERR(tsdata->iovcc)) { in edt_ft5x06_ts_probe()
1174 error = PTR_ERR(tsdata->iovcc); in edt_ft5x06_ts_probe()
1181 error = regulator_enable(tsdata->iovcc); in edt_ft5x06_ts_probe()
1190 error = regulator_enable(tsdata->vcc); in edt_ft5x06_ts_probe()
1193 regulator_disable(tsdata->iovcc); in edt_ft5x06_ts_probe()
1199 tsdata); in edt_ft5x06_ts_probe()
1203 tsdata->reset_gpio = devm_gpiod_get_optional(&client->dev, in edt_ft5x06_ts_probe()
1205 if (IS_ERR(tsdata->reset_gpio)) { in edt_ft5x06_ts_probe()
1206 error = PTR_ERR(tsdata->reset_gpio); in edt_ft5x06_ts_probe()
1212 tsdata->wake_gpio = devm_gpiod_get_optional(&client->dev, in edt_ft5x06_ts_probe()
1214 if (IS_ERR(tsdata->wake_gpio)) { in edt_ft5x06_ts_probe()
1215 error = PTR_ERR(tsdata->wake_gpio); in edt_ft5x06_ts_probe()
1227 if (tsdata->reset_gpio) in edt_ft5x06_ts_probe()
1228 tsdata->suspend_mode = EDT_PMODE_POWEROFF; in edt_ft5x06_ts_probe()
1229 else if (tsdata->wake_gpio) in edt_ft5x06_ts_probe()
1230 tsdata->suspend_mode = EDT_PMODE_HIBERNATE; in edt_ft5x06_ts_probe()
1232 tsdata->suspend_mode = EDT_PMODE_NOT_SUPPORTED; in edt_ft5x06_ts_probe()
1234 if (tsdata->wake_gpio) { in edt_ft5x06_ts_probe()
1236 gpiod_set_value_cansleep(tsdata->wake_gpio, 1); in edt_ft5x06_ts_probe()
1239 if (tsdata->reset_gpio) { in edt_ft5x06_ts_probe()
1241 gpiod_set_value_cansleep(tsdata->reset_gpio, 0); in edt_ft5x06_ts_probe()
1251 mutex_init(&tsdata->mutex); in edt_ft5x06_ts_probe()
1252 tsdata->client = client; in edt_ft5x06_ts_probe()
1253 tsdata->input = input; in edt_ft5x06_ts_probe()
1254 tsdata->factory_mode = false; in edt_ft5x06_ts_probe()
1256 error = edt_ft5x06_ts_identify(client, tsdata); in edt_ft5x06_ts_probe()
1266 edt_ft5x06_ts_readwrite(tsdata->client, 2, buf, 2, buf); in edt_ft5x06_ts_probe()
1268 edt_ft5x06_ts_set_regs(tsdata); in edt_ft5x06_ts_probe()
1269 edt_ft5x06_ts_get_defaults(&client->dev, tsdata); in edt_ft5x06_ts_probe()
1270 edt_ft5x06_ts_get_parameters(tsdata); in edt_ft5x06_ts_probe()
1272 if (tsdata->reg_addr.reg_report_rate != NO_REGISTER && in edt_ft5x06_ts_probe()
1275 if (tsdata->version == EDT_M06) in edt_ft5x06_ts_probe()
1276 tsdata->report_rate = clamp_val(report_rate, 30, 140); in edt_ft5x06_ts_probe()
1278 tsdata->report_rate = clamp_val(report_rate, 1, 255); in edt_ft5x06_ts_probe()
1280 if (report_rate != tsdata->report_rate) in edt_ft5x06_ts_probe()
1283 report_rate, tsdata->report_rate); in edt_ft5x06_ts_probe()
1285 if (tsdata->version == EDT_M06) in edt_ft5x06_ts_probe()
1286 tsdata->report_rate /= 10; in edt_ft5x06_ts_probe()
1288 edt_ft5x06_register_write(tsdata, in edt_ft5x06_ts_probe()
1289 tsdata->reg_addr.reg_report_rate, in edt_ft5x06_ts_probe()
1290 tsdata->report_rate); in edt_ft5x06_ts_probe()
1295 tsdata->name, tsdata->fw_version, tsdata->num_x, tsdata->num_y); in edt_ft5x06_ts_probe()
1297 input->name = tsdata->name; in edt_ft5x06_ts_probe()
1302 0, tsdata->num_x * 64 - 1, 0, 0); in edt_ft5x06_ts_probe()
1304 0, tsdata->num_y * 64 - 1, 0, 0); in edt_ft5x06_ts_probe()
1306 touchscreen_parse_properties(input, true, &tsdata->prop); in edt_ft5x06_ts_probe()
1308 error = input_mt_init_slots(input, tsdata->max_support_points, in edt_ft5x06_ts_probe()
1315 i2c_set_clientdata(client, tsdata); in edt_ft5x06_ts_probe()
1324 client->name, tsdata); in edt_ft5x06_ts_probe()
1338 edt_ft5x06_ts_prepare_debugfs(tsdata, dev_driver_string(&client->dev)); in edt_ft5x06_ts_probe()
1343 tsdata->wake_gpio ? desc_to_gpio(tsdata->wake_gpio) : -1, in edt_ft5x06_ts_probe()
1344 tsdata->reset_gpio ? desc_to_gpio(tsdata->reset_gpio) : -1); in edt_ft5x06_ts_probe()
1351 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in edt_ft5x06_ts_remove() local
1353 edt_ft5x06_ts_teardown_debugfs(tsdata); in edt_ft5x06_ts_remove()
1359 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in edt_ft5x06_ts_suspend() local
1360 struct gpio_desc *reset_gpio = tsdata->reset_gpio; in edt_ft5x06_ts_suspend()
1366 if (tsdata->suspend_mode == EDT_PMODE_NOT_SUPPORTED) in edt_ft5x06_ts_suspend()
1370 ret = edt_ft5x06_register_write(tsdata, PMOD_REGISTER_OPMODE, in edt_ft5x06_ts_suspend()
1375 if (tsdata->suspend_mode == EDT_PMODE_HIBERNATE) in edt_ft5x06_ts_suspend()
1384 disable_irq(tsdata->client->irq); in edt_ft5x06_ts_suspend()
1389 ret = regulator_disable(tsdata->vcc); in edt_ft5x06_ts_suspend()
1392 ret = regulator_disable(tsdata->iovcc); in edt_ft5x06_ts_suspend()
1402 struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client); in edt_ft5x06_ts_resume() local
1408 if (tsdata->suspend_mode == EDT_PMODE_NOT_SUPPORTED) in edt_ft5x06_ts_resume()
1411 if (tsdata->suspend_mode == EDT_PMODE_POWEROFF) { in edt_ft5x06_ts_resume()
1412 struct gpio_desc *reset_gpio = tsdata->reset_gpio; in edt_ft5x06_ts_resume()
1425 ret = regulator_enable(tsdata->iovcc); in edt_ft5x06_ts_resume()
1434 ret = regulator_enable(tsdata->vcc); in edt_ft5x06_ts_resume()
1437 regulator_disable(tsdata->iovcc); in edt_ft5x06_ts_resume()
1445 edt_ft5x06_restore_reg_parameters(tsdata); in edt_ft5x06_ts_resume()
1446 enable_irq(tsdata->client->irq); in edt_ft5x06_ts_resume()
1448 if (tsdata->factory_mode) in edt_ft5x06_ts_resume()
1449 ret = edt_ft5x06_factory_mode(tsdata); in edt_ft5x06_ts_resume()
1451 struct gpio_desc *wake_gpio = tsdata->wake_gpio; in edt_ft5x06_ts_resume()