Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input fixes from Dmitry Torokhov:

- a tweak to the IBM Trackpoint driver that helps recognizing
trackpoints on never Lenovo Carbons

- a fix to the ALPS driver solving scroll issues on some Dells

- yet another ACPI ID has been added to Elan I2C toucpad driver

- quieted diagnostic message in soc_button_array driver

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: ALPS - fix two-finger scroll breakage in right side on ALPS touchpad
Input: soc_button_array - silence -ENOENT error on Dell XPS13 9365
Input: trackpoint - add new trackpoint firmware ID
Input: elan_i2c - add ELAN0602 ACPI ID to support Lenovo Yoga310

+45 -13
+1 -1
drivers/input/misc/soc_button_array.c
··· 331 331 error = gpiod_count(dev, NULL); 332 332 if (error < 0) { 333 333 dev_dbg(dev, "no GPIO attached, ignoring...\n"); 334 - return error; 334 + return -ENODEV; 335 335 } 336 336 337 337 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+31 -10
drivers/input/mouse/alps.c
··· 1215 1215 1216 1216 case SS4_PACKET_ID_TWO: 1217 1217 if (priv->flags & ALPS_BUTTONPAD) { 1218 - f->mt[0].x = SS4_BTL_MF_X_V2(p, 0); 1218 + if (IS_SS4PLUS_DEV(priv->dev_id)) { 1219 + f->mt[0].x = SS4_PLUS_BTL_MF_X_V2(p, 0); 1220 + f->mt[1].x = SS4_PLUS_BTL_MF_X_V2(p, 1); 1221 + } else { 1222 + f->mt[0].x = SS4_BTL_MF_X_V2(p, 0); 1223 + f->mt[1].x = SS4_BTL_MF_X_V2(p, 1); 1224 + } 1219 1225 f->mt[0].y = SS4_BTL_MF_Y_V2(p, 0); 1220 - f->mt[1].x = SS4_BTL_MF_X_V2(p, 1); 1221 1226 f->mt[1].y = SS4_BTL_MF_Y_V2(p, 1); 1222 1227 } else { 1223 - f->mt[0].x = SS4_STD_MF_X_V2(p, 0); 1228 + if (IS_SS4PLUS_DEV(priv->dev_id)) { 1229 + f->mt[0].x = SS4_PLUS_STD_MF_X_V2(p, 0); 1230 + f->mt[1].x = SS4_PLUS_STD_MF_X_V2(p, 1); 1231 + } else { 1232 + f->mt[0].x = SS4_STD_MF_X_V2(p, 0); 1233 + f->mt[1].x = SS4_STD_MF_X_V2(p, 1); 1234 + } 1224 1235 f->mt[0].y = SS4_STD_MF_Y_V2(p, 0); 1225 - f->mt[1].x = SS4_STD_MF_X_V2(p, 1); 1226 1236 f->mt[1].y = SS4_STD_MF_Y_V2(p, 1); 1227 1237 } 1228 1238 f->pressure = SS4_MF_Z_V2(p, 0) ? 0x30 : 0; ··· 1249 1239 1250 1240 case SS4_PACKET_ID_MULTI: 1251 1241 if (priv->flags & ALPS_BUTTONPAD) { 1252 - f->mt[2].x = SS4_BTL_MF_X_V2(p, 0); 1242 + if (IS_SS4PLUS_DEV(priv->dev_id)) { 1243 + f->mt[0].x = SS4_PLUS_BTL_MF_X_V2(p, 0); 1244 + f->mt[1].x = SS4_PLUS_BTL_MF_X_V2(p, 1); 1245 + } else { 1246 + f->mt[2].x = SS4_BTL_MF_X_V2(p, 0); 1247 + f->mt[3].x = SS4_BTL_MF_X_V2(p, 1); 1248 + } 1249 + 1253 1250 f->mt[2].y = SS4_BTL_MF_Y_V2(p, 0); 1254 - f->mt[3].x = SS4_BTL_MF_X_V2(p, 1); 1255 1251 f->mt[3].y = SS4_BTL_MF_Y_V2(p, 1); 1256 1252 no_data_x = SS4_MFPACKET_NO_AX_BL; 1257 1253 no_data_y = SS4_MFPACKET_NO_AY_BL; 1258 1254 } else { 1259 - f->mt[2].x = SS4_STD_MF_X_V2(p, 0); 1255 + if (IS_SS4PLUS_DEV(priv->dev_id)) { 1256 + f->mt[0].x = SS4_PLUS_STD_MF_X_V2(p, 0); 1257 + f->mt[1].x = SS4_PLUS_STD_MF_X_V2(p, 1); 1258 + } else { 1259 + f->mt[0].x = SS4_STD_MF_X_V2(p, 0); 1260 + f->mt[1].x = SS4_STD_MF_X_V2(p, 1); 1261 + } 1260 1262 f->mt[2].y = SS4_STD_MF_Y_V2(p, 0); 1261 - f->mt[3].x = SS4_STD_MF_X_V2(p, 1); 1262 1263 f->mt[3].y = SS4_STD_MF_Y_V2(p, 1); 1263 1264 no_data_x = SS4_MFPACKET_NO_AX; 1264 1265 no_data_y = SS4_MFPACKET_NO_AY; ··· 2562 2541 2563 2542 memset(otp, 0, sizeof(otp)); 2564 2543 2565 - if (alps_get_otp_values_ss4_v2(psmouse, 0, &otp[0][0]) || 2566 - alps_get_otp_values_ss4_v2(psmouse, 1, &otp[1][0])) 2544 + if (alps_get_otp_values_ss4_v2(psmouse, 1, &otp[1][0]) || 2545 + alps_get_otp_values_ss4_v2(psmouse, 0, &otp[0][0])) 2567 2546 return -1; 2568 2547 2569 2548 alps_update_device_area_ss4_v2(otp, priv);
+8
drivers/input/mouse/alps.h
··· 100 100 ((_b[1 + _i * 3] << 5) & 0x1F00) \ 101 101 ) 102 102 103 + #define SS4_PLUS_STD_MF_X_V2(_b, _i) (((_b[0 + (_i) * 3] << 4) & 0x0070) | \ 104 + ((_b[1 + (_i) * 3] << 4) & 0x0F80) \ 105 + ) 106 + 103 107 #define SS4_STD_MF_Y_V2(_b, _i) (((_b[1 + (_i) * 3] << 3) & 0x0010) | \ 104 108 ((_b[2 + (_i) * 3] << 5) & 0x01E0) | \ 105 109 ((_b[2 + (_i) * 3] << 4) & 0x0E00) \ ··· 111 107 112 108 #define SS4_BTL_MF_X_V2(_b, _i) (SS4_STD_MF_X_V2(_b, _i) | \ 113 109 ((_b[0 + (_i) * 3] >> 3) & 0x0010) \ 110 + ) 111 + 112 + #define SS4_PLUS_BTL_MF_X_V2(_b, _i) (SS4_PLUS_STD_MF_X_V2(_b, _i) | \ 113 + ((_b[0 + (_i) * 3] >> 4) & 0x0008) \ 114 114 ) 115 115 116 116 #define SS4_BTL_MF_Y_V2(_b, _i) (SS4_STD_MF_Y_V2(_b, _i) | \
+1
drivers/input/mouse/elan_i2c_core.c
··· 1247 1247 { "ELAN0000", 0 }, 1248 1248 { "ELAN0100", 0 }, 1249 1249 { "ELAN0600", 0 }, 1250 + { "ELAN0602", 0 }, 1250 1251 { "ELAN0605", 0 }, 1251 1252 { "ELAN0608", 0 }, 1252 1253 { "ELAN0605", 0 },
+2 -1
drivers/input/mouse/trackpoint.c
··· 265 265 if (ps2_command(&psmouse->ps2dev, param, MAKE_PS2_CMD(0, 2, TP_READ_ID))) 266 266 return -1; 267 267 268 - if (param[0] != TP_MAGIC_IDENT) 268 + /* add new TP ID. */ 269 + if (!(param[0] & TP_MAGIC_IDENT)) 269 270 return -1; 270 271 271 272 if (firmware_id)
+2 -1
drivers/input/mouse/trackpoint.h
··· 21 21 #define TP_COMMAND 0xE2 /* Commands start with this */ 22 22 23 23 #define TP_READ_ID 0xE1 /* Sent for device identification */ 24 - #define TP_MAGIC_IDENT 0x01 /* Sent after a TP_READ_ID followed */ 24 + #define TP_MAGIC_IDENT 0x03 /* Sent after a TP_READ_ID followed */ 25 25 /* by the firmware ID */ 26 + /* Firmware ID includes 0x1, 0x2, 0x3 */ 26 27 27 28 28 29 /*