Commit 4621c966 authored by Pali Rohár's avatar Pali Rohár Committed by Dmitry Torokhov

Input: alps - report pressure of v3 and v7 trackstick

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: default avatarPali Rohár <pali.rohar@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 68ef4836
...@@ -139,11 +139,11 @@ static const struct alps_model_info alps_model_data[] = { ...@@ -139,11 +139,11 @@ static const struct alps_model_info alps_model_data[] = {
}; };
static const struct alps_protocol_info alps_v3_protocol_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_PRESSURE
}; };
static const struct alps_protocol_info alps_v3_rushmore_data = { 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 = { static const struct alps_protocol_info alps_v4_protocol_data = {
...@@ -155,7 +155,7 @@ static const struct alps_protocol_info alps_v5_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 = { 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 = { static const struct alps_protocol_info alps_v8_protocol_data = {
...@@ -583,7 +583,7 @@ static void alps_process_trackstick_packet_v3(struct psmouse *psmouse) ...@@ -583,7 +583,7 @@ static void alps_process_trackstick_packet_v3(struct psmouse *psmouse)
x = (s8)(((packet[0] & 0x20) << 2) | (packet[1] & 0x7f)); x = (s8)(((packet[0] & 0x20) << 2) | (packet[1] & 0x7f));
y = (s8)(((packet[0] & 0x10) << 3) | (packet[2] & 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 * 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) ...@@ -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_X, x);
input_report_rel(dev, REL_Y, -y); input_report_rel(dev, REL_Y, -y);
input_report_abs(dev, ABS_PRESSURE, z);
/* /*
* Most ALPS models report the trackstick buttons in the touchpad * Most ALPS models report the trackstick buttons in the touchpad
...@@ -1107,6 +1108,7 @@ static void alps_process_trackstick_packet_v7(struct psmouse *psmouse) ...@@ -1107,6 +1108,7 @@ static void alps_process_trackstick_packet_v7(struct psmouse *psmouse)
input_report_rel(dev2, REL_X, (char)x); input_report_rel(dev2, REL_X, (char)x);
input_report_rel(dev2, REL_Y, -((char)y)); input_report_rel(dev2, REL_Y, -((char)y));
input_report_abs(dev2, ABS_PRESSURE, z);
psmouse_report_standard_buttons(dev2, packet[1]); psmouse_report_standard_buttons(dev2, packet[1]);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment