Thread (7 messages) 7 messages, 4 authors, 2010-02-25

Re: [PATCH] Input: serio - re-add thaw (and add freeze)

From: Alan Jenkins <hidden>
Date: 2010-02-16 16:48:34
Also in: lkml
Subsystem: input (keyboard, mouse, joystick, touchscreen) drivers, the rest · Maintainers: Dmitry Torokhov, Linus Torvalds

On 2/4/10, Alan Jenkins [off-list ref] wrote:
Dmitry Torokhov wrote:
quoted
On Wed, Feb 03, 2010 at 06:59:54PM +0000, Alan Jenkins wrote:
quoted
633aae2 "Input: i8042 - switch to using dev_pm_ops"
removed handling for PMSG_THAW, causing obscure breakage.

It can break if you press keys during hibernation,
which causes subsequent keypresses to be lost -
so you can't cancel s2disk by pressing backspace -
and then just before system poweroff you get
"psmouse.c: Failed to deactivate mouse".

So let's add the thaw handler back.

Also set the freeze handler.  It looks like PMSG_FREEZE
didn't do anything in the past, but I think that must
have been an oversight.
We do not need to do anything special at freeze time that is why there
wasn't freeze handler. And so thaw should be pretty much noop as well.
Ok, so I did some more mindless fiddling.  It seems that all it needs
is to call the interrupt handler at thaw time.

Regards
Alan
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index d84a36e..b54aee7 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -1161,9 +1161,17 @@ static int i8042_pm_restore(struct device *dev)
 	return 0;
 }

+static int i8042_pm_thaw(struct device *dev)
+{
+	i8042_interrupt(0, NULL);
+
+	return 0;
+}
+
 static const struct dev_pm_ops i8042_pm_ops = {
 	.suspend	= i8042_pm_reset,
 	.resume		= i8042_pm_restore,
+	.thaw		= i8042_pm_thaw,
 	.poweroff	= i8042_pm_reset,
 	.restore	= i8042_pm_restore,
 };
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help