diff options
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-input-introduce-a-tougher-i8042.reset.patch')
-rw-r--r-- | meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-input-introduce-a-tougher-i8042.reset.patch | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-input-introduce-a-tougher-i8042.reset.patch b/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-input-introduce-a-tougher-i8042.reset.patch deleted file mode 100644 index 1ae825720..000000000 --- a/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.29-input-introduce-a-tougher-i8042.reset.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 2c5ccde448ae5f4062802bcd6002f856acbd268f Mon Sep 17 00:00:00 2001 -From: Arjan van de Ven <arjan@linux.intel.com> -Date: Tue, 3 Feb 2009 16:26:16 -0800 -Subject: [PATCH] input: introduce a tougher i8042.reset - -Some bad touchpads don't reset right the first time (MSI Wind U-100 for -example). This patch will retry the reset up to 5 times. - -In addition, this patch also adds a module parameter to not treat -reset failures as fatal to the usage of the device. This prevents -a touchpad failure from also disabling the keyboard.... - -Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> ---- - Documentation/kernel-parameters.txt | 2 ++ - drivers/input/serio/i8042.c | 33 ++++++++++++++++++++++++--------- - 2 files changed, 26 insertions(+), 9 deletions(-) - -diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt -index ac613a6..a43e3bd 100644 ---- a/Documentation/kernel-parameters.txt -+++ b/Documentation/kernel-parameters.txt -@@ -855,6 +855,8 @@ and is between 256 and 4096 characters. It is defined in the file - [HW] Frequency with which keyboard LEDs should blink - when kernel panics (default is 0.5 sec) - i8042.reset [HW] Reset the controller during init and cleanup -+ i8042.nonfatal [HW] Don't treat i8042.reset failures as fatal for the -+ device initialization. - i8042.unlock [HW] Unlock (ignore) the keylock - - i810= [HW,DRM] -diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c -index 170f71e..2473a9a 100644 ---- a/drivers/input/serio/i8042.c -+++ b/drivers/input/serio/i8042.c -@@ -47,6 +47,10 @@ static unsigned int i8042_reset; - module_param_named(reset, i8042_reset, bool, 0); - MODULE_PARM_DESC(reset, "Reset controller during init and cleanup."); - -+static unsigned int i8042_nonfatal; -+module_param_named(nonfatal, i8042_nonfatal, bool, 0); -+MODULE_PARM_DESC(reset, "Treat controller test failures as non-fatal."); -+ - static unsigned int i8042_direct; - module_param_named(direct, i8042_direct, bool, 0); - MODULE_PARM_DESC(direct, "Put keyboard port into non-translated mode."); -@@ -712,22 +716,33 @@ static int i8042_controller_check(void) - static int i8042_controller_selftest(void) - { - unsigned char param; -+ int i = 0; - - if (!i8042_reset) - return 0; - -- if (i8042_command(¶m, I8042_CMD_CTL_TEST)) { -- printk(KERN_ERR "i8042.c: i8042 controller self test timeout.\n"); -- return -ENODEV; -- } -+ /* -+ * We try this 5 times; on some really fragile systems this does not -+ * take the first time... -+ */ -+ do { -+ -+ if (i8042_command(¶m, I8042_CMD_CTL_TEST)) { -+ printk(KERN_ERR "i8042.c: i8042 controller self test timeout.\n"); -+ return -ENODEV; -+ } -+ -+ if (param == I8042_RET_CTL_TEST) -+ return 0; - -- if (param != I8042_RET_CTL_TEST) { - printk(KERN_ERR "i8042.c: i8042 controller selftest failed. (%#x != %#x)\n", -- param, I8042_RET_CTL_TEST); -- return -EIO; -- } -+ param, I8042_RET_CTL_TEST); -+ msleep(50); -+ } while (i++ < 5); - -- return 0; -+ if (i8042_nonfatal) -+ return 0; -+ return -EIO; - } - - /* --- -1.6.0.6 - |