aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorBruno Prémont <bonbons@linux-vserver.org>2008-05-27 01:36:04 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2008-05-27 01:36:04 -0400
commitd35895db7aadc24086b6002101154eec478e9dd6 (patch)
treeb62557d16b6944d1caedf8a90a172993f3ab1aa6 /drivers/input
parent65e660aa3f76b120c2fe69bf07e1b416dae404a7 (diff)
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: Bruno Prémont <bonbons@linux-vserver.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/serio/i8042.c33
1 files changed, 25 insertions, 8 deletions
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 65a74cfc187b..592ff55b62d0 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -885,6 +885,20 @@ static long i8042_panic_blink(long count)
885 885
886#undef DELAY 886#undef DELAY
887 887
888#ifdef CONFIG_X86
889static void i8042_dritek_enable(void)
890{
891 char param = 0x90;
892 int error;
893
894 error = i8042_command(&param, 0x1059);
895 if (error)
896 printk(KERN_WARNING
897 "Failed to enable DRITEK extension: %d\n",
898 error);
899}
900#endif
901
888#ifdef CONFIG_PM 902#ifdef CONFIG_PM
889/* 903/*
890 * Here we try to restore the original BIOS settings. We only want to 904 * 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 return -EIO; 956 return -EIO;
943 } 957 }
944 958
959
960#ifdef CONFIG_X86
961 if (i8042_dritek)
962 i8042_dritek_enable();
963#endif
964
945 if (i8042_mux_present) { 965 if (i8042_mux_present) {
946 if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports()) 966 if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports())
947 printk(KERN_WARNING 967 printk(KERN_WARNING
@@ -1160,6 +1180,11 @@ static int __devinit i8042_probe(struct platform_device *dev)
1160 if (error) 1180 if (error)
1161 return error; 1181 return error;
1162 1182
1183#ifdef CONFIG_X86
1184 if (i8042_dritek)
1185 i8042_dritek_enable();
1186#endif
1187
1163 if (!i8042_noaux) { 1188 if (!i8042_noaux) {
1164 error = i8042_setup_aux(); 1189 error = i8042_setup_aux();
1165 if (error && error != -ENODEV && error != -EBUSY) 1190 if (error && error != -ENODEV && error != -EBUSY)
@@ -1171,14 +1196,6 @@ static int __devinit i8042_probe(struct platform_device *dev)
1171 if (error) 1196 if (error)
1172 goto out_fail; 1197 goto out_fail;
1173 } 1198 }
1174#ifdef CONFIG_X86
1175 if (i8042_dritek) {
1176 char param = 0x90;
1177 error = i8042_command(&param, 0x1059);
1178 if (error)
1179 goto out_fail;
1180 }
1181#endif
1182/* 1199/*
1183 * Ok, everything is ready, let's register all serio ports 1200 * Ok, everything is ready, let's register all serio ports
1184 */ 1201 */