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.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input fixes from Dmitry Torokhov:

- a fix for the fix to deal with newer laptops which get confused by
the "GET ID" command when probing for PS/2 keyboards

- a couple of tweaks to i8042 to handle Clevo NS70PU and Lifebook U728
laptops

- a change to bcm5974 to validate that the device has appropriate
endpoints

- an addition of new product ID to xpad driver to recognize Lenovo
Legion Go controllers

- a quirk to Goodix controller to deal with extra GPIO described in
ACPI tables on some devices.

* tag 'input-for-v6.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: i8042 - add Fujitsu Lifebook U728 to i8042 quirk table
Input: i8042 - fix strange behavior of touchpad on Clevo NS70PU
Input: atkbd - do not skip atkbd_deactivate() when skipping ATKBD_CMD_GETID
Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID
Input: bcm5974 - check endpoint type before starting traffic
Input: xpad - add Lenovo Legion Go controllers
Input: goodix - accept ACPI resources with gpio_count == 3 && gpio_int_idx == 0

+47 -6
+2
drivers/input/joystick/xpad.c
··· 294 294 { 0x1689, 0xfd00, "Razer Onza Tournament Edition", 0, XTYPE_XBOX360 }, 295 295 { 0x1689, 0xfd01, "Razer Onza Classic Edition", 0, XTYPE_XBOX360 }, 296 296 { 0x1689, 0xfe00, "Razer Sabertooth", 0, XTYPE_XBOX360 }, 297 + { 0x17ef, 0x6182, "Lenovo Legion Controller for Windows", 0, XTYPE_XBOX360 }, 297 298 { 0x1949, 0x041a, "Amazon Game Controller", 0, XTYPE_XBOX360 }, 298 299 { 0x1bad, 0x0002, "Harmonix Rock Band Guitar", 0, XTYPE_XBOX360 }, 299 300 { 0x1bad, 0x0003, "Harmonix Rock Band Drumkit", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360 }, ··· 492 491 XPAD_XBOX360_VENDOR(0x15e4), /* Numark Xbox 360 controllers */ 493 492 XPAD_XBOX360_VENDOR(0x162e), /* Joytech Xbox 360 controllers */ 494 493 XPAD_XBOX360_VENDOR(0x1689), /* Razer Onza */ 494 + XPAD_XBOX360_VENDOR(0x17ef), /* Lenovo */ 495 495 XPAD_XBOX360_VENDOR(0x1949), /* Amazon controllers */ 496 496 XPAD_XBOX360_VENDOR(0x1bad), /* Harmonix Rock Band guitar and drums */ 497 497 XPAD_XBOX360_VENDOR(0x20d6), /* PowerA controllers */
+9 -5
drivers/input/keyboard/atkbd.c
··· 811 811 { 812 812 struct ps2dev *ps2dev = &atkbd->ps2dev; 813 813 unsigned char param[2]; 814 - bool skip_getid; 815 814 816 815 /* 817 816 * Some systems, where the bit-twiddling when testing the io-lines of the ··· 824 825 "keyboard reset failed on %s\n", 825 826 ps2dev->serio->phys); 826 827 828 + if (atkbd_skip_getid(atkbd)) { 829 + atkbd->id = 0xab83; 830 + goto deactivate_kbd; 831 + } 832 + 827 833 /* 828 834 * Then we check the keyboard ID. We should get 0xab83 under normal conditions. 829 835 * Some keyboards report different values, but the first byte is always 0xab or ··· 837 833 */ 838 834 839 835 param[0] = param[1] = 0xa5; /* initialize with invalid values */ 840 - skip_getid = atkbd_skip_getid(atkbd); 841 - if (skip_getid || ps2_command(ps2dev, param, ATKBD_CMD_GETID)) { 836 + if (ps2_command(ps2dev, param, ATKBD_CMD_GETID)) { 842 837 843 838 /* 844 - * If the get ID command was skipped or failed, we check if we can at least set 839 + * If the get ID command failed, we check if we can at least set 845 840 * the LEDs on the keyboard. This should work on every keyboard out there. 846 841 * It also turns the LEDs off, which we want anyway. 847 842 */ 848 843 param[0] = 0; 849 844 if (ps2_command(ps2dev, param, ATKBD_CMD_SETLEDS)) 850 845 return -1; 851 - atkbd->id = skip_getid ? 0xab83 : 0xabba; 846 + atkbd->id = 0xabba; 852 847 return 0; 853 848 } 854 849 ··· 863 860 return -1; 864 861 } 865 862 863 + deactivate_kbd: 866 864 /* 867 865 * Make sure nothing is coming from the keyboard and disturbs our 868 866 * internal state.
+20
drivers/input/mouse/bcm5974.c
··· 19 19 * Copyright (C) 2006 Nicolas Boichat (nicolas@boichat.ch) 20 20 */ 21 21 22 + #include "linux/usb.h" 22 23 #include <linux/kernel.h> 23 24 #include <linux/errno.h> 24 25 #include <linux/slab.h> ··· 194 193 195 194 /* list of device capability bits */ 196 195 #define HAS_INTEGRATED_BUTTON 1 196 + /* maximum number of supported endpoints (currently trackpad and button) */ 197 + #define MAX_ENDPOINTS 2 197 198 198 199 /* trackpad finger data block size */ 199 200 #define FSIZE_TYPE1 (14 * sizeof(__le16)) ··· 894 891 return error; 895 892 } 896 893 894 + static bool bcm5974_check_endpoints(struct usb_interface *iface, 895 + const struct bcm5974_config *cfg) 896 + { 897 + u8 ep_addr[MAX_ENDPOINTS + 1] = {0}; 898 + 899 + ep_addr[0] = cfg->tp_ep; 900 + if (cfg->tp_type == TYPE1) 901 + ep_addr[1] = cfg->bt_ep; 902 + 903 + return usb_check_int_endpoints(iface, ep_addr); 904 + } 905 + 897 906 static int bcm5974_probe(struct usb_interface *iface, 898 907 const struct usb_device_id *id) 899 908 { ··· 917 902 918 903 /* find the product index */ 919 904 cfg = bcm5974_get_config(udev); 905 + 906 + if (!bcm5974_check_endpoints(iface, cfg)) { 907 + dev_err(&iface->dev, "Unexpected non-int endpoint\n"); 908 + return -ENODEV; 909 + } 920 910 921 911 /* allocate memory for our device state and initialize it */ 922 912 dev = kzalloc(sizeof(struct bcm5974), GFP_KERNEL);
+14
drivers/input/serio/i8042-acpipnpio.h
··· 635 635 .driver_data = (void *)(SERIO_QUIRK_NOAUX) 636 636 }, 637 637 { 638 + /* Fujitsu Lifebook U728 */ 639 + .matches = { 640 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 641 + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U728"), 642 + }, 643 + .driver_data = (void *)(SERIO_QUIRK_NOAUX) 644 + }, 645 + { 638 646 /* Gigabyte M912 */ 639 647 .matches = { 640 648 DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), ··· 1215 1207 .driver_data = (void *)(SERIO_QUIRK_NOAUX | SERIO_QUIRK_NOMUX | 1216 1208 SERIO_QUIRK_RESET_ALWAYS | SERIO_QUIRK_NOLOOP | 1217 1209 SERIO_QUIRK_NOPNP) 1210 + }, 1211 + { 1212 + .matches = { 1213 + DMI_MATCH(DMI_BOARD_NAME, "NS5x_7xPU"), 1214 + }, 1215 + .driver_data = (void *)(SERIO_QUIRK_NOAUX) 1218 1216 }, 1219 1217 { 1220 1218 .matches = {
+2 -1
drivers/input/touchscreen/goodix.c
··· 884 884 } 885 885 } 886 886 887 - if (ts->gpio_count == 2 && ts->gpio_int_idx == 0) { 887 + /* Some devices with gpio_int_idx 0 list a third unused GPIO */ 888 + if ((ts->gpio_count == 2 || ts->gpio_count == 3) && ts->gpio_int_idx == 0) { 888 889 ts->irq_pin_access_method = IRQ_PIN_ACCESS_ACPI_GPIO; 889 890 gpio_mapping = acpi_goodix_int_first_gpios; 890 891 } else if (ts->gpio_count == 2 && ts->gpio_int_idx == 1) {