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 updates from Dmitry Torokhov:
"A bunch of fixes for minor defects reported by Coverity, a few driver
fixups and revert of i8042.nomux change so that we are once again
enable active MUX mode if box claims to support it"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Revert "Input: i8042 - disable active multiplexing by default"
Input: altera_ps2 - use correct type for irq return value
Input: altera_ps2 - write to correct register when disabling interrupts
Input: max77693-haptic - fix potential overflow
Input: psmouse - remove unneeded check in psmouse_reconnect()
Input: vsxxxaa - fix code dropping bytes from queue
Input: ims-pcu - fix dead code in ims_pcu_ofn_reg_addr_store()
Input: opencores-kbd - fix error handling
Input: wm97xx - adapt parameters to tosa touchscreen.
Input: i8042 - quirks for Fujitsu Lifebook A544 and Lifebook AH544
Input: stmpe-keypad - fix valid key line bitmask
Input: soc_button_array - update calls to gpiod_get*()

+302 -29
+1 -1
Documentation/kernel-parameters.txt
··· 1264 1264 i8042.noloop [HW] Disable the AUX Loopback command while probing 1265 1265 for the AUX port 1266 1266 i8042.nomux [HW] Don't check presence of an active multiplexing 1267 - controller. Default: true. 1267 + controller 1268 1268 i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX 1269 1269 controllers 1270 1270 i8042.notimeout [HW] Ignore timeout condition signalled by controller
+1 -1
drivers/input/keyboard/opencores-kbd.c
··· 70 70 71 71 opencores_kbd->addr = devm_ioremap_resource(&pdev->dev, res); 72 72 if (IS_ERR(opencores_kbd->addr)) 73 - error = PTR_ERR(opencores_kbd->addr); 73 + return PTR_ERR(opencores_kbd->addr); 74 74 75 75 input->name = pdev->name; 76 76 input->phys = "opencores-kbd/input0";
+1 -1
drivers/input/keyboard/stmpe-keypad.c
··· 86 86 .max_cols = 8, 87 87 .max_rows = 12, 88 88 .col_gpios = 0x0000ff, /* GPIO 0 - 7*/ 89 - .row_gpios = 0x1fef00, /* GPIO 8-14, 16-20 */ 89 + .row_gpios = 0x1f7f00, /* GPIO 8-14, 16-20 */ 90 90 }, 91 91 [STMPE2403] = { 92 92 .auto_increment = true,
+1 -1
drivers/input/misc/ims-pcu.c
··· 1381 1381 pcu->ofn_reg_addr = value; 1382 1382 mutex_unlock(&pcu->cmd_mutex); 1383 1383 1384 - return error ?: count; 1384 + return count; 1385 1385 } 1386 1386 1387 1387 static DEVICE_ATTR(reg_addr, S_IRUGO | S_IWUSR,
+2 -3
drivers/input/misc/max77693-haptic.c
··· 194 194 struct ff_effect *effect) 195 195 { 196 196 struct max77693_haptic *haptic = input_get_drvdata(dev); 197 - uint64_t period_mag_multi; 197 + u64 period_mag_multi; 198 198 199 199 haptic->magnitude = effect->u.rumble.strong_magnitude; 200 200 if (!haptic->magnitude) ··· 205 205 * The formula to convert magnitude to pwm_duty as follows: 206 206 * - pwm_duty = (magnitude * pwm_period) / MAX_MAGNITUDE(0xFFFF) 207 207 */ 208 - period_mag_multi = (int64_t)(haptic->pwm_dev->period * 209 - haptic->magnitude); 208 + period_mag_multi = (u64)haptic->pwm_dev->period * haptic->magnitude; 210 209 haptic->pwm_duty = (unsigned int)(period_mag_multi >> 211 210 MAX_MAGNITUDE_SHIFT); 212 211
+1 -1
drivers/input/misc/soc_button_array.c
··· 55 55 struct gpio_desc *desc; 56 56 int gpio; 57 57 58 - desc = gpiod_get_index(dev, KBUILD_MODNAME, acpi_index); 58 + desc = gpiod_get_index(dev, KBUILD_MODNAME, acpi_index, GPIOD_ASIS); 59 59 if (IS_ERR(desc)) 60 60 return PTR_ERR(desc); 61 61
-7
drivers/input/mouse/psmouse-base.c
··· 1536 1536 { 1537 1537 struct psmouse *psmouse = serio_get_drvdata(serio); 1538 1538 struct psmouse *parent = NULL; 1539 - struct serio_driver *drv = serio->drv; 1540 1539 unsigned char type; 1541 1540 int rc = -1; 1542 - 1543 - if (!drv || !psmouse) { 1544 - psmouse_dbg(psmouse, 1545 - "reconnect request, but serio is disconnected, ignoring...\n"); 1546 - return -1; 1547 - } 1548 1541 1549 1542 mutex_lock(&psmouse_mutex); 1550 1543
+1 -1
drivers/input/mouse/vsxxxaa.c
··· 128 128 if (num >= mouse->count) { 129 129 mouse->count = 0; 130 130 } else { 131 - memmove(mouse->buf, mouse->buf + num - 1, BUFLEN - num); 131 + memmove(mouse->buf, mouse->buf + num, BUFLEN - num); 132 132 mouse->count -= num; 133 133 } 134 134 }
+2 -2
drivers/input/serio/altera_ps2.c
··· 37 37 { 38 38 struct ps2if *ps2if = dev_id; 39 39 unsigned int status; 40 - int handled = IRQ_NONE; 40 + irqreturn_t handled = IRQ_NONE; 41 41 42 42 while ((status = readl(ps2if->base)) & 0xffff0000) { 43 43 serio_interrupt(ps2if->io, status & 0xff, 0); ··· 74 74 { 75 75 struct ps2if *ps2if = io->port_data; 76 76 77 - writel(0, ps2if->base); /* disable rx irq */ 77 + writel(0, ps2if->base + 4); /* disable rx irq */ 78 78 } 79 79 80 80 /*
+289 -8
drivers/input/serio/i8042-x86ia64io.h
··· 207 207 }; 208 208 209 209 /* 210 - * Some laptops do implement active multiplexing mode correctly; 211 - * unfortunately they are in minority. 210 + * Some Fujitsu notebooks are having trouble with touchpads if 211 + * active multiplexing mode is activated. Luckily they don't have 212 + * external PS/2 ports so we can safely disable it. 213 + * ... apparently some Toshibas don't like MUX mode either and 214 + * die horrible death on reboot. 212 215 */ 213 - static const struct dmi_system_id __initconst i8042_dmi_mux_table[] = { 216 + static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = { 217 + { 218 + /* Fujitsu Lifebook P7010/P7010D */ 219 + .matches = { 220 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 221 + DMI_MATCH(DMI_PRODUCT_NAME, "P7010"), 222 + }, 223 + }, 224 + { 225 + /* Fujitsu Lifebook P7010 */ 226 + .matches = { 227 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 228 + DMI_MATCH(DMI_PRODUCT_NAME, "0000000000"), 229 + }, 230 + }, 231 + { 232 + /* Fujitsu Lifebook P5020D */ 233 + .matches = { 234 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 235 + DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook P Series"), 236 + }, 237 + }, 238 + { 239 + /* Fujitsu Lifebook S2000 */ 240 + .matches = { 241 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 242 + DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S Series"), 243 + }, 244 + }, 245 + { 246 + /* Fujitsu Lifebook S6230 */ 247 + .matches = { 248 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 249 + DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"), 250 + }, 251 + }, 252 + { 253 + /* Fujitsu T70H */ 254 + .matches = { 255 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 256 + DMI_MATCH(DMI_PRODUCT_NAME, "FMVLT70H"), 257 + }, 258 + }, 259 + { 260 + /* Fujitsu-Siemens Lifebook T3010 */ 261 + .matches = { 262 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 263 + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T3010"), 264 + }, 265 + }, 266 + { 267 + /* Fujitsu-Siemens Lifebook E4010 */ 268 + .matches = { 269 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 270 + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E4010"), 271 + }, 272 + }, 273 + { 274 + /* Fujitsu-Siemens Amilo Pro 2010 */ 275 + .matches = { 276 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 277 + DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pro V2010"), 278 + }, 279 + }, 280 + { 281 + /* Fujitsu-Siemens Amilo Pro 2030 */ 282 + .matches = { 283 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 284 + DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"), 285 + }, 286 + }, 214 287 { 215 288 /* 216 - * Panasonic CF-18 needs to be in MUX mode since the 217 - * touchscreen is on serio3 and it also has touchpad. 289 + * No data is coming from the touchscreen unless KBC 290 + * is in legacy mode. 291 + */ 292 + /* Panasonic CF-29 */ 293 + .matches = { 294 + DMI_MATCH(DMI_SYS_VENDOR, "Matsushita"), 295 + DMI_MATCH(DMI_PRODUCT_NAME, "CF-29"), 296 + }, 297 + }, 298 + { 299 + /* 300 + * HP Pavilion DV4017EA - 301 + * errors on MUX ports are reported without raising AUXDATA 302 + * causing "spurious NAK" messages. 218 303 */ 219 304 .matches = { 220 - DMI_MATCH(DMI_PRODUCT_NAME, "CF-18"), 305 + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 306 + DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion dv4000 (EA032EA#ABF)"), 307 + }, 308 + }, 309 + { 310 + /* 311 + * HP Pavilion ZT1000 - 312 + * like DV4017EA does not raise AUXERR for errors on MUX ports. 313 + */ 314 + .matches = { 315 + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 316 + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion Notebook PC"), 317 + DMI_MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook ZT1000"), 318 + }, 319 + }, 320 + { 321 + /* 322 + * HP Pavilion DV4270ca - 323 + * like DV4017EA does not raise AUXERR for errors on MUX ports. 324 + */ 325 + .matches = { 326 + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 327 + DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion dv4000 (EH476UA#ABL)"), 328 + }, 329 + }, 330 + { 331 + .matches = { 332 + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), 333 + DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P10"), 334 + }, 335 + }, 336 + { 337 + .matches = { 338 + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), 339 + DMI_MATCH(DMI_PRODUCT_NAME, "EQUIUM A110"), 340 + }, 341 + }, 342 + { 343 + .matches = { 344 + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), 345 + DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE C850D"), 346 + }, 347 + }, 348 + { 349 + .matches = { 350 + DMI_MATCH(DMI_SYS_VENDOR, "ALIENWARE"), 351 + DMI_MATCH(DMI_PRODUCT_NAME, "Sentia"), 352 + }, 353 + }, 354 + { 355 + /* Sharp Actius MM20 */ 356 + .matches = { 357 + DMI_MATCH(DMI_SYS_VENDOR, "SHARP"), 358 + DMI_MATCH(DMI_PRODUCT_NAME, "PC-MM20 Series"), 359 + }, 360 + }, 361 + { 362 + /* Sony Vaio FS-115b */ 363 + .matches = { 364 + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), 365 + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FS115B"), 366 + }, 367 + }, 368 + { 369 + /* 370 + * Sony Vaio FZ-240E - 371 + * reset and GET ID commands issued via KBD port are 372 + * sometimes being delivered to AUX3. 373 + */ 374 + .matches = { 375 + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), 376 + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FZ240E"), 377 + }, 378 + }, 379 + { 380 + /* 381 + * Most (all?) VAIOs do not have external PS/2 ports nor 382 + * they implement active multiplexing properly, and 383 + * MUX discovery usually messes up keyboard/touchpad. 384 + */ 385 + .matches = { 386 + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), 387 + DMI_MATCH(DMI_BOARD_NAME, "VAIO"), 388 + }, 389 + }, 390 + { 391 + /* Amoi M636/A737 */ 392 + .matches = { 393 + DMI_MATCH(DMI_SYS_VENDOR, "Amoi Electronics CO.,LTD."), 394 + DMI_MATCH(DMI_PRODUCT_NAME, "M636/A737 platform"), 395 + }, 396 + }, 397 + { 398 + /* Lenovo 3000 n100 */ 399 + .matches = { 400 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 401 + DMI_MATCH(DMI_PRODUCT_NAME, "076804U"), 402 + }, 403 + }, 404 + { 405 + .matches = { 406 + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 407 + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 1360"), 408 + }, 409 + }, 410 + { 411 + /* Acer Aspire 5710 */ 412 + .matches = { 413 + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 414 + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5710"), 415 + }, 416 + }, 417 + { 418 + /* Gericom Bellagio */ 419 + .matches = { 420 + DMI_MATCH(DMI_SYS_VENDOR, "Gericom"), 421 + DMI_MATCH(DMI_PRODUCT_NAME, "N34AS6"), 422 + }, 423 + }, 424 + { 425 + /* IBM 2656 */ 426 + .matches = { 427 + DMI_MATCH(DMI_SYS_VENDOR, "IBM"), 428 + DMI_MATCH(DMI_PRODUCT_NAME, "2656"), 429 + }, 430 + }, 431 + { 432 + /* Dell XPS M1530 */ 433 + .matches = { 434 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 435 + DMI_MATCH(DMI_PRODUCT_NAME, "XPS M1530"), 436 + }, 437 + }, 438 + { 439 + /* Compal HEL80I */ 440 + .matches = { 441 + DMI_MATCH(DMI_SYS_VENDOR, "COMPAL"), 442 + DMI_MATCH(DMI_PRODUCT_NAME, "HEL80I"), 443 + }, 444 + }, 445 + { 446 + /* Dell Vostro 1510 */ 447 + .matches = { 448 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 449 + DMI_MATCH(DMI_PRODUCT_NAME, "Vostro1510"), 450 + }, 451 + }, 452 + { 453 + /* Acer Aspire 5536 */ 454 + .matches = { 455 + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 456 + DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5536"), 457 + DMI_MATCH(DMI_PRODUCT_VERSION, "0100"), 458 + }, 459 + }, 460 + { 461 + /* Dell Vostro V13 */ 462 + .matches = { 463 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 464 + DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"), 465 + }, 466 + }, 467 + { 468 + /* Newer HP Pavilion dv4 models */ 469 + .matches = { 470 + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 471 + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4 Notebook PC"), 472 + }, 473 + }, 474 + { 475 + /* Asus X450LCP */ 476 + .matches = { 477 + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), 478 + DMI_MATCH(DMI_PRODUCT_NAME, "X450LCP"), 479 + }, 480 + }, 481 + { 482 + /* Avatar AVIU-145A6 */ 483 + .matches = { 484 + DMI_MATCH(DMI_SYS_VENDOR, "Intel"), 485 + DMI_MATCH(DMI_PRODUCT_NAME, "IC4I"), 221 486 }, 222 487 }, 223 488 { } ··· 626 361 .matches = { 627 362 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), 628 363 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv4 Notebook PC"), 364 + }, 365 + }, 366 + { 367 + /* Fujitsu A544 laptop */ 368 + /* https://bugzilla.redhat.com/show_bug.cgi?id=1111138 */ 369 + .matches = { 370 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 371 + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK A544"), 372 + }, 373 + }, 374 + { 375 + /* Fujitsu AH544 laptop */ 376 + /* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */ 377 + .matches = { 378 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 379 + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"), 629 380 }, 630 381 }, 631 382 { ··· 1021 740 if (dmi_check_system(i8042_dmi_noloop_table)) 1022 741 i8042_noloop = true; 1023 742 1024 - if (dmi_check_system(i8042_dmi_mux_table)) 1025 - i8042_nomux = false; 743 + if (dmi_check_system(i8042_dmi_nomux_table)) 744 + i8042_nomux = true; 1026 745 1027 746 if (dmi_check_system(i8042_dmi_notimeout_table)) 1028 747 i8042_notimeout = true;
+1 -1
drivers/input/serio/i8042.c
··· 39 39 module_param_named(noaux, i8042_noaux, bool, 0); 40 40 MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port."); 41 41 42 - static bool i8042_nomux = true; 42 + static bool i8042_nomux; 43 43 module_param_named(nomux, i8042_nomux, bool, 0); 44 44 MODULE_PARM_DESC(nomux, "Do not check whether an active multiplexing controller is present."); 45 45
+2 -2
drivers/input/touchscreen/wm97xx-core.c
··· 70 70 * Documentation/input/input-programming.txt for more details. 71 71 */ 72 72 73 - static int abs_x[3] = {350, 3900, 5}; 73 + static int abs_x[3] = {150, 4000, 5}; 74 74 module_param_array(abs_x, int, NULL, 0); 75 75 MODULE_PARM_DESC(abs_x, "Touchscreen absolute X min, max, fuzz"); 76 76 77 - static int abs_y[3] = {320, 3750, 40}; 77 + static int abs_y[3] = {200, 4000, 40}; 78 78 module_param_array(abs_y, int, NULL, 0); 79 79 MODULE_PARM_DESC(abs_y, "Touchscreen absolute Y min, max, fuzz"); 80 80