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;
