ts->old_finger = ts->pre_finger_mask;
+
+ if (ts->hx_point_num == 0) {
+ I("%s: hx_point_num = 0! \n", __func__);
+ return ts_status;
+ }
+
ts->pre_finger_mask = 0;
hx_touch_data->finger_num = hx_touch_data->hx_coord_buf[ts->coordInfoSize - 4] & 0x0F;
hx_touch_data->finger_on = 1;
#endif
p_point_num = ts->hx_point_num;
+ if (hx_touch_data->hx_coord_buf[HX_TOUCH_INFO_POINT_CNT] == 0xff) {
+ ts->hx_point_num = 0;
+ } else {
+ ts->hx_point_num = hx_touch_data->hx_coord_buf[HX_TOUCH_INFO_POINT_CNT] & 0x0f;
+ }
+
switch (ts_path) {
case HX_REPORT_COORD:
ts_status = himax_parse_report_points(ts, ts_path, ts_status);
for (loop_i = 0; loop_i < ts->nFinger_support; loop_i++) {
#ifndef HX_PROTOCOL_A
input_mt_slot(ts->input_dev, loop_i);
+ input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0);
+ input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0);
+ input_report_abs(ts->input_dev, ABS_MT_PRESSURE, 0);
input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0);
#endif
}
vk_press = 0;
#ifndef HX_PROTOCOL_A
input_mt_slot(ts->input_dev, 0);
+ input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0);
+ input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0);
+ input_report_abs(ts->input_dev, ABS_MT_PRESSURE, 0);
input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0);
#else
input_mt_sync(ts->input_dev);
#endif
input_report_key(ts->input_dev, BTN_TOUCH, g_target_report_data->finger_on);
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, g_target_report_data->w[i]);
- input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, i);
#ifndef HX_PROTOCOL_A
input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, g_target_report_data->w[i]);
input_report_abs(ts->input_dev, ABS_MT_PRESSURE, g_target_report_data->w[i]);
+#else
+ input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, i);
#endif
input_report_abs(ts->input_dev, ABS_MT_POSITION_X, g_target_report_data->x[i]);
input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, g_target_report_data->y[i]);
} else {
input_mt_slot(ts->input_dev, i);
+ input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0);
+ input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0);
+ input_report_abs(ts->input_dev, ABS_MT_PRESSURE, 0);
input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0);
}
}
for (loop_i = 0; loop_i < ts->nFinger_support; loop_i++) {
if (((ts->pre_finger_mask >> loop_i) & 1) == 1) {
input_mt_slot(ts->input_dev, loop_i);
+ input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0);
+ input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0);
+ input_report_abs(ts->input_dev, ABS_MT_PRESSURE, 0);
input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0);
}
}
I("%s: Entering, ts_status=%d! \n", __func__, ts_status);
if (ts_path == HX_REPORT_COORD || ts_path == HX_REPORT_COORD_RAWDATA) {
- if (hx_touch_data->hx_coord_buf[HX_TOUCH_INFO_POINT_CNT] == 0xff) {
- ts->hx_point_num = 0;
- } else {
- ts->hx_point_num = hx_touch_data->hx_coord_buf[HX_TOUCH_INFO_POINT_CNT] & 0x0f;
- }
/* Touch Point information */
himax_report_points(ts);
#endif
himax_int_enable(0);
+ himax_report_all_leave_event(ts);
g_core_fp.fp_suspend_ic_action();
if (!ts->use_irq) {