Re: [PATCH 1/5] Input: zinitix - check all available fingers for every touch event

Linus Walleij <[email protected]> Wed, 29 Jul 2026 09:44:59 +0200
Newsgroups org.kernel.vger.linux-samsung-soc,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-input,org.kernel.vger.linux-kernel
Message-ID <CAD++jL=QfXJ78pfKy1hV6wGfSYzERUi=-nmqjPfMiXr9xk5+aw@mail.gmail.com>
On Thu, Jul 23, 2026 at 9:24=E2=80=AFPM Kaustabh Chakraborty
<[email protected]> wrote:

> When this initial driver was first added to tree, that is, in commit
> 26822652c85e ("Input: add zinitix touchscreen driver"), the touch_event
> struct had a field called finger_cnt. It was supposed to report how many
> fingers are touching the screen.
>
> But then, in commit e941dc13fd37 ("Input: zinitix - do not report shadow
> fingers"), some touchscreens reportedly exposed a bit mask for the
> fingers, instead of the count. So the code was changed to bitwise
> iteration.
>
> With my testing on the ZT7548 touchscreen of the Galaxy J6, I find the
> former to be true. This shows that there's two valid methods depending
> on what hardware the driver is made to work on.
>
> One solution is to implement both methods, and use some flag to select
> between the two. However, this introduces more implementation overhead,
> and a possibility of regression on devices the driver is expected to work=
.
>
> Instead, unconditionally check all fingers. The finger_mask field is now
> left unused, thus serving as padding bytes in the struct. For each
> finger, zinitix_report_finger() is called if the status reports the
> SUB_BIT_EXIST bit, so phantom fingers are not going to be a thing.
>
> Moreover, the android driver [1] does exactly that, so it's a tried
> method of implementation.
>
> Link: https://android.googlesource.com/kernel/bcm/+/23d376ef33aa4c500a5ea=
24a290f029d5f8e2de3/drivers/input/touchscreen/zinitix_touch.c#1942 [1]
> Signed-off-by: Kaustabh Chakraborty <[email protected]>

Reviewed-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij