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 tag 'input-for-v6.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input updates from Dmitry Torokhov:

- a quirk to AT keyboard driver to skip issuing "GET ID" command when
8042 is in translated mode and the device is a laptop/portable,
because the "GET ID" command makes a bunch of recent laptops unhappy

- a quirk to i8042 to disable multiplexed mode on Acer P459-G2-M which
causes issues on resume

- psmouse will activate native RMI4 protocol support for touchpad on
ThinkPad L14 G1

- addition of Razer Wolverine V2 ID to xpad gamepad driver

- mapping for airplane mode button in soc_button_array driver for
TUXEDO laptops

- improved error handling in ipaq-micro-keys driver

- amimouse being prepared for platform remove callback returning void

* tag 'input-for-v6.7-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: soc_button_array - add mapping for airplane mode button
Input: xpad - add Razer Wolverine V2 support
Input: ipaq-micro-keys - add error handling for devm_kmemdup
Input: amimouse - convert to platform remove callback returning void
Input: i8042 - add nomux quirk for Acer P459-G2-M
Input: atkbd - skip ATKBD_CMD_GETID in translated mode
Input: psmouse - enable Synaptics InterTouch for ThinkPad L14 G1

+62 -7
+1
drivers/input/joystick/xpad.c
··· 286 286 { 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, 287 287 { 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, 288 288 { 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE }, 289 + { 0x1532, 0x0a29, "Razer Wolverine V2", 0, XTYPE_XBOXONE }, 289 290 { 0x15e4, 0x3f00, "Power A Mini Pro Elite", 0, XTYPE_XBOX360 }, 290 291 { 0x15e4, 0x3f0a, "Xbox Airflo wired controller", 0, XTYPE_XBOX360 }, 291 292 { 0x15e4, 0x3f10, "Batarang Xbox 360 controller", 0, XTYPE_XBOX360 },
+42 -4
drivers/input/keyboard/atkbd.c
··· 765 765 ps2dev->serio->phys); 766 766 } 767 767 768 + #ifdef CONFIG_X86 769 + static bool atkbd_is_portable_device(void) 770 + { 771 + static const char * const chassis_types[] = { 772 + "8", /* Portable */ 773 + "9", /* Laptop */ 774 + "10", /* Notebook */ 775 + "14", /* Sub-Notebook */ 776 + "31", /* Convertible */ 777 + "32", /* Detachable */ 778 + }; 779 + int i; 780 + 781 + for (i = 0; i < ARRAY_SIZE(chassis_types); i++) 782 + if (dmi_match(DMI_CHASSIS_TYPE, chassis_types[i])) 783 + return true; 784 + 785 + return false; 786 + } 787 + 788 + /* 789 + * On many modern laptops ATKBD_CMD_GETID may cause problems, on these laptops 790 + * the controller is always in translated mode. In this mode mice/touchpads will 791 + * not work. So in this case simply assume a keyboard is connected to avoid 792 + * confusing some laptop keyboards. 793 + * 794 + * Skipping ATKBD_CMD_GETID ends up using a fake keyboard id. Using a fake id is 795 + * ok in translated mode, only atkbd_select_set() checks atkbd->id and in 796 + * translated mode that is a no-op. 797 + */ 798 + static bool atkbd_skip_getid(struct atkbd *atkbd) 799 + { 800 + return atkbd->translated && atkbd_is_portable_device(); 801 + } 802 + #else 803 + static inline bool atkbd_skip_getid(struct atkbd *atkbd) { return false; } 804 + #endif 805 + 768 806 /* 769 807 * atkbd_probe() probes for an AT keyboard on a serio port. 770 808 */ ··· 832 794 */ 833 795 834 796 param[0] = param[1] = 0xa5; /* initialize with invalid values */ 835 - if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) { 797 + if (atkbd_skip_getid(atkbd) || ps2_command(ps2dev, param, ATKBD_CMD_GETID)) { 836 798 837 799 /* 838 - * If the get ID command failed, we check if we can at least set the LEDs on 839 - * the keyboard. This should work on every keyboard out there. It also turns 840 - * the LEDs off, which we want anyway. 800 + * If the get ID command was skipped or failed, we check if we can at least set 801 + * the LEDs on the keyboard. This should work on every keyboard out there. 802 + * It also turns the LEDs off, which we want anyway. 841 803 */ 842 804 param[0] = 0; 843 805 if (ps2_command(ps2dev, param, ATKBD_CMD_SETLEDS))
+3
drivers/input/keyboard/ipaq-micro-keys.c
··· 105 105 keys->codes = devm_kmemdup(&pdev->dev, micro_keycodes, 106 106 keys->input->keycodesize * keys->input->keycodemax, 107 107 GFP_KERNEL); 108 + if (!keys->codes) 109 + return -ENOMEM; 110 + 108 111 keys->input->keycode = keys->codes; 109 112 110 113 __set_bit(EV_KEY, keys->input->evbit);
+5
drivers/input/misc/soc_button_array.c
··· 299 299 info->name = "power"; 300 300 info->event_code = KEY_POWER; 301 301 info->wakeup = true; 302 + } else if (upage == 0x01 && usage == 0xc6) { 303 + info->name = "airplane mode switch"; 304 + info->event_type = EV_SW; 305 + info->event_code = SW_RFKILL_ALL; 306 + info->active_low = false; 302 307 } else if (upage == 0x01 && usage == 0xca) { 303 308 info->name = "rotation lock switch"; 304 309 info->event_type = EV_SW;
+2 -3
drivers/input/mouse/amimouse.c
··· 125 125 return 0; 126 126 } 127 127 128 - static int __exit amimouse_remove(struct platform_device *pdev) 128 + static void __exit amimouse_remove(struct platform_device *pdev) 129 129 { 130 130 struct input_dev *dev = platform_get_drvdata(pdev); 131 131 132 132 input_unregister_device(dev); 133 - return 0; 134 133 } 135 134 136 135 static struct platform_driver amimouse_driver = { 137 - .remove = __exit_p(amimouse_remove), 136 + .remove_new = __exit_p(amimouse_remove), 138 137 .driver = { 139 138 .name = "amiga-mouse", 140 139 },
+1
drivers/input/mouse/synaptics.c
··· 183 183 "LEN009b", /* T580 */ 184 184 "LEN0402", /* X1 Extreme Gen 2 / P1 Gen 2 */ 185 185 "LEN040f", /* P1 Gen 3 */ 186 + "LEN0411", /* L14 Gen 1 */ 186 187 "LEN200f", /* T450s */ 187 188 "LEN2044", /* L470 */ 188 189 "LEN2054", /* E480 */
+8
drivers/input/serio/i8042-acpipnpio.h
··· 361 361 .driver_data = (void *)(SERIO_QUIRK_DRITEK) 362 362 }, 363 363 { 364 + /* Acer TravelMate P459-G2-M */ 365 + .matches = { 366 + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 367 + DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate P459-G2-M"), 368 + }, 369 + .driver_data = (void *)(SERIO_QUIRK_NOMUX) 370 + }, 371 + { 364 372 /* Amoi M636/A737 */ 365 373 .matches = { 366 374 DMI_MATCH(DMI_SYS_VENDOR, "Amoi Electronics CO.,LTD."),