Jesse Keating 7a32965
From: Bastien Nocera <hadess@hadess.net>
Jesse Keating 7a32965
Date: Thu, 20 May 2010 10:30:31 -0400
dbc4a9b
Subject: [PATCH] disable i8042 check on apple mac
Jesse Keating 7a32965
Jesse Keating 7a32965
As those computers never had any i8042 controllers, and the
Jesse Keating 7a32965
current lookup code could potentially lock up/hang/wait for
Jesse Keating 7a32965
timeout for long periods of time.
Jesse Keating 7a32965
Jesse Keating 7a32965
Fixes intermittent hangs on boot on a MacbookAir1,1
Jesse Keating 7a32965
dbc4a9b
Bugzilla: N/A
dbc4a9b
Upstream-status: http://lkml.indiana.edu/hypermail/linux/kernel/1005.0/00938.html (and pinged on Dec 17, 2013)
dbc4a9b
Jesse Keating 7a32965
Signed-off-by: Bastien Nocera <hadess@hadess.net>
Jesse Keating 7a32965
---
dbc4a9b
 drivers/input/serio/i8042.c | 22 ++++++++++++++++++++++
dbc4a9b
 1 file changed, 22 insertions(+)
Jesse Keating 7a32965
Jesse Keating 7a32965
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
f046ab9
index 739f57b35fa3..8af45db27310 100644
Jesse Keating 7a32965
--- a/drivers/input/serio/i8042.c
Jesse Keating 7a32965
+++ b/drivers/input/serio/i8042.c
f046ab9
@@ -1485,6 +1485,22 @@ static struct platform_driver i8042_driver = {
Jesse Keating 7a32965
 	.shutdown	= i8042_shutdown,
Jesse Keating 7a32965
 };
Jesse Keating 7a32965
 
Jesse Keating 7a32965
+#ifdef CONFIG_DMI
Jesse Keating 7a32965
+static struct dmi_system_id __initdata dmi_system_table[] = {
Jesse Keating 7a32965
+	{
Jesse Keating 7a32965
+		.matches = {
Jesse Keating 7a32965
+			DMI_MATCH(DMI_BIOS_VENDOR, "Apple Computer, Inc.")
Jesse Keating 7a32965
+		},
Jesse Keating 7a32965
+	},
Jesse Keating 7a32965
+	{
Jesse Keating 7a32965
+		.matches = {
Jesse Keating 7a32965
+			DMI_MATCH(DMI_BIOS_VENDOR, "Apple Inc.")
Jesse Keating 7a32965
+		},
Jesse Keating 7a32965
+	},
Jesse Keating 7a32965
+	{}
Jesse Keating 7a32965
+};
Jesse Keating 7a32965
+#endif /*CONFIG_DMI*/
Jesse Keating 7a32965
+
Jesse Keating 7a32965
 static int __init i8042_init(void)
Jesse Keating 7a32965
 {
Jesse Keating 7a32965
 	struct platform_device *pdev;
f046ab9
@@ -1492,6 +1508,12 @@ static int __init i8042_init(void)
Jesse Keating 7a32965
 
Jesse Keating 7a32965
 	dbg_init();
Jesse Keating 7a32965
 
Jesse Keating 7a32965
+#ifdef CONFIG_DMI
Jesse Keating 7a32965
+	/* Intel Apple Macs never have an i8042 controller */
Jesse Keating 7a32965
+	if (dmi_check_system(dmi_system_table) > 0)
Jesse Keating 7a32965
+		return -ENODEV;
Jesse Keating 7a32965
+#endif /*CONFIG_DMI*/
Jesse Keating 7a32965
+
Jesse Keating 7a32965
 	err = i8042_platform_init();
Jesse Keating 7a32965
 	if (err)
Jesse Keating 7a32965
 		return err;
Jesse Keating 7a32965
-- 
c47527a
2.1.0
Jesse Keating 7a32965