[kernel] r19570 - in dists/sid/linux/debian: . patches patches/bugfix/x86

Ben Hutchings benh at alioth.debian.org
Sun Dec 2 17:07:49 UTC 2012


Author: benh
Date: Sun Dec  2 17:07:48 2012
New Revision: 19570

Log:
Input: i8042 - also perform controller reset when suspending (Closes: #693934)

Added:
   dists/sid/linux/debian/patches/bugfix/x86/Input-i8042-also-perform-controller-reset-when-suspe.patch
Modified:
   dists/sid/linux/debian/changelog
   dists/sid/linux/debian/patches/series

Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog	Sun Dec  2 14:49:12 2012	(r19569)
+++ dists/sid/linux/debian/changelog	Sun Dec  2 17:07:48 2012	(r19570)
@@ -82,6 +82,8 @@
   * usb: Disable UAS; it is known to be broken, and the supported devices
     can also work with usb-storage
   * ipv6: Treat ND option 31 as userland (DNSSL support) (Closes: #694522)
+  * Input: i8042 - also perform controller reset when suspending
+    (Closes: #693934)
 
   [ Ian Campbell ]
   * [xen] add support for microcode updating. (Closes: #693053)

Added: dists/sid/linux/debian/patches/bugfix/x86/Input-i8042-also-perform-controller-reset-when-suspe.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux/debian/patches/bugfix/x86/Input-i8042-also-perform-controller-reset-when-suspe.patch	Sun Dec  2 17:07:48 2012	(r19570)
@@ -0,0 +1,105 @@
+From: Dmitry Torokhov <dmitry.torokhov at gmail.com>
+Date: Sat, 29 Oct 2011 12:37:06 -0700
+Subject: Input: i8042 - also perform controller reset when suspending
+
+commit 1729ad1f4f9e167ade84ca8b5269695c42351160 upstream.
+
+In addition to some laptops needing i8042 reset after resuming from S2R to
+get their touchpads working there is another class of laptops - ones that
+need i8042 reset before going to S2R, otherwise they will simply reboot
+instead of resuming.
+
+See https://bugzilla.kernel.org/show_bug.cgi?id=15612
+
+This change forces reset of i8042 before doing S2R.
+
+Reported-by: Stefan Koch <stefan_koch at gmx.net>
+Tested-by: Alexander van Loon <a.vanloon at alexandervanloon.nl>
+Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
+---
+ drivers/input/serio/i8042.c |   23 +++++++++++++++--------
+ 1 file changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
+index d37a48e..8656441 100644
+--- a/drivers/input/serio/i8042.c
++++ b/drivers/input/serio/i8042.c
+@@ -991,7 +991,7 @@ static int i8042_controller_init(void)
+  * Reset the controller and reset CRT to the original value set by BIOS.
+  */
+ 
+-static void i8042_controller_reset(void)
++static void i8042_controller_reset(bool force_reset)
+ {
+ 	i8042_flush();
+ 
+@@ -1016,7 +1016,7 @@ static void i8042_controller_reset(void)
+  * Reset the controller if requested.
+  */
+ 
+-	if (i8042_reset)
++	if (i8042_reset || force_reset)
+ 		i8042_controller_selftest();
+ 
+ /*
+@@ -1139,9 +1139,9 @@ static int i8042_controller_resume(bool force_reset)
+  * upsetting it.
+  */
+ 
+-static int i8042_pm_reset(struct device *dev)
++static int i8042_pm_suspend(struct device *dev)
+ {
+-	i8042_controller_reset();
++	i8042_controller_reset(true);
+ 
+ 	return 0;
+ }
+@@ -1163,13 +1163,20 @@ static int i8042_pm_thaw(struct device *dev)
+ 	return 0;
+ }
+ 
++static int i8042_pm_reset(struct device *dev)
++{
++	i8042_controller_reset(false);
++
++	return 0;
++}
++
+ static int i8042_pm_restore(struct device *dev)
+ {
+ 	return i8042_controller_resume(false);
+ }
+ 
+ static const struct dev_pm_ops i8042_pm_ops = {
+-	.suspend	= i8042_pm_reset,
++	.suspend	= i8042_pm_suspend,
+ 	.resume		= i8042_pm_resume,
+ 	.thaw		= i8042_pm_thaw,
+ 	.poweroff	= i8042_pm_reset,
+@@ -1185,7 +1192,7 @@ static const struct dev_pm_ops i8042_pm_ops = {
+ 
+ static void i8042_shutdown(struct platform_device *dev)
+ {
+-	i8042_controller_reset();
++	i8042_controller_reset(false);
+ }
+ 
+ static int __init i8042_create_kbd_port(void)
+@@ -1424,7 +1431,7 @@ static int __init i8042_probe(struct platform_device *dev)
+  out_fail:
+ 	i8042_free_aux_ports();	/* in case KBD failed but AUX not */
+ 	i8042_free_irqs();
+-	i8042_controller_reset();
++	i8042_controller_reset(false);
+ 	i8042_platform_device = NULL;
+ 
+ 	return error;
+@@ -1434,7 +1441,7 @@ static int __devexit i8042_remove(struct platform_device *dev)
+ {
+ 	i8042_unregister_ports();
+ 	i8042_free_irqs();
+-	i8042_controller_reset();
++	i8042_controller_reset(false);
+ 	i8042_platform_device = NULL;
+ 
+ 	return 0;

Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series	Sun Dec  2 14:49:12 2012	(r19569)
+++ dists/sid/linux/debian/patches/series	Sun Dec  2 17:07:48 2012	(r19570)
@@ -413,3 +413,4 @@
 debian/rtnetlink-avoid-ABI-change-in-3.2.34.patch
 debian/mm-avoid-ABI-change-in-3.2.33.patch
 features/all/ipv6-Treat-ND-option-31-as-userland-DNSSL-support.patch
+bugfix/x86/Input-i8042-also-perform-controller-reset-when-suspe.patch



More information about the Kernel-svn-changes mailing list