Input: synaptics - use firmware data for Cr-48
authorHenrik Rydberg <rydberg@euromail.se>
Mon, 14 Jul 2014 17:26:56 +0000 (10:26 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 8 Aug 2014 16:17:01 +0000 (09:17 -0700)
commite08d9afa9345f9a0e13cfff1d116b3a9b10d9dcb
treec8d00350261b69e444bf5ff17e1da247b045b19c
parentae84197f8a5e29d9b949fb515493d05bf7723f5c
Input: synaptics - use firmware data for Cr-48

The profile sensor clickpad in a Cr-48 Chromebook does a reasonable job
of tracking individual fingers. This tracking isn't perfect, but,
experiments show that it works better than just passing "semi-mt" data
to userspace, and making userspace try to deduce where the fingers are
given a bounding box.

This patch tries to report correct two-finger positions instead of the
{(min_x, min_y), (max_x, max_y)} for profile sensor clickpads on Cr-48
chromebooks. Note that this device's firmware always reports the higher
(smaller y) finger in the "sgm" packet, and the lower (larger y) finger
in the "agm" packet. Thus, when a new finger arrives on the pad, the
kernel driver uses input core's contact tracking facilities to match
contacts with slots.

Inspired by patch by Daniel Kurtz <djkurtz@chromium.org> and Chung-yih
Wang <cywang@chromium.org>

Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Reviewed-by: Benson Leung <bleung@chromium.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/mouse/synaptics.c