[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