diff --git a/drivers/input/touchscreen/synaptics_rmi_hw/rmi_f11.c b/drivers/input/touchscreen/synaptics_rmi_hw/rmi_f11.c index fc20c596..bd4c77ba 100644 --- a/drivers/input/touchscreen/synaptics_rmi_hw/rmi_f11.c +++ b/drivers/input/touchscreen/synaptics_rmi_hw/rmi_f11.c @@ -574,6 +574,7 @@ static void rmi_f11_abs_pos_report(struct f11_2d_sensor *sensor, if (prev_state && !finger_state) { /* this is a release */ x = y = z = w_max = w_min = orient = 0; + input_report_abs(sensor->input, ABS_MT_TRACKING_ID, -1); } else if (!prev_state && !finger_state) { /* nothing to report */ return; @@ -627,38 +628,38 @@ static void rmi_f11_abs_pos_report(struct f11_2d_sensor *sensor, if (axis_align->clip_Y_high) y = min(axis_align->clip_Y_high, y); - } - x = x * x_lcd / sensor->max_x; - x = check_scope_x(x); - y = y * y_lcd_all / sensor->max_y; - pr_debug("%s: f_state[%d]:%d - x:%d y:%d z:%d w_max:%d w_min:%d max_x:%d max_y:%d \n", - __func__, n_finger, finger_state, x, y, z, w_max, w_min,sensor->max_x,sensor->max_y); + x = x * x_lcd / sensor->max_x; + x = check_scope_x(x); + y = y * y_lcd_all / sensor->max_y; + pr_debug("%s: f_state[%d]:%d - x:%d y:%d z:%d w_max:%d w_min:%d max_x:%d max_y:%d \n", + __func__, n_finger, finger_state, x, y, z, w_max, w_min,sensor->max_x,sensor->max_y); #ifndef CONFIG_RMI4_F11_PEN - /* Some UIs ignore W of zero, so we fudge it to 1 for pens. */ - if (sensor->sens_query.query9.has_pen && - get_tool_type(sensor, finger_state) == MT_TOOL_PEN) { - w_max = max(1, w_max); - w_min = max(1, w_min); - } + /* Some UIs ignore W of zero, so we fudge it to 1 for pens. */ + if (sensor->sens_query.query9.has_pen && + get_tool_type(sensor, finger_state) == MT_TOOL_PEN) { + w_max = max(1, w_max); + w_min = max(1, w_min); + } #endif #ifdef ABS_MT_PRESSURE - input_report_abs(sensor->input, ABS_MT_PRESSURE, z); + input_report_abs(sensor->input, ABS_MT_PRESSURE, z); #endif - input_report_abs(sensor->input, ABS_MT_TOUCH_MAJOR, w_max); - input_report_abs(sensor->input, ABS_MT_TOUCH_MINOR, w_min); - input_report_abs(sensor->input, ABS_MT_ORIENTATION, orient); - input_report_abs(sensor->input, ABS_MT_POSITION_X, x); - input_report_abs(sensor->input, ABS_MT_POSITION_Y, y); - input_report_abs(sensor->input, ABS_MT_TRACKING_ID, n_finger); + input_report_abs(sensor->input, ABS_MT_TOUCH_MAJOR, w_max); + input_report_abs(sensor->input, ABS_MT_TOUCH_MINOR, w_min); + input_report_abs(sensor->input, ABS_MT_ORIENTATION, orient); + input_report_abs(sensor->input, ABS_MT_POSITION_X, x); + input_report_abs(sensor->input, ABS_MT_POSITION_Y, y); + input_report_abs(sensor->input, ABS_MT_TRACKING_ID, n_finger); #ifdef CONFIG_RMI4_F11_PEN - if (sensor->sens_query.query9.has_pen) { - input_report_abs(sensor->input, ABS_MT_TOOL_TYPE, - get_tool_type(sensor, finger_state)); - } + if (sensor->sens_query.query9.has_pen) { + input_report_abs(sensor->input, ABS_MT_TOOL_TYPE, + get_tool_type(sensor, finger_state)); + } #endif + } /* MT sync between fingers */ input_mt_sync(sensor->input); sensor->finger_tracker[n_finger] = finger_state;