Lines Matching +full:deep +full:- +full:touch
258 ret = pinctrl_select_state(ts->pinctrl, state); in gslx680_set_pinctrl_state()
268 struct device_node *np = ts->client->dev.of_node; in gslX680_init()
272 ts->irq = of_get_named_gpio_flags(np, "touch-gpio", 0, NULL); in gslX680_init()
273 ts->rst = of_get_named_gpio_flags(np, "reset-gpio", 0, NULL); in gslX680_init()
278 if (gpio_request(ts->rst, NULL) != 0) { in gslX680_init()
279 gpio_free(ts->rst); in gslX680_init()
281 return -EIO; in gslX680_init()
286 ts->pinctrl = devm_pinctrl_get(&ts->client->dev); in gslX680_init()
287 if (IS_ERR(ts->pinctrl)) { in gslX680_init()
288 ret = PTR_ERR(ts->pinctrl); in gslX680_init()
292 ts->pins_default = in gslX680_init()
293 pinctrl_lookup_state(ts->pinctrl, PINCTRL_STATE_DEFAULT); in gslX680_init()
294 //if (IS_ERR(ts->pins_default)) in gslX680_init()
295 // dev_err(&client->dev, "could not get default pinstate\n"); in gslX680_init()
297 ts->pins_sleep = pinctrl_lookup_state(ts->pinctrl, PINCTRL_STATE_SLEEP); in gslX680_init()
298 //if (IS_ERR(ts->pins_sleep)) in gslX680_init()
299 // dev_err(&client->dev, "could not get sleep pinstate\n"); in gslX680_init()
301 ts->pins_inactive = pinctrl_lookup_state(ts->pinctrl, "inactive"); in gslX680_init()
302 //if (IS_ERR(ts->pins_inactive)) in gslX680_init()
303 // dev_err(&client->dev, "could not get inactive pinstate\n"); in gslX680_init()
305 err = gpio_request(ts->rst, "tp reset"); in gslX680_init()
308 return -1; in gslX680_init()
311 gslx680_set_pinctrl_state(ts, ts->pins_default); in gslX680_init()
312 gpio_direction_output(ts->rst, 1); in gslX680_init()
313 gpio_set_value(ts->rst, 1); in gslX680_init()
321 gpio_direction_output(ts->rst, 0); in gslX680_shutdown_low()
322 gpio_set_value(ts->rst, 0); in gslX680_shutdown_low()
330 gpio_direction_output(ts->rst, 1); in gslX680_shutdown_high()
331 gpio_set_value(ts->rst, 1); in gslX680_shutdown_high()
352 xfer_msg[0].addr = client->addr;
354 xfer_msg[0].flags = client->flags & I2C_M_TEN;
358 xfer_msg[1].addr = client->addr;
365 i2c_transfer(client->adapter, xfer_msg, ARRAY_SIZE(xfer_msg));
369 return i2c_transfer(client->adapter, xfer_msg, ARRAY_SIZE(xfer_msg)) \
370 == ARRAY_SIZE(xfer_msg) ? 0 : -EFAULT;
381 xfer_msg[0].addr = client->addr; in gsl_write_interface()
383 xfer_msg[0].flags = client->flags & I2C_M_TEN; in gsl_write_interface()
387 return i2c_transfer(client->adapter, xfer_msg, 1) == 1 ? 0 : -EFAULT; in gsl_write_interface()
399 return -1; in gsl_ts_write()
421 return -1; in gsl_ts_read()
449 struct fw_data const *ptr_fw = ts->ts_cfg->fw_ptr; in gsl_load_fw()
451 source_len = ts->ts_cfg->fw_size; in gsl_load_fw()
472 cur - buf - 1); in gsl_load_fw()
489 rc--; in test_i2c()
501 rc--; in test_i2c()
516 gsl_DataInit(ts->ts_cfg->cfg_id); in startup_chip()
595 return (ch - '0'); in char_to_int()
597 return (ch - 'a' + 10); in char_to_int()
627 seq_printf(m, "%d\n", ts->ts_cfg->cfg_id[tmp]); in gsl_config_read_proc()
660 print_info("[tp-gsl][%s] \n", __func__); in gsl_config_write_proc()
663 return -EFAULT; in gsl_config_write_proc()
674 print_info("[tp-gsl][%s][%s]\n", __func__, temp_buf); in gsl_config_write_proc()
714 ts->ts_cfg->cfg_id[tmp1] = tmp; in gsl_config_write_proc()
750 x_err = x > x_old[id] ? (x - x_old[id]) : (x_old[id] - x); in filter_point()
751 y_err = y > y_old[id] ? (y - y_old[id]) : (y_old[id] - y); in filter_point()
777 x_old[id] ? (x_old[id] + filter_step_x) : (x_old[id] - in filter_point()
781 y_old[id] ? (y_old[id] + filter_step_y) : (y_old[id] - in filter_point()
804 x_err = x - x_old[id]; in record_point()
806 x_err = x_old[id] - x; in record_point()
810 y_err = y - y_old[id]; in record_point()
812 y_err = y_old[id] - y; in record_point()
856 input_report_key(ts->input, key, 1); in report_key()
857 input_sync(ts->input); in report_key()
873 int max_x = ts->ts_cfg->max_x; in report_data()
874 int max_y = ts->ts_cfg->max_y; in report_data()
890 input_mt_slot(ts->input_dev, id); in report_data()
891 input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, id); in report_data()
892 input_report_abs(ts->input_dev, ABS_MT_POSITION_X, x); in report_data()
893 input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, y); in report_data()
894 input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, w); in report_data()
895 input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, w); in report_data()
899 if (ts->ts_cfg->quirks == GSL_QUIRK_VR) { in report_data()
902 input_event(ts->input, EV_MSC, MSC_SCAN, 0x90001); in report_data()
903 input_report_key(ts->input, 0x110, 1); in report_data()
904 input_sync(ts->input); in report_data()
906 delt_x = (int)x - old_x; in report_data()
907 delt_y = (int)y - old_y; in report_data()
910 input_report_rel(ts->input, REL_Y, -delt_x); in report_data()
911 input_report_rel(ts->input, REL_X, -delt_y); in report_data()
912 input_sync(ts->input); in report_data()
921 input_mt_slot(ts->input, id); in report_data()
922 //input_report_abs(ts->input, ABS_MT_TRACKING_ID, id); in report_data()
923 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, 1); in report_data()
924 input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, pressure); in report_data()
925 if (ts->ts_cfg->x_pol) in report_data()
926 input_report_abs(ts->input, ABS_MT_POSITION_X, max_x - x); in report_data()
928 input_report_abs(ts->input, ABS_MT_POSITION_X, x); in report_data()
929 if (ts->ts_cfg->y_pol) in report_data()
930 input_report_abs(ts->input, ABS_MT_POSITION_Y, (max_y - y)); in report_data()
932 input_report_abs(ts->input, ABS_MT_POSITION_Y, (y)); in report_data()
933 input_report_abs(ts->input, ABS_MT_WIDTH_MAJOR, 1); in report_data()
936 input_report_abs(ts->input, ABS_MT_TRACKING_ID, id); in report_data()
937 input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, pressure); in report_data()
938 input_report_abs(ts->input, ABS_MT_POSITION_X, x); in report_data()
939 input_report_abs(ts->input, ABS_MT_POSITION_Y, y); in report_data()
940 input_report_abs(ts->input, ABS_MT_WIDTH_MAJOR, 1); in report_data()
941 input_mt_sync(ts->input); in report_data()
950 spin_lock_irqsave(&ts->irq_lock, irqflags); in glsx680_ts_irq_disable()
951 if (!ts->flag_irq_is_disable) { in glsx680_ts_irq_disable()
952 disable_irq_nosync(ts->client->irq); in glsx680_ts_irq_disable()
953 ts->flag_irq_is_disable = 1; in glsx680_ts_irq_disable()
955 spin_unlock_irqrestore(&ts->irq_lock, irqflags); in glsx680_ts_irq_disable()
962 spin_lock_irqsave(&ts->irq_lock, irqflags); in glsx680_ts_irq_enable()
963 if (ts->flag_irq_is_disable) { in glsx680_ts_irq_enable()
964 enable_irq(ts->client->irq); in glsx680_ts_irq_enable()
965 ts->flag_irq_is_disable = 0; in glsx680_ts_irq_enable()
967 spin_unlock_irqrestore(&ts->irq_lock, irqflags); in glsx680_ts_irq_enable()
996 rc = gsl_ts_read(ts->client, 0x80, ts->touch_data, ts->dd->data_size); in gslX680_ts_worker()
998 dev_err(&ts->client->dev, "read failed\n"); in gslX680_ts_worker()
1002 touches = ts->touch_data[ts->dd->touch_index]; in gslX680_ts_worker()
1003 //print_info("-----touches: %d -----\n", touches); in gslX680_ts_worker()
1007 //print_info("tp-gsl finger_num = %d\n",cinfo.finger_num); in gslX680_ts_worker()
1010 join_bytes((ts-> in gslX680_ts_worker()
1011 touch_data[ts->dd->x_index + 4 * i + 1] & 0xf), in gslX680_ts_worker()
1012 ts->touch_data[ts->dd->x_index + 4 * i]); in gslX680_ts_worker()
1014 join_bytes(ts->touch_data[ts->dd->y_index + 4 * i + 1], in gslX680_ts_worker()
1015 ts->touch_data[ts->dd->y_index + 4 * i]); in gslX680_ts_worker()
1017 ((ts->touch_data[ts->dd->x_index + 4 * i + 1] & 0xf0) >> 4); in gslX680_ts_worker()
1018 /*print_info("tp-gsl before: x[%d] = %d, y[%d] = %d, in gslX680_ts_worker()
1021 cinfo.finger_num = (ts->touch_data[3] << 24) | (ts->touch_data[2] << 16) in gslX680_ts_worker()
1022 | (ts->touch_data[1] << 8) | (ts->touch_data[0]); in gslX680_ts_worker()
1025 //print_info("[tp-gsl] tmp1 = %x\n", tmp1); in gslX680_ts_worker()
1031 gsl_ts_write(ts->client, 0xf0, buf, 4); in gslX680_ts_worker()
1038 gsl_ts_write(ts->client, 0x8, buf, 4); in gslX680_ts_worker()
1054 x = join_bytes((ts-> in gslX680_ts_worker()
1055 touch_data[ts->dd->x_index + 4 * i + 1] & 0xf), in gslX680_ts_worker()
1056 ts->touch_data[ts->dd->x_index + 4 * i]); in gslX680_ts_worker()
1057 y = join_bytes(ts->touch_data[ts->dd->y_index + 4 * i + 1], in gslX680_ts_worker()
1058 ts->touch_data[ts->dd->y_index + 4 * i]); in gslX680_ts_worker()
1059 id = ts->touch_data[ts->dd->id_index + 4 * i] >> 4; in gslX680_ts_worker()
1089 input_event(ts->input, EV_MSC, MSC_SCAN, 0x90001); in gslX680_ts_worker()
1090 input_report_key(ts->input, 0x110, 0); in gslX680_ts_worker()
1091 input_sync(ts->input); in gslX680_ts_worker()
1096 input_mt_slot(ts->input, i); in gslX680_ts_worker()
1097 //input_report_abs(ts->input, ABS_MT_TRACKING_ID, -1); in gslX680_ts_worker()
1098 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, in gslX680_ts_worker()
1109 //input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, 0); in gslX680_ts_worker()
1110 //input_report_abs(ts->input, ABS_MT_WIDTH_MAJOR, 0); in gslX680_ts_worker()
1111 //input_mt_sync(ts->input); in gslX680_ts_worker()
1116 (((key_x[key_count - 1] - key_x[0]) > in gslX680_ts_worker()
1117 0) ? (key_x[key_count - 1] - key_x[0]) in gslX680_ts_worker()
1118 : (key_x[0] - key_x[key_count - 1])); in gslX680_ts_worker()
1120 (((key_y[key_count - 1] - key_y[0]) > in gslX680_ts_worker()
1121 0) ? (key_y[key_count - 1] - key_y[0]) in gslX680_ts_worker()
1122 : (key_y[0] - key_y[key_count - 1])); in gslX680_ts_worker()
1125 if ((key_x[key_count - 1] - key_x[0]) > 100) { in gslX680_ts_worker()
1127 input_report_key(ts->input, in gslX680_ts_worker()
1129 input_sync(ts->input); in gslX680_ts_worker()
1130 input_report_key(ts->input, in gslX680_ts_worker()
1132 input_sync(ts->input); in gslX680_ts_worker()
1133 } else if ((key_x[0] - key_x[key_count - 1]) > in gslX680_ts_worker()
1136 input_report_key(ts->input, in gslX680_ts_worker()
1138 input_sync(ts->input); in gslX680_ts_worker()
1139 input_report_key(ts->input, in gslX680_ts_worker()
1141 input_sync(ts->input); in gslX680_ts_worker()
1144 if ((key_y[key_count - 1] - key_y[0]) > 100) { in gslX680_ts_worker()
1146 input_report_key(ts->input, in gslX680_ts_worker()
1148 input_sync(ts->input); in gslX680_ts_worker()
1149 input_report_key(ts->input, in gslX680_ts_worker()
1151 input_sync(ts->input); in gslX680_ts_worker()
1152 } else if ((key_y[0] - key_y[key_count - 1]) > in gslX680_ts_worker()
1155 input_report_key(ts->input, in gslX680_ts_worker()
1157 input_sync(ts->input); in gslX680_ts_worker()
1158 input_report_key(ts->input, in gslX680_ts_worker()
1160 input_sync(ts->input); in gslX680_ts_worker()
1163 /*printk(" key_x[key_count -1], key_x[0], in gslX680_ts_worker()
1164 key_y[key_count -1], key_y[0] is %d ,%d , %d , %d\n", in gslX680_ts_worker()
1165 key_x[key_count -1], key_x[0], key_y[key_count -1], in gslX680_ts_worker()
1167 if ((key_x[key_count - 1] - key_x[0] < 50) in gslX680_ts_worker()
1168 && (key_x[key_count - 1] - key_x[0] >= -50) in gslX680_ts_worker()
1169 && (key_y[key_count - 1] - key_y[0] < 50) in gslX680_ts_worker()
1170 && (key_y[key_count - 1] - key_y[0] >= -50) in gslX680_ts_worker()
1172 //queue_work(gsl_timer_workqueue,&ts->click_work); in gslX680_ts_worker()
1177 input_report_key(ts->input, key_array[4], 1); in gslX680_ts_worker()
1178 input_sync(ts->input); in gslX680_ts_worker()
1179 input_report_key(ts->input, key_array[4], 0); in gslX680_ts_worker()
1180 input_sync(ts->input); in gslX680_ts_worker()
1190 if ((key_x[511] - key_x[0]) > 100) { in gslX680_ts_worker()
1192 input_report_key(ts->input, in gslX680_ts_worker()
1194 input_sync(ts->input); in gslX680_ts_worker()
1195 input_report_key(ts->input, in gslX680_ts_worker()
1197 input_sync(ts->input); in gslX680_ts_worker()
1198 } else if ((key_x[0] - key_x[511]) > 100) { in gslX680_ts_worker()
1200 input_report_key(ts->input, in gslX680_ts_worker()
1202 input_sync(ts->input); in gslX680_ts_worker()
1203 input_report_key(ts->input, in gslX680_ts_worker()
1205 input_sync(ts->input); in gslX680_ts_worker()
1209 if ((key_y[511] - key_y[0]) > 100) { in gslX680_ts_worker()
1211 input_report_key(ts->input, in gslX680_ts_worker()
1213 input_sync(ts->input); in gslX680_ts_worker()
1214 input_report_key(ts->input, in gslX680_ts_worker()
1216 input_sync(ts->input); in gslX680_ts_worker()
1217 } else if ((key_y[0] - key_y[511]) > 100) { in gslX680_ts_worker()
1219 input_report_key(ts->input, in gslX680_ts_worker()
1221 input_sync(ts->input); in gslX680_ts_worker()
1222 input_report_key(ts->input, in gslX680_ts_worker()
1224 input_sync(ts->input); in gslX680_ts_worker()
1235 input_report_key(ts->input, key, 0); in gslX680_ts_worker()
1236 input_sync(ts->input); in gslX680_ts_worker()
1243 input_sync(ts->input); in gslX680_ts_worker()
1285 //gsl_ts_read(ts->client, 0x80, read_buf, 4); in gsl_monitor_worker()
1289 gsl_ts_read(ts->client, 0xb0, read_buf, 4); in gsl_monitor_worker()
1303 gsl_ts_read(ts->client, 0xb4, read_buf, 4); in gsl_monitor_worker()
1326 gsl_ts_read(ts->client, 0xbc, read_buf, 4); in gsl_monitor_worker()
1344 gsl_ts_write(ts->client, 0xf0, write_buf, 4); in gsl_monitor_worker()
1345 gsl_ts_read(ts->client, 0x10, read_buf, 4); in gsl_monitor_worker()
1346 gsl_ts_read(ts->client, 0x10, read_buf, 4); in gsl_monitor_worker()
1366 init_chip(ts->client, ts); in gsl_monitor_worker()
1371 //queue_delayed_work(gsl_monitor_workqueue, &ts->gsl_monitor_work, 100); in gsl_monitor_worker()
1383 if (!work_pending(&ts->work)) { in gsl_ts_irq()
1384 queue_work(ts->wq, &ts->work); in gsl_ts_irq()
1396 int max_x = ts->ts_cfg->max_x; in gslX680_ts_init()
1397 int max_y = ts->ts_cfg->max_y; in gslX680_ts_init()
1401 ts->dd = &devices[ts->device_id]; in gslX680_ts_init()
1403 if (ts->device_id == 0) { in gslX680_ts_init()
1404 ts->dd->data_size = in gslX680_ts_init()
1405 MAX_FINGERS * ts->dd->touch_bytes + ts->dd->touch_meta_data; in gslX680_ts_init()
1406 ts->dd->touch_index = 0; in gslX680_ts_init()
1409 ts->touch_data = in gslX680_ts_init()
1410 devm_kzalloc(&client->dev, ts->dd->data_size, GFP_KERNEL); in gslX680_ts_init()
1411 if (!ts->touch_data) { in gslX680_ts_init()
1413 return -ENOMEM; in gslX680_ts_init()
1416 input_device = devm_input_allocate_device(&ts->client->dev); in gslX680_ts_init()
1418 rc = -ENOMEM; in gslX680_ts_init()
1422 ts->input = input_device; in gslX680_ts_init()
1423 input_device->name = GSLX680_I2C_NAME; in gslX680_ts_init()
1424 input_device->id.bustype = BUS_I2C; in gslX680_ts_init()
1425 input_device->dev.parent = &client->dev; in gslX680_ts_init()
1429 __set_bit(EV_ABS, input_device->evbit); in gslX680_ts_init()
1430 __set_bit(EV_KEY, input_device->evbit); in gslX680_ts_init()
1431 __set_bit(EV_REP, input_device->evbit); in gslX680_ts_init()
1432 __set_bit(EV_SYN, input_device->evbit); in gslX680_ts_init()
1433 __set_bit(INPUT_PROP_DIRECT, input_device->propbit); in gslX680_ts_init()
1434 __set_bit(MT_TOOL_FINGER, input_device->keybit); in gslX680_ts_init()
1439 set_bit(EV_ABS, input_device->evbit); in gslX680_ts_init()
1440 set_bit(EV_KEY, input_device->evbit); in gslX680_ts_init()
1441 __set_bit(INPUT_PROP_DIRECT, input_device->propbit); in gslX680_ts_init()
1442 input_device->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH); in gslX680_ts_init()
1446 input_device->evbit[0] = BIT_MASK(EV_KEY); in gslX680_ts_init()
1447 /*input_device->evbit[0] = BIT_MASK(EV_SYN) in gslX680_ts_init()
1450 set_bit(key_array[i], input_device->keybit); in gslX680_ts_init()
1454 set_bit(EV_REL, input_device->evbit); in gslX680_ts_init()
1461 set_bit(ABS_MT_POSITION_X, input_device->absbit); in gslX680_ts_init()
1462 set_bit(ABS_MT_POSITION_Y, input_device->absbit); in gslX680_ts_init()
1463 set_bit(ABS_MT_TOUCH_MAJOR, input_device->absbit); in gslX680_ts_init()
1464 set_bit(ABS_MT_WIDTH_MAJOR, input_device->absbit); in gslX680_ts_init()
1474 //client->irq = IRQ_PORT; in gslX680_ts_init()
1475 //ts->irq = client->irq; in gslX680_ts_init()
1477 ts->wq = create_singlethread_workqueue("kworkqueue_ts"); in gslX680_ts_init()
1478 if (!ts->wq) { in gslX680_ts_init()
1479 dev_err(&client->dev, "gsl Could not create workqueue\n"); in gslX680_ts_init()
1482 flush_workqueue(ts->wq); in gslX680_ts_init()
1484 INIT_WORK(&ts->work, gslX680_ts_worker); in gslX680_ts_init()
1493 destroy_workqueue(ts->wq); in gslX680_ts_init()
1508 cancel_delayed_work_sync(&ts->gsl_monitor_work);
1512 //cancel_work_sync(&ts->click_work);
1514 disable_irq_nosync(ts->irq);
1522 input_mt_slot(ts->input, i);
1523 input_report_abs(ts->input, ABS_MT_TRACKING_ID, -1);
1524 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, false);
1527 input_mt_sync(ts->input);
1529 input_sync(ts->input);
1532 input_sync(ts->input);
1550 reset_chip(ts->client);
1551 startup_chip(ts->client);
1552 check_mem_data(ts->client, ts);
1557 input_mt_slot(ts->input, i);
1558 input_report_abs(ts->input, ABS_MT_TRACKING_ID, -1);
1559 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, false);
1562 input_mt_sync(ts->input);
1564 input_sync(ts->input);
1568 queue_delayed_work(gsl_monitor_workqueue, &ts->gsl_monitor_work, 300);
1572 //queue_work(gsl_timer_workqueue,&ts->click_work);
1575 disable_irq_nosync(ts->irq);
1576 enable_irq(ts->irq);
1587 //gsl_ts_suspend(&ts->client->dev); in gsl_ts_early_suspend()
1590 cancel_delayed_work_sync(&ts->gsl_monitor_work); in gsl_ts_early_suspend()
1594 cancel_work_sync(&ts->work); in gsl_ts_early_suspend()
1600 input_mt_slot(ts->input, i); in gsl_ts_early_suspend()
1601 input_report_abs(ts->input, ABS_MT_TRACKING_ID, -1); in gsl_ts_early_suspend()
1602 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, false); in gsl_ts_early_suspend()
1605 input_mt_sync(ts->input); in gsl_ts_early_suspend()
1607 input_sync(ts->input); in gsl_ts_early_suspend()
1610 input_sync(ts->input); in gsl_ts_early_suspend()
1620 //gsl_ts_resume(&ts->client->dev); in gsl_ts_late_resume()
1626 reset_chip(ts->client); in gsl_ts_late_resume()
1627 startup_chip(ts->client); in gsl_ts_late_resume()
1628 check_mem_data(ts->client, ts); in gsl_ts_late_resume()
1633 input_mt_slot(ts->input, i); in gsl_ts_late_resume()
1634 input_report_abs(ts->input, ABS_MT_TRACKING_ID, -1); in gsl_ts_late_resume()
1635 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, false); in gsl_ts_late_resume()
1638 input_mt_sync(ts->input); in gsl_ts_late_resume()
1640 input_sync(ts->input); in gsl_ts_late_resume()
1644 queue_delayed_work(gsl_monitor_workqueue, &ts->gsl_monitor_work, 300); in gsl_ts_late_resume()
1657 //gsl_ts_suspend(&ts->client->dev); in gsl_ts_early_suspend()
1660 cancel_delayed_work_sync(&ts->gsl_monitor_work); in gsl_ts_early_suspend()
1664 cancel_work_sync(&ts->work); in gsl_ts_early_suspend()
1670 input_mt_slot(ts->input, i); in gsl_ts_early_suspend()
1671 input_report_abs(ts->input, ABS_MT_TRACKING_ID, -1); in gsl_ts_early_suspend()
1672 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, false); in gsl_ts_early_suspend()
1675 input_mt_sync(ts->input); in gsl_ts_early_suspend()
1677 input_sync(ts->input); in gsl_ts_early_suspend()
1680 input_sync(ts->input); in gsl_ts_early_suspend()
1690 //gsl_ts_resume(&ts->client->dev); in gsl_ts_late_resume()
1697 reset_chip(ts->client); in gsl_ts_late_resume()
1698 startup_chip(ts->client); in gsl_ts_late_resume()
1699 check_mem_data(ts->client, ts); in gsl_ts_late_resume()
1704 input_mt_slot(ts->input, i); in gsl_ts_late_resume()
1705 input_report_abs(ts->input, ABS_MT_TRACKING_ID, -1); in gsl_ts_late_resume()
1706 input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, false); in gsl_ts_late_resume()
1709 input_mt_sync(ts->input); in gsl_ts_late_resume()
1711 input_sync(ts->input); in gsl_ts_late_resume()
1715 queue_delayed_work(gsl_monitor_workqueue, &ts->gsl_monitor_work, 300); in gsl_ts_late_resume()
1738 //wake_lock_init(&touch_wakelock, WAKE_LOCK_SUSPEND, "touch"); in gsl_ts_probe()
1739 //wake_lock(&touch_wakelock); //system do not enter deep sleep in gsl_ts_probe()
1740 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { in gsl_ts_probe()
1741 dev_err(&client->dev, "gsl I2C functionality not supported\n"); in gsl_ts_probe()
1742 return -ENODEV; in gsl_ts_probe()
1745 ts = devm_kzalloc(&client->dev, sizeof(*ts), GFP_KERNEL); in gsl_ts_probe()
1747 return -ENOMEM; in gsl_ts_probe()
1749 match = of_match_device(of_match_ptr(gsl_ts_ids), &client->dev); in gsl_ts_probe()
1751 return -EINVAL; in gsl_ts_probe()
1753 ts->ts_cfg = (const struct gsl_ts_cfg *)match->data; in gsl_ts_probe()
1755 ts->tp.tp_suspend = gsl_ts_early_suspend; in gsl_ts_probe()
1756 ts->tp.tp_resume = gsl_ts_late_resume; in gsl_ts_probe()
1757 tp_register_fb(&ts->tp); in gsl_ts_probe()
1759 ts->client = client; in gsl_ts_probe()
1761 //ts->device_id = id->driver_data; in gsl_ts_probe()
1766 dev_err(&client->dev, "gsl GSLX680 init failed\n"); in gsl_ts_probe()
1773 init_chip(ts->client, ts); in gsl_ts_probe()
1774 check_mem_data(ts->client, ts); in gsl_ts_probe()
1775 spin_lock_init(&ts->irq_lock); in gsl_ts_probe()
1776 client->irq = gpio_to_irq(ts->irq); in gsl_ts_probe()
1777 rc = request_irq(client->irq, gsl_ts_irq, IRQF_TRIGGER_RISING, in gsl_ts_probe()
1778 client->name, ts); in gsl_ts_probe()
1785 //rc = device_create_file(&ts->input->dev, &dev_attr_debug_enable); in gsl_ts_probe()
1789 ts->early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN + 1; in gsl_ts_probe()
1790 //ts->early_suspend.level = EARLY_SUSPEND_LEVEL_DISABLE_FB + 1; in gsl_ts_probe()
1791 ts->early_suspend.suspend = gsl_ts_early_suspend; in gsl_ts_probe()
1792 ts->early_suspend.resume = gsl_ts_late_resume; in gsl_ts_probe()
1793 register_early_suspend(&ts->early_suspend); in gsl_ts_probe()
1798 INIT_DELAYED_WORK(&ts->gsl_monitor_work, gsl_monitor_worker); in gsl_ts_probe()
1801 queue_delayed_work(gsl_monitor_workqueue, &ts->gsl_monitor_work, 1000); in gsl_ts_probe()
1806 INIT_WORK(&ts->click_work, click_timer_worker); in gsl_ts_probe()
1808 queue_work(gsl_timer_workqueue, &ts->click_work); in gsl_ts_probe()
1814 printk("[tp-gsl] [%s] gsl_config_proc = %x \n", __func__, in gsl_ts_probe()
1820 gsl_config_proc->read_proc = gsl_config_read_proc; in gsl_ts_probe()
1821 gsl_config_proc->write_proc = gsl_config_write_proc; in gsl_ts_probe()
1829 //disable_irq_nosync(->irq); in gsl_ts_probe()
1843 unregister_early_suspend(&ts->early_suspend); in gsl_ts_remove()
1847 cancel_delayed_work_sync(&ts->gsl_monitor_work); in gsl_ts_remove()
1852 cancel_work_sync(&ts->click_work); in gsl_ts_remove()
1856 device_init_wakeup(&client->dev, 0); in gsl_ts_remove()
1857 cancel_work_sync(&ts->work); in gsl_ts_remove()
1858 free_irq(ts->client->irq, ts); in gsl_ts_remove()
1859 destroy_workqueue(ts->wq); in gsl_ts_remove()
1860 //device_remove_file(&ts->input->dev, &dev_attr_debug_enable); in gsl_ts_remove()