Commit d35895db authored by Bruno Prémont's avatar Bruno Prémont Committed by Dmitry Torokhov

Input: i8042 - make sure Dritek quirk is invoked at resume

Also do not fail i8042 entire initialization if enabling dritek extension
fails.
Signed-off-by: default avatarBruno Prémont <bonbons@linux-vserver.org>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 65e660aa
...@@ -885,6 +885,20 @@ static long i8042_panic_blink(long count) ...@@ -885,6 +885,20 @@ static long i8042_panic_blink(long count)
#undef DELAY #undef DELAY
#ifdef CONFIG_X86
static void i8042_dritek_enable(void)
{
char param = 0x90;
int error;
error = i8042_command(&param, 0x1059);
if (error)
printk(KERN_WARNING
"Failed to enable DRITEK extension: %d\n",
error);
}
#endif
#ifdef CONFIG_PM #ifdef CONFIG_PM
/* /*
* Here we try to restore the original BIOS settings. We only want to * Here we try to restore the original BIOS settings. We only want to
...@@ -942,6 +956,12 @@ static int i8042_resume(struct platform_device *dev) ...@@ -942,6 +956,12 @@ static int i8042_resume(struct platform_device *dev)
return -EIO; return -EIO;
} }
#ifdef CONFIG_X86
if (i8042_dritek)
i8042_dritek_enable();
#endif
if (i8042_mux_present) { if (i8042_mux_present) {
if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports()) if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports())
printk(KERN_WARNING printk(KERN_WARNING
...@@ -1160,6 +1180,11 @@ static int __devinit i8042_probe(struct platform_device *dev) ...@@ -1160,6 +1180,11 @@ static int __devinit i8042_probe(struct platform_device *dev)
if (error) if (error)
return error; return error;
#ifdef CONFIG_X86
if (i8042_dritek)
i8042_dritek_enable();
#endif
if (!i8042_noaux) { if (!i8042_noaux) {
error = i8042_setup_aux(); error = i8042_setup_aux();
if (error && error != -ENODEV && error != -EBUSY) if (error && error != -ENODEV && error != -EBUSY)
...@@ -1171,14 +1196,6 @@ static int __devinit i8042_probe(struct platform_device *dev) ...@@ -1171,14 +1196,6 @@ static int __devinit i8042_probe(struct platform_device *dev)
if (error) if (error)
goto out_fail; goto out_fail;
} }
#ifdef CONFIG_X86
if (i8042_dritek) {
char param = 0x90;
error = i8042_command(&param, 0x1059);
if (error)
goto out_fail;
}
#endif
/* /*
* Ok, everything is ready, let's register all serio ports * Ok, everything is ready, let's register all serio ports
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment