|
@@ -406,26 +406,10 @@ static int synaptics_parse_hw_state(const unsigned char buf[],
|
|
|
memset(hw, 0, sizeof(struct synaptics_hw_state));
|
|
|
|
|
|
if (SYN_MODEL_NEWABS(priv->model_id)) {
|
|
|
- hw->x = (((buf[3] & 0x10) << 8) |
|
|
|
- ((buf[1] & 0x0f) << 8) |
|
|
|
- buf[4]);
|
|
|
- hw->y = (((buf[3] & 0x20) << 7) |
|
|
|
- ((buf[1] & 0xf0) << 4) |
|
|
|
- buf[5]);
|
|
|
-
|
|
|
- hw->z = buf[2];
|
|
|
hw->w = (((buf[0] & 0x30) >> 2) |
|
|
|
((buf[0] & 0x04) >> 1) |
|
|
|
((buf[3] & 0x04) >> 2));
|
|
|
|
|
|
- if (SYN_CAP_ADV_GESTURE(priv->ext_cap_0c) && hw->w == 2) {
|
|
|
- /* Gesture packet: (x, y, z) at half resolution */
|
|
|
- priv->mt.x = (((buf[4] & 0x0f) << 8) | buf[1]) << 1;
|
|
|
- priv->mt.y = (((buf[4] & 0xf0) << 4) | buf[2]) << 1;
|
|
|
- priv->mt.z = ((buf[3] & 0x30) | (buf[5] & 0x0f)) << 1;
|
|
|
- return 1;
|
|
|
- }
|
|
|
-
|
|
|
hw->left = (buf[0] & 0x01) ? 1 : 0;
|
|
|
hw->right = (buf[0] & 0x02) ? 1 : 0;
|
|
|
|
|
@@ -448,6 +432,22 @@ static int synaptics_parse_hw_state(const unsigned char buf[],
|
|
|
hw->down = ((buf[0] ^ buf[3]) & 0x02) ? 1 : 0;
|
|
|
}
|
|
|
|
|
|
+ if (SYN_CAP_ADV_GESTURE(priv->ext_cap_0c) && hw->w == 2) {
|
|
|
+ /* Gesture packet: (x, y, z) at half resolution */
|
|
|
+ priv->mt.x = (((buf[4] & 0x0f) << 8) | buf[1]) << 1;
|
|
|
+ priv->mt.y = (((buf[4] & 0xf0) << 4) | buf[2]) << 1;
|
|
|
+ priv->mt.z = ((buf[3] & 0x30) | (buf[5] & 0x0f)) << 1;
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ hw->x = (((buf[3] & 0x10) << 8) |
|
|
|
+ ((buf[1] & 0x0f) << 8) |
|
|
|
+ buf[4]);
|
|
|
+ hw->y = (((buf[3] & 0x20) << 7) |
|
|
|
+ ((buf[1] & 0xf0) << 4) |
|
|
|
+ buf[5]);
|
|
|
+ hw->z = buf[2];
|
|
|
+
|
|
|
if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) &&
|
|
|
((buf[0] ^ buf[3]) & 0x02)) {
|
|
|
switch (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) & ~0x01) {
|