Skip to content

Commit

Permalink
Input: i8042 - make sure Dritek quirk is invoked at resume
Browse files Browse the repository at this point in the history
Also do not fail i8042 entire initialization if enabling dritek extension
fails.

Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Bruno Prémont authored and Dmitry Torokhov committed May 27, 2008
1 parent 65e660a commit d35895d
Showing 1 changed file with 25 additions and 8 deletions.
33 changes: 25 additions & 8 deletions drivers/input/serio/i8042.c
Original file line number Diff line number Diff line change
Expand Up @@ -885,6 +885,20 @@ static long i8042_panic_blink(long count)

#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
/*
* Here we try to restore the original BIOS settings. We only want to
Expand Down Expand Up @@ -942,6 +956,12 @@ static int i8042_resume(struct platform_device *dev)
return -EIO;
}


#ifdef CONFIG_X86
if (i8042_dritek)
i8042_dritek_enable();
#endif

if (i8042_mux_present) {
if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports())
printk(KERN_WARNING
Expand Down Expand Up @@ -1160,6 +1180,11 @@ static int __devinit i8042_probe(struct platform_device *dev)
if (error)
return error;

#ifdef CONFIG_X86
if (i8042_dritek)
i8042_dritek_enable();
#endif

if (!i8042_noaux) {
error = i8042_setup_aux();
if (error && error != -ENODEV && error != -EBUSY)
Expand All @@ -1171,14 +1196,6 @@ static int __devinit i8042_probe(struct platform_device *dev)
if (error)
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
*/
Expand Down

0 comments on commit d35895d

Please sign in to comment.