89 lines
2.8 KiB
Diff
89 lines
2.8 KiB
Diff
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
|
|
--- a/drivers/input/keyboard/atkbd.c
|
|
+++ b/drivers/input/keyboard/atkbd.c
|
|
@@ -1938,6 +1938,14 @@ static const struct dmi_system_id atkbd_dmi_quirk_table[] __initconst = {
|
|
},
|
|
.callback = atkbd_deactivate_fixup,
|
|
},
|
|
+ {
|
|
+ /* Lenovo IdeaPad Slim 3 15IWC11 (83RR) */
|
|
+ .matches = {
|
|
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
|
+ DMI_MATCH(DMI_PRODUCT_NAME, "83RR"),
|
|
+ },
|
|
+ .callback = atkbd_deactivate_fixup,
|
|
+ },
|
|
{
|
|
/* Xiaomi Book Pro 14 (TM2424) */
|
|
.matches = {
|
|
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
|
|
--- a/drivers/input/mouse/synaptics.c
|
|
+++ b/drivers/input/mouse/synaptics.c
|
|
@@ -192,6 +192,7 @@ static const char * const smbus_pnp_ids[] = {
|
|
"LEN2054", /* E480 */
|
|
"LEN2055", /* E580 */
|
|
"LEN2058", /* E490 */
|
|
+ "LEN205b", /* T490 */
|
|
"LEN2068", /* T14 Gen 1 */
|
|
"SYN1221", /* TUXEDO InfinityBook Pro 14 v5 */
|
|
"SYN3003", /* HP EliteBook 850 G1 */
|
|
@@ -1839,8 +1840,10 @@ static int synaptics_setup_intertouch(struct psmouse *psmouse,
|
|
return -ENXIO;
|
|
}
|
|
|
|
- /* Disable intertouch on known-broken board revisions */
|
|
- if (info->board_id == 2722) {
|
|
+ /* Disable intertouch on known-broken T440p board revisions */
|
|
+ if (info->board_id == 2722 &&
|
|
+ psmouse_matches_pnp_id(psmouse,
|
|
+ (const char * const []){"LEN0036", NULL})) {
|
|
psmouse_info(psmouse,
|
|
"Disabling intertouch for board id %u\n",
|
|
info->board_id);
|
|
diff --git a/drivers/input/serio/i8042-acpipnpio.h b/drivers/input/serio/i8042-acpipnpio.h
|
|
--- a/drivers/input/serio/i8042-acpipnpio.h
|
|
+++ b/drivers/input/serio/i8042-acpipnpio.h
|
|
@@ -671,6 +671,15 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
|
|
},
|
|
.driver_data = (void *)(SERIO_QUIRK_NOAUX)
|
|
},
|
|
+ {
|
|
+ /* Fujitsu LIFEBOOK U7410 */
|
|
+ /* Mux mode also disturbs the EC keyboard, causing spurious ACKs */
|
|
+ .matches = {
|
|
+ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU CLIENT COMPUTING LIMITED"),
|
|
+ DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK U7410"),
|
|
+ },
|
|
+ .driver_data = (void *)(SERIO_QUIRK_NOMUX)
|
|
+ },
|
|
{
|
|
/* Gigabyte M912 */
|
|
.matches = {
|
|
diff --git a/drivers/input/touchscreen/s6sy761.c b/drivers/input/touchscreen/s6sy761.c
|
|
--- a/drivers/input/touchscreen/s6sy761.c
|
|
+++ b/drivers/input/touchscreen/s6sy761.c
|
|
@@ -500,10 +500,22 @@ static int s6sy761_suspend(struct device *dev)
|
|
static int s6sy761_resume(struct device *dev)
|
|
{
|
|
struct s6sy761_data *sdata = dev_get_drvdata(dev);
|
|
+ int err;
|
|
+
|
|
+ err = s6sy761_power_on(sdata);
|
|
+ if (err)
|
|
+ return err;
|
|
|
|
enable_irq(sdata->client->irq);
|
|
|
|
- return s6sy761_power_on(sdata);
|
|
+ guard(mutex)(&sdata->input->mutex);
|
|
+
|
|
+ if (!input_device_enabled(sdata->input))
|
|
+ return 0;
|
|
+
|
|
+ err = i2c_smbus_write_byte(sdata->client, S6SY761_SENSE_ON);
|
|
+
|
|
+ return err;
|
|
}
|
|
|
|
static const struct dev_pm_ops s6sy761_pm_ops = {
|