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);