Skip to content

Commit b357263

Browse files
committed
Revert "Input: psmouse - add delay when deactivating for SMBus mode"
This reverts commit 92e24e0. While the patch itself is correct, it uncovered an issue with fallback to PS/2 mode, where we were leaving psmouse->fast_reconnect handler set to psmouse_smbus_reconnect(), which caused crashes. While discussing various approaches to fix the issue it was noted that this patch ass undesired delay in the "fast" resume path of PS/2 device, and it would be better to actually use "reset_delay" option defined in struct rmi_device_platform_data and have RMI code handle it for SMBus transport as well. So this patch is being reverted to deal with crashes and a better solution will be merged shortly. Reported-by: Thorsten Leemhuis <[email protected]> Closes: https://lore.kernel.org/all/[email protected]/ Signed-off-by: Dmitry Torokhov <[email protected]>
1 parent 423622a commit b357263

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

drivers/input/mouse/psmouse-smbus.c

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
77

8-
#include <linux/delay.h>
98
#include <linux/kernel.h>
109
#include <linux/module.h>
1110
#include <linux/libps2.h>
@@ -119,18 +118,13 @@ static psmouse_ret_t psmouse_smbus_process_byte(struct psmouse *psmouse)
119118
return PSMOUSE_FULL_PACKET;
120119
}
121120

122-
static void psmouse_activate_smbus_mode(struct psmouse_smbus_dev *smbdev)
123-
{
124-
if (smbdev->need_deactivate) {
125-
psmouse_deactivate(smbdev->psmouse);
126-
/* Give the device time to switch into SMBus mode */
127-
msleep(30);
128-
}
129-
}
130-
131121
static int psmouse_smbus_reconnect(struct psmouse *psmouse)
132122
{
133-
psmouse_activate_smbus_mode(psmouse->private);
123+
struct psmouse_smbus_dev *smbdev = psmouse->private;
124+
125+
if (smbdev->need_deactivate)
126+
psmouse_deactivate(psmouse);
127+
134128
return 0;
135129
}
136130

@@ -263,7 +257,8 @@ int psmouse_smbus_init(struct psmouse *psmouse,
263257
}
264258
}
265259

266-
psmouse_activate_smbus_mode(smbdev);
260+
if (need_deactivate)
261+
psmouse_deactivate(psmouse);
267262

268263
psmouse->private = smbdev;
269264
psmouse->protocol_handler = psmouse_smbus_process_byte;

0 commit comments

Comments
 (0)