Patch "Input: ilitek_ts_i2c - avoid wrong input subsystem sync" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    Input: ilitek_ts_i2c - avoid wrong input subsystem sync

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     input-ilitek_ts_i2c-avoid-wrong-input-subsystem-sync.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b6e7680963cab97dcb29678e3e3afe5944390bb6
Author: Emanuele Ghidoli <emanuele.ghidoli@xxxxxxxxxxx>
Date:   Mon Aug 5 10:55:10 2024 +0200

    Input: ilitek_ts_i2c - avoid wrong input subsystem sync
    
    [ Upstream commit 7d0b18cd5dc7429917812963611d961fd93cb44d ]
    
    For different reasons i2c transaction may fail or report id in the
    message may be wrong. Avoid closing the frame in this case as it will
    result in all contacts being dropped, indicating that nothing is
    touching the screen anymore, while usually it is not the case.
    
    Fixes: 42370681bd46 ("Input: Add support for ILITEK Lego Series")
    Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@xxxxxxxxxxx>
    Signed-off-by: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240805085511.43955-2-francesco@xxxxxxxxxx
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/input/touchscreen/ilitek_ts_i2c.c b/drivers/input/touchscreen/ilitek_ts_i2c.c
index 2f872e95fbbad..f70af5a173b34 100644
--- a/drivers/input/touchscreen/ilitek_ts_i2c.c
+++ b/drivers/input/touchscreen/ilitek_ts_i2c.c
@@ -160,15 +160,14 @@ static int ilitek_process_and_report_v6(struct ilitek_ts_data *ts)
 	error = ilitek_i2c_write_and_read(ts, NULL, 0, 0, buf, 64);
 	if (error) {
 		dev_err(dev, "get touch info failed, err:%d\n", error);
-		goto err_sync_frame;
+		return error;
 	}
 
 	report_max_point = buf[REPORT_COUNT_ADDRESS];
 	if (report_max_point > ts->max_tp) {
 		dev_err(dev, "FW report max point:%d > panel info. max:%d\n",
 			report_max_point, ts->max_tp);
-		error = -EINVAL;
-		goto err_sync_frame;
+		return -EINVAL;
 	}
 
 	count = DIV_ROUND_UP(report_max_point, packet_max_point);
@@ -178,7 +177,7 @@ static int ilitek_process_and_report_v6(struct ilitek_ts_data *ts)
 		if (error) {
 			dev_err(dev, "get touch info. failed, cnt:%d, err:%d\n",
 				count, error);
-			goto err_sync_frame;
+			return error;
 		}
 	}
 
@@ -203,10 +202,10 @@ static int ilitek_process_and_report_v6(struct ilitek_ts_data *ts)
 		ilitek_touch_down(ts, id, x, y);
 	}
 
-err_sync_frame:
 	input_mt_sync_frame(input);
 	input_sync(input);
-	return error;
+
+	return 0;
 }
 
 /* APIs of cmds for ILITEK Touch IC */




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux