Re: [PATCH] Input: alps - Report pressure of v3 and v7 trackstick
flat view
From: Pali Rohár <hidden>
Date: 2018-03-26 22:39:02
Also in:
lkml
On Monday 26 March 2018 15:37:32 Dmitry Torokhov wrote:
Hi Pali, On Wed, Mar 21, 2018 at 09:07:36PM +0100, Pali Rohár wrote:quoted
ALPS v3 and v7 packet formats reports trackstick pressure. This information is already parsed in unused "z" variable. ALPS SS4 S2 devices already reports trackstick pressure as ABS_PRESSURE attribute, therefore reports pressure in the same way also for v3 and v7. This patch also updates parsing v3 pressure information, it is also stored in 7 bits. Signed-off-by: Pali Rohár <redacted> --- drivers/input/mouse/alps.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index 010c1bcdb06d..0a9e6a3a2f9f 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c@@ -139,11 +139,11 @@ static const struct alps_model_info alps_model_data[] = { }; static const struct alps_protocol_info alps_v3_protocol_data = { - ALPS_PROTO_V3, 0x8f, 0x8f, ALPS_DUALPOINT + ALPS_PROTO_V3, 0x8f, 0x8f, ALPS_DUALPOINT | ALPS_DUALPOINT_WITH_PRESSUREIt seems that with these changes we no longer have trackpoints that do not report pressure in ALPS. Should we get rid of
Nope, we still have. See them in the alps_model_data table.
ALPS_DUALPOINT_WITH_PRESSURE and clean up the code a bit? Thanks.quoted
}; static const struct alps_protocol_info alps_v3_rushmore_data = { - ALPS_PROTO_V3_RUSHMORE, 0x8f, 0x8f, ALPS_DUALPOINT + ALPS_PROTO_V3_RUSHMORE, 0x8f, 0x8f, ALPS_DUALPOINT | ALPS_DUALPOINT_WITH_PRESSURE }; static const struct alps_protocol_info alps_v4_protocol_data = {@@ -155,7 +155,7 @@ static const struct alps_protocol_info alps_v5_protocol_data = { }; static const struct alps_protocol_info alps_v7_protocol_data = { - ALPS_PROTO_V7, 0x48, 0x48, ALPS_DUALPOINT + ALPS_PROTO_V7, 0x48, 0x48, ALPS_DUALPOINT | ALPS_DUALPOINT_WITH_PRESSURE }; static const struct alps_protocol_info alps_v8_protocol_data = {@@ -583,7 +583,7 @@ static void alps_process_trackstick_packet_v3(struct psmouse *psmouse) x = (s8)(((packet[0] & 0x20) << 2) | (packet[1] & 0x7f)); y = (s8)(((packet[0] & 0x10) << 3) | (packet[2] & 0x7f)); - z = (packet[4] & 0x7c) >> 2; + z = packet[4] & 0x7c; /* * The x and y values tend to be quite large, and when used@@ -595,6 +595,7 @@ static void alps_process_trackstick_packet_v3(struct psmouse *psmouse) input_report_rel(dev, REL_X, x); input_report_rel(dev, REL_Y, -y); + input_report_abs(dev, ABS_PRESSURE, z); /* * Most ALPS models report the trackstick buttons in the touchpad@@ -1118,6 +1119,7 @@ static void alps_process_trackstick_packet_v7(struct psmouse *psmouse) input_report_rel(dev2, REL_X, (char)x); input_report_rel(dev2, REL_Y, -((char)y)); + input_report_abs(dev2, ABS_PRESSURE, z); input_report_key(dev2, BTN_LEFT, left); input_report_key(dev2, BTN_RIGHT, right);-- 2.11.0
-- Pali Rohár pali.rohar@gmail.com
Attachments
- signature.asc [application/pgp-signature] 195 bytes