@@ -99,7 +99,6 @@ static const struct alps_nibble_commands alps_v6_nibble_commands[] = {
99
99
#define ALPS_FOUR_BUTTONS 0x40 /* 4 direction button present */
100
100
#define ALPS_PS2_INTERLEAVED 0x80 /* 3-byte PS/2 packet interleaved with
101
101
6-byte ALPS packet */
102
- #define ALPS_IS_RUSHMORE 0x100 /* device is a rushmore */
103
102
#define ALPS_BUTTONPAD 0x200 /* device is a clickpad */
104
103
105
104
static const struct alps_model_info alps_model_data [] = {
@@ -412,7 +411,7 @@ static int alps_process_bitmap(struct alps_data *priv,
412
411
(2 * (priv -> y_bits - 1 ));
413
412
414
413
/* y-bitmap order is reversed, except on rushmore */
415
- if (!( priv -> flags & ALPS_IS_RUSHMORE ) ) {
414
+ if (priv -> proto_version != ALPS_PROTO_V3_RUSHMORE ) {
416
415
fields -> mt [0 ].y = priv -> y_max - fields -> mt [0 ].y ;
417
416
fields -> mt [1 ].y = priv -> y_max - fields -> mt [1 ].y ;
418
417
}
@@ -648,7 +647,8 @@ static void alps_process_touchpad_packet_v3_v5(struct psmouse *psmouse)
648
647
*/
649
648
if (f -> is_mp ) {
650
649
fingers = f -> fingers ;
651
- if (priv -> proto_version == ALPS_PROTO_V3 ) {
650
+ if (priv -> proto_version == ALPS_PROTO_V3 ||
651
+ priv -> proto_version == ALPS_PROTO_V3_RUSHMORE ) {
652
652
if (alps_process_bitmap (priv , f ) == 0 )
653
653
fingers = 0 ; /* Use st data */
654
654
@@ -1275,7 +1275,7 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
1275
1275
psmouse -> pktcnt - 1 ,
1276
1276
psmouse -> packet [psmouse -> pktcnt - 1 ]);
1277
1277
1278
- if (priv -> proto_version == ALPS_PROTO_V3 &&
1278
+ if (priv -> proto_version == ALPS_PROTO_V3_RUSHMORE &&
1279
1279
psmouse -> pktcnt == psmouse -> pktsize ) {
1280
1280
/*
1281
1281
* Some Dell boxes, such as Latitude E6440 or E7440
@@ -2182,6 +2182,7 @@ static void alps_set_defaults(struct alps_data *priv)
2182
2182
priv -> x_max = 1023 ;
2183
2183
priv -> y_max = 767 ;
2184
2184
break ;
2185
+
2185
2186
case ALPS_PROTO_V3 :
2186
2187
priv -> hw_init = alps_hw_init_v3 ;
2187
2188
priv -> process_packet = alps_process_packet_v3 ;
@@ -2190,6 +2191,18 @@ static void alps_set_defaults(struct alps_data *priv)
2190
2191
priv -> nibble_commands = alps_v3_nibble_commands ;
2191
2192
priv -> addr_command = PSMOUSE_CMD_RESET_WRAP ;
2192
2193
break ;
2194
+
2195
+ case ALPS_PROTO_V3_RUSHMORE :
2196
+ priv -> hw_init = alps_hw_init_rushmore_v3 ;
2197
+ priv -> process_packet = alps_process_packet_v3 ;
2198
+ priv -> set_abs_params = alps_set_abs_params_mt ;
2199
+ priv -> decode_fields = alps_decode_rushmore ;
2200
+ priv -> nibble_commands = alps_v3_nibble_commands ;
2201
+ priv -> addr_command = PSMOUSE_CMD_RESET_WRAP ;
2202
+ priv -> x_bits = 16 ;
2203
+ priv -> y_bits = 12 ;
2204
+ break ;
2205
+
2193
2206
case ALPS_PROTO_V4 :
2194
2207
priv -> hw_init = alps_hw_init_v4 ;
2195
2208
priv -> process_packet = alps_process_packet_v4 ;
@@ -2313,15 +2326,9 @@ static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
2313
2326
2314
2327
return 0 ;
2315
2328
} else if (ec [0 ] == 0x88 && ec [1 ] == 0x08 ) {
2316
- priv -> proto_version = ALPS_PROTO_V3 ;
2329
+ priv -> proto_version = ALPS_PROTO_V3_RUSHMORE ;
2317
2330
alps_set_defaults (priv );
2318
2331
2319
- priv -> hw_init = alps_hw_init_rushmore_v3 ;
2320
- priv -> decode_fields = alps_decode_rushmore ;
2321
- priv -> x_bits = 16 ;
2322
- priv -> y_bits = 12 ;
2323
- priv -> flags |= ALPS_IS_RUSHMORE ;
2324
-
2325
2332
/* hack to make addr_command, nibble_command available */
2326
2333
psmouse -> private = priv ;
2327
2334
0 commit comments