Skip to content

Commit d579478

Browse files
WhatAmISupposedToPutHeredtor
authored andcommitted
Input: apple_z2 - fix reading incorrect reports after exiting sleep
Under certain conditions (more prevalent after a suspend/resume cycle), the touchscreen controller can send the "boot complete" interrupt before it actually finished booting. In those cases, attempting to read touch data resuls in a stream of "not ready" messages being read and interpreted as a touch report. Check that the response is in fact a touch report and discard it otherwise. Reported-by: pitust <piotr@stelmaszek.com> Closes: https://oftc.catirclogs.org/asahi/2025-12-17#34878715; Fixes: 471a92f ("Input: apple_z2 - add a driver for Apple Z2 touchscreens") Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com> Link: https://patch.msgid.link/20251218-z2-init-fix-v1-1-48e3aa239caf@gmail.com Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
1 parent bf40644 commit d579478

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

drivers/input/touchscreen/apple_z2.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#define APPLE_Z2_TOUCH_STARTED 3
2222
#define APPLE_Z2_TOUCH_MOVED 4
2323
#define APPLE_Z2_CMD_READ_INTERRUPT_DATA 0xEB
24+
#define APPLE_Z2_REPLY_INTERRUPT_DATA 0xE1
2425
#define APPLE_Z2_HBPP_CMD_BLOB 0x3001
2526
#define APPLE_Z2_FW_MAGIC 0x5746325A
2627
#define LOAD_COMMAND_INIT_PAYLOAD 0
@@ -142,6 +143,9 @@ static int apple_z2_read_packet(struct apple_z2 *z2)
142143
if (error)
143144
return error;
144145

146+
if (z2->rx_buf[0] != APPLE_Z2_REPLY_INTERRUPT_DATA)
147+
return 0;
148+
145149
pkt_len = (get_unaligned_le16(z2->rx_buf + 1) + 8) & 0xfffffffc;
146150

147151
error = spi_read(z2->spidev, z2->rx_buf, pkt_len);

0 commit comments

Comments
 (0)