| From 30b3f68715595dee7fe4d9bd91a2252c3becdf0a Mon Sep 17 00:00:00 2001 |
| From: Caleb Connolly <caleb@connolly.tech> |
| Date: Sun, 7 Mar 2021 15:12:22 -0800 |
| Subject: Input: s6sy761 - fix coordinate read bit shift |
| |
| From: Caleb Connolly <caleb@connolly.tech> |
| |
| commit 30b3f68715595dee7fe4d9bd91a2252c3becdf0a upstream. |
| |
| The touch coordinate register contains the following: |
| |
| byte 3 byte 2 byte 1 |
| +--------+--------+ +-----------------+ +-----------------+ |
| | | | | | | | |
| | X[3:0] | Y[3:0] | | Y[11:4] | | X[11:4] | |
| | | | | | | | |
| +--------+--------+ +-----------------+ +-----------------+ |
| |
| Bytes 2 and 1 need to be shifted left by 4 bits, the least significant |
| nibble of each is stored in byte 3. Currently they are only |
| being shifted by 3 causing the reported coordinates to be incorrect. |
| |
| This matches downstream examples, and has been confirmed on my |
| device (OnePlus 7 Pro). |
| |
| Fixes: 0145a7141e59 ("Input: add support for the Samsung S6SY761 touchscreen") |
| Signed-off-by: Caleb Connolly <caleb@connolly.tech> |
| Reviewed-by: Andi Shyti <andi@etezian.org> |
| Link: https://lore.kernel.org/r/20210305185710.225168-1-caleb@connolly.tech |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/input/touchscreen/s6sy761.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/input/touchscreen/s6sy761.c |
| +++ b/drivers/input/touchscreen/s6sy761.c |
| @@ -145,8 +145,8 @@ static void s6sy761_report_coordinates(s |
| u8 major = event[4]; |
| u8 minor = event[5]; |
| u8 z = event[6] & S6SY761_MASK_Z; |
| - u16 x = (event[1] << 3) | ((event[3] & S6SY761_MASK_X) >> 4); |
| - u16 y = (event[2] << 3) | (event[3] & S6SY761_MASK_Y); |
| + u16 x = (event[1] << 4) | ((event[3] & S6SY761_MASK_X) >> 4); |
| + u16 y = (event[2] << 4) | (event[3] & S6SY761_MASK_Y); |
| |
| input_mt_slot(sdata->input, tid); |
| |