Merge tag 'input-for-v6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

Pull input fixes from Dmitry Torokhov:

- fixes to ALPS and Focaltech PS/2 drivers dealing with the breakage of
switching to -funsigned-char

- quirks to i8042 to better handle Lifebook A574/H and TUXEDO devices

- a quirk to Goodix touchscreen driver to handle Yoga Book X90F

- a fix for incorrectly merged patch to xpad game controller driver

* tag 'input-for-v6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: i8042 - add TUXEDO devices to i8042 quirk tables for partial fix
Input: alps - fix compatibility with -funsigned-char
Input: focaltech - use explicitly signed char type
Input: xpad - fix incorrectly applied patch for MAP_PROFILE_BUTTON
Input: goodix - add Lenovo Yoga Book X90F to nine_bytes_report DMI table
Input: i8042 - add quirk for Fujitsu Lifebook A574/H

Changed files
+63 -18
drivers
input
joystick
mouse
serio
touchscreen
+4 -3
drivers/input/joystick/xpad.c
··· 781 781 input_report_key(dev, BTN_C, data[8]); 782 782 input_report_key(dev, BTN_Z, data[9]); 783 783 784 - /* Profile button has a value of 0-3, so it is reported as an axis */ 785 - if (xpad->mapping & MAP_PROFILE_BUTTON) 786 - input_report_abs(dev, ABS_PROFILE, data[34]); 787 784 788 785 input_sync(dev); 789 786 } ··· 1057 1060 input_report_abs(dev, ABS_RZ, 1058 1061 (__u16) le16_to_cpup((__le16 *)(data + 8))); 1059 1062 } 1063 + 1064 + /* Profile button has a value of 0-3, so it is reported as an axis */ 1065 + if (xpad->mapping & MAP_PROFILE_BUTTON) 1066 + input_report_abs(dev, ABS_PROFILE, data[34]); 1060 1067 1061 1068 /* paddle handling */ 1062 1069 /* based on SDL's SDL_hidapi_xboxone.c */
+8 -8
drivers/input/mouse/alps.c
··· 852 852 x = y = z = 0; 853 853 854 854 /* Divide 4 since trackpoint's speed is too fast */ 855 - input_report_rel(dev2, REL_X, (char)x / 4); 856 - input_report_rel(dev2, REL_Y, -((char)y / 4)); 855 + input_report_rel(dev2, REL_X, (s8)x / 4); 856 + input_report_rel(dev2, REL_Y, -((s8)y / 4)); 857 857 858 858 psmouse_report_standard_buttons(dev2, packet[3]); 859 859 ··· 1104 1104 ((packet[3] & 0x20) << 1); 1105 1105 z = (packet[5] & 0x3f) | ((packet[3] & 0x80) >> 1); 1106 1106 1107 - input_report_rel(dev2, REL_X, (char)x); 1108 - input_report_rel(dev2, REL_Y, -((char)y)); 1107 + input_report_rel(dev2, REL_X, (s8)x); 1108 + input_report_rel(dev2, REL_Y, -((s8)y)); 1109 1109 input_report_abs(dev2, ABS_PRESSURE, z); 1110 1110 1111 1111 psmouse_report_standard_buttons(dev2, packet[1]); ··· 2294 2294 if (reg < 0) 2295 2295 return reg; 2296 2296 2297 - x_pitch = (char)(reg << 4) >> 4; /* sign extend lower 4 bits */ 2297 + x_pitch = (s8)(reg << 4) >> 4; /* sign extend lower 4 bits */ 2298 2298 x_pitch = 50 + 2 * x_pitch; /* In 0.1 mm units */ 2299 2299 2300 - y_pitch = (char)reg >> 4; /* sign extend upper 4 bits */ 2300 + y_pitch = (s8)reg >> 4; /* sign extend upper 4 bits */ 2301 2301 y_pitch = 36 + 2 * y_pitch; /* In 0.1 mm units */ 2302 2302 2303 2303 reg = alps_command_mode_read_reg(psmouse, reg_pitch + 1); 2304 2304 if (reg < 0) 2305 2305 return reg; 2306 2306 2307 - x_electrode = (char)(reg << 4) >> 4; /* sign extend lower 4 bits */ 2307 + x_electrode = (s8)(reg << 4) >> 4; /* sign extend lower 4 bits */ 2308 2308 x_electrode = 17 + x_electrode; 2309 2309 2310 - y_electrode = (char)reg >> 4; /* sign extend upper 4 bits */ 2310 + y_electrode = (s8)reg >> 4; /* sign extend upper 4 bits */ 2311 2311 y_electrode = 13 + y_electrode; 2312 2312 2313 2313 x_phys = x_pitch * (x_electrode - 1); /* In 0.1 mm units */
+4 -4
drivers/input/mouse/focaltech.c
··· 202 202 state->pressed = packet[0] >> 7; 203 203 finger1 = ((packet[0] >> 4) & 0x7) - 1; 204 204 if (finger1 < FOC_MAX_FINGERS) { 205 - state->fingers[finger1].x += (char)packet[1]; 206 - state->fingers[finger1].y += (char)packet[2]; 205 + state->fingers[finger1].x += (s8)packet[1]; 206 + state->fingers[finger1].y += (s8)packet[2]; 207 207 } else { 208 208 psmouse_err(psmouse, "First finger in rel packet invalid: %d\n", 209 209 finger1); ··· 218 218 */ 219 219 finger2 = ((packet[3] >> 4) & 0x7) - 1; 220 220 if (finger2 < FOC_MAX_FINGERS) { 221 - state->fingers[finger2].x += (char)packet[4]; 222 - state->fingers[finger2].y += (char)packet[5]; 221 + state->fingers[finger2].x += (s8)packet[4]; 222 + state->fingers[finger2].y += (s8)packet[5]; 223 223 } 224 224 } 225 225
+36
drivers/input/serio/i8042-acpipnpio.h
··· 611 611 .driver_data = (void *)(SERIO_QUIRK_NOMUX) 612 612 }, 613 613 { 614 + /* Fujitsu Lifebook A574/H */ 615 + .matches = { 616 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"), 617 + DMI_MATCH(DMI_PRODUCT_NAME, "FMVA0501PZ"), 618 + }, 619 + .driver_data = (void *)(SERIO_QUIRK_NOMUX) 620 + }, 621 + { 614 622 /* Gigabyte M912 */ 615 623 .matches = { 616 624 DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), ··· 1125 1117 SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) 1126 1118 }, 1127 1119 { 1120 + /* 1121 + * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes 1122 + * the keyboard very laggy for ~5 seconds after boot and 1123 + * sometimes also after resume. 1124 + * However both are required for the keyboard to not fail 1125 + * completely sometimes after boot or resume. 1126 + */ 1127 + .matches = { 1128 + DMI_MATCH(DMI_BOARD_NAME, "N150CU"), 1129 + }, 1130 + .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | 1131 + SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) 1132 + }, 1133 + { 1128 1134 .matches = { 1129 1135 DMI_MATCH(DMI_BOARD_NAME, "NH5xAx"), 1136 + }, 1137 + .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | 1138 + SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) 1139 + }, 1140 + { 1141 + /* 1142 + * Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes 1143 + * the keyboard very laggy for ~5 seconds after boot and 1144 + * sometimes also after resume. 1145 + * However both are required for the keyboard to not fail 1146 + * completely sometimes after boot or resume. 1147 + */ 1148 + .matches = { 1149 + DMI_MATCH(DMI_BOARD_NAME, "NHxxRZQ"), 1130 1150 }, 1131 1151 .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS | 1132 1152 SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
+11 -3
drivers/input/touchscreen/goodix.c
··· 124 124 static const struct dmi_system_id nine_bytes_report[] = { 125 125 #if defined(CONFIG_DMI) && defined(CONFIG_X86) 126 126 { 127 - .ident = "Lenovo YogaBook", 128 - /* YB1-X91L/F and YB1-X90L/F */ 127 + /* Lenovo Yoga Book X90F / X90L */ 129 128 .matches = { 130 - DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X9") 129 + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), 130 + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), 131 + DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "YETI-11"), 132 + } 133 + }, 134 + { 135 + /* Lenovo Yoga Book X91F / X91L */ 136 + .matches = { 137 + /* Non exact match to match F + L versions */ 138 + DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X91"), 131 139 } 132 140 }, 133 141 #endif