diff --git a/recipes-kernel/touchdriver/sis-i2c/src/sis_i2c.c b/recipes-kernel/touchdriver/sis-i2c/src/sis_i2c.c
index 60eaa3ac0cc9ee58eae54f5415e7d78c7d4681b0..6f0105226f5e06372e705e78fb6fe34a21d2a7aa 100644
--- a/recipes-kernel/touchdriver/sis-i2c/src/sis_i2c.c
+++ b/recipes-kernel/touchdriver/sis-i2c/src/sis_i2c.c
@@ -388,7 +388,7 @@ static irqreturn_t sis_ts_irq_handler(int irq, void *dev_id)
 type_b_report:
 
 	for (i = 0; i < MAX_FINGERS; i++) {
-		if (check_id[i] == 1) {
+		if (check_id[i]) {
 			if( i == 0){
 				input_report_abs(ts->input_dev,
 					BTN_TOUCH, 1);
@@ -409,7 +409,9 @@ type_b_report:
 				ABS_MT_POSITION_X, sisdata[i].x);
 			input_report_abs(ts->input_dev,
 				ABS_MT_POSITION_Y, sisdata[i].y);
-		} else if (pre_check_id[i] == 1) { // Was pressed last time, but not anymode -> send a release
+		}
+		if ((!check_id[i] && pre_check_id[i]) || // Was pressed last time, but not anymode -> send a release
+		   sisdata[i].pressure == 0) {
 			if( i == 0){
 				input_report_abs(ts->input_dev,
 					BTN_TOUCH, 0);