mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 07:35:36 -05:00
Merge tag 'input-for-v6.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
Pull input fixes from Dmitry Torokhov: - a quirk for i8042 to better handle another TUXEDO model - a quirk to atkbd to handle incorcet behavior of HONOR FMB-P internal keyboard - a definition for a new ABS_SND_PROFILE event - fixes to alps and lkkbd drivers to reliably shut down pending work on removal - a fix to apple_z2 driver tightening input report parsing - a fix for "off-by-one" error when validating config in ti_am335x_tsc driver - addition of CRKD Guitars device IDs to xpad driver. * tag 'input-for-v6.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: ti_am335x_tsc - fix off-by-one error in wire_order validation Input: xpad - add support for CRKD Guitars Input: add ABS_SND_PROFILE Input: apple_z2 - fix reading incorrect reports after exiting sleep Input: alps - fix use-after-free bugs caused by dev3_register_work Input: i8042 - add TUXEDO InfinityBook Max Gen10 AMD to i8042 quirk table Input: atkbd - skip deactivate for HONOR FMB-P's internal keyboard Input: lkkbd - disable pending work before freeing device
This commit is contained in:
@@ -241,6 +241,12 @@ A few EV_ABS codes have special meanings:
|
||||
emitted only when the selected profile changes, indicating the newly
|
||||
selected profile value.
|
||||
|
||||
* ABS_SND_PROFILE:
|
||||
|
||||
- Used to describe the state of a multi-value sound profile switch.
|
||||
An event is emitted only when the selected profile changes,
|
||||
indicating the newly selected profile value.
|
||||
|
||||
* ABS_MT_<name>:
|
||||
|
||||
- Used to describe multitouch input events. Please see
|
||||
|
||||
@@ -3513,6 +3513,7 @@ static const char *absolutes[ABS_CNT] = {
|
||||
[ABS_DISTANCE] = "Distance", [ABS_TILT_X] = "XTilt",
|
||||
[ABS_TILT_Y] = "YTilt", [ABS_TOOL_WIDTH] = "ToolWidth",
|
||||
[ABS_VOLUME] = "Volume", [ABS_PROFILE] = "Profile",
|
||||
[ABS_SND_PROFILE] = "SoundProfile",
|
||||
[ABS_MISC] = "Misc",
|
||||
[ABS_MT_SLOT] = "MTSlot",
|
||||
[ABS_MT_TOUCH_MAJOR] = "MTMajor",
|
||||
|
||||
@@ -133,6 +133,8 @@ static const struct xpad_device {
|
||||
} xpad_device[] = {
|
||||
/* Please keep this list sorted by vendor and product ID. */
|
||||
{ 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 },
|
||||
{ 0x0351, 0x1000, "CRKD LP Blueberry Burst Pro Edition (Xbox)", 0, XTYPE_XBOX360 },
|
||||
{ 0x0351, 0x2000, "CRKD LP Black Tribal Edition (Xbox) ", 0, XTYPE_XBOX360 },
|
||||
{ 0x03eb, 0xff01, "Wooting One (Legacy)", 0, XTYPE_XBOX360 },
|
||||
{ 0x03eb, 0xff02, "Wooting Two (Legacy)", 0, XTYPE_XBOX360 },
|
||||
{ 0x03f0, 0x038D, "HyperX Clutch", 0, XTYPE_XBOX360 }, /* wired */
|
||||
@@ -420,6 +422,7 @@ static const struct xpad_device {
|
||||
{ 0x3285, 0x0663, "Nacon Evol-X", 0, XTYPE_XBOXONE },
|
||||
{ 0x3537, 0x1004, "GameSir T4 Kaleid", 0, XTYPE_XBOX360 },
|
||||
{ 0x3537, 0x1010, "GameSir G7 SE", 0, XTYPE_XBOXONE },
|
||||
{ 0x3651, 0x1000, "CRKD SG", 0, XTYPE_XBOX360 },
|
||||
{ 0x366c, 0x0005, "ByoWave Proteus Controller", MAP_SHARE_BUTTON, XTYPE_XBOXONE, FLAG_DELAY_INIT },
|
||||
{ 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX },
|
||||
{ 0x37d7, 0x2501, "Flydigi Apex 5", 0, XTYPE_XBOX360 },
|
||||
@@ -518,6 +521,7 @@ static const struct usb_device_id xpad_table[] = {
|
||||
*/
|
||||
{ USB_INTERFACE_INFO('X', 'B', 0) }, /* Xbox USB-IF not-approved class */
|
||||
XPAD_XBOX360_VENDOR(0x0079), /* GPD Win 2 controller */
|
||||
XPAD_XBOX360_VENDOR(0x0351), /* CRKD Controllers */
|
||||
XPAD_XBOX360_VENDOR(0x03eb), /* Wooting Keyboards (Legacy) */
|
||||
XPAD_XBOX360_VENDOR(0x03f0), /* HP HyperX Xbox 360 controllers */
|
||||
XPAD_XBOXONE_VENDOR(0x03f0), /* HP HyperX Xbox One controllers */
|
||||
@@ -578,6 +582,7 @@ static const struct usb_device_id xpad_table[] = {
|
||||
XPAD_XBOXONE_VENDOR(0x3285), /* Nacon Evol-X */
|
||||
XPAD_XBOX360_VENDOR(0x3537), /* GameSir Controllers */
|
||||
XPAD_XBOXONE_VENDOR(0x3537), /* GameSir Controllers */
|
||||
XPAD_XBOX360_VENDOR(0x3651), /* CRKD Controllers */
|
||||
XPAD_XBOXONE_VENDOR(0x366c), /* ByoWave controllers */
|
||||
XPAD_XBOX360_VENDOR(0x37d7), /* Flydigi Controllers */
|
||||
XPAD_XBOX360_VENDOR(0x413d), /* Black Shark Green Ghost Controller */
|
||||
|
||||
@@ -1937,6 +1937,13 @@ static const struct dmi_system_id atkbd_dmi_quirk_table[] __initconst = {
|
||||
},
|
||||
.callback = atkbd_deactivate_fixup,
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "HONOR"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "FMB-P"),
|
||||
},
|
||||
.callback = atkbd_deactivate_fixup,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
@@ -670,7 +670,8 @@ static int lkkbd_connect(struct serio *serio, struct serio_driver *drv)
|
||||
|
||||
return 0;
|
||||
|
||||
fail3: serio_close(serio);
|
||||
fail3: disable_work_sync(&lk->tq);
|
||||
serio_close(serio);
|
||||
fail2: serio_set_drvdata(serio, NULL);
|
||||
fail1: input_free_device(input_dev);
|
||||
kfree(lk);
|
||||
@@ -684,6 +685,8 @@ static void lkkbd_disconnect(struct serio *serio)
|
||||
{
|
||||
struct lkkbd *lk = serio_get_drvdata(serio);
|
||||
|
||||
disable_work_sync(&lk->tq);
|
||||
|
||||
input_get_device(lk->dev);
|
||||
input_unregister_device(lk->dev);
|
||||
serio_close(serio);
|
||||
|
||||
@@ -2975,6 +2975,7 @@ static void alps_disconnect(struct psmouse *psmouse)
|
||||
|
||||
psmouse_reset(psmouse);
|
||||
timer_shutdown_sync(&priv->timer);
|
||||
disable_delayed_work_sync(&priv->dev3_register_work);
|
||||
if (priv->dev2)
|
||||
input_unregister_device(priv->dev2);
|
||||
if (!IS_ERR_OR_NULL(priv->dev3))
|
||||
|
||||
@@ -1169,6 +1169,13 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
|
||||
.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
|
||||
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
|
||||
},
|
||||
{
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "X5KK45xS_X5SP45xS"),
|
||||
},
|
||||
.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
|
||||
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
|
||||
},
|
||||
/*
|
||||
* A lot of modern Clevo barebones have touchpad and/or keyboard issues
|
||||
* after suspend fixable with the forcenorestore quirk.
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#define APPLE_Z2_TOUCH_STARTED 3
|
||||
#define APPLE_Z2_TOUCH_MOVED 4
|
||||
#define APPLE_Z2_CMD_READ_INTERRUPT_DATA 0xEB
|
||||
#define APPLE_Z2_REPLY_INTERRUPT_DATA 0xE1
|
||||
#define APPLE_Z2_HBPP_CMD_BLOB 0x3001
|
||||
#define APPLE_Z2_FW_MAGIC 0x5746325A
|
||||
#define LOAD_COMMAND_INIT_PAYLOAD 0
|
||||
@@ -142,6 +143,9 @@ static int apple_z2_read_packet(struct apple_z2 *z2)
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
if (z2->rx_buf[0] != APPLE_Z2_REPLY_INTERRUPT_DATA)
|
||||
return 0;
|
||||
|
||||
pkt_len = (get_unaligned_le16(z2->rx_buf + 1) + 8) & 0xfffffffc;
|
||||
|
||||
error = spi_read(z2->spidev, z2->rx_buf, pkt_len);
|
||||
|
||||
@@ -85,7 +85,7 @@ static int titsc_config_wires(struct titsc *ts_dev)
|
||||
wire_order[i] = ts_dev->config_inp[i] & 0x0F;
|
||||
if (WARN_ON(analog_line[i] > 7))
|
||||
return -EINVAL;
|
||||
if (WARN_ON(wire_order[i] > ARRAY_SIZE(config_pins)))
|
||||
if (WARN_ON(wire_order[i] >= ARRAY_SIZE(config_pins)))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
@@ -891,6 +891,7 @@
|
||||
|
||||
#define ABS_VOLUME 0x20
|
||||
#define ABS_PROFILE 0x21
|
||||
#define ABS_SND_PROFILE 0x22
|
||||
|
||||
#define ABS_MISC 0x28
|
||||
|
||||
@@ -1000,4 +1001,12 @@
|
||||
#define SND_MAX 0x07
|
||||
#define SND_CNT (SND_MAX+1)
|
||||
|
||||
/*
|
||||
* ABS_SND_PROFILE values
|
||||
*/
|
||||
|
||||
#define SND_PROFILE_SILENT 0x00
|
||||
#define SND_PROFILE_VIBRATE 0x01
|
||||
#define SND_PROFILE_RING 0x02
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user