63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 31e64826785b5bafef7a6361516c060be2bca253 Mon Sep 17 00:00:00 2001
 | |
| From: Bastien Nocera <hadess@hadess.net>
 | |
| Date: Thu, 20 May 2010 10:30:31 -0400
 | |
| Subject: [PATCH] disable i8042 check on apple mac
 | |
| 
 | |
| As those computers never had any i8042 controllers, and the
 | |
| current lookup code could potentially lock up/hang/wait for
 | |
| timeout for long periods of time.
 | |
| 
 | |
| Fixes intermittent hangs on boot on a MacbookAir1,1
 | |
| 
 | |
| Bugzilla: N/A
 | |
| Upstream-status: http://lkml.indiana.edu/hypermail/linux/kernel/1005.0/00938.html (and pinged on Dec 17, 2013)
 | |
| 
 | |
| Signed-off-by: Bastien Nocera <hadess@hadess.net>
 | |
| ---
 | |
|  drivers/input/serio/i8042.c | 22 ++++++++++++++++++++++
 | |
|  1 file changed, 22 insertions(+)
 | |
| 
 | |
| diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
 | |
| index c9c98f0ab284..5137185e14a9 100644
 | |
| --- a/drivers/input/serio/i8042.c
 | |
| +++ b/drivers/input/serio/i8042.c
 | |
| @@ -1540,6 +1540,22 @@ static struct notifier_block i8042_kbd_bind_notifier_block = {
 | |
|  	.notifier_call = i8042_kbd_bind_notifier,
 | |
|  };
 | |
|  
 | |
| +#ifdef CONFIG_DMI
 | |
| +static struct dmi_system_id __initdata dmi_system_table[] = {
 | |
| +	{
 | |
| +		.matches = {
 | |
| +			DMI_MATCH(DMI_BIOS_VENDOR, "Apple Computer, Inc.")
 | |
| +		},
 | |
| +	},
 | |
| +	{
 | |
| +		.matches = {
 | |
| +			DMI_MATCH(DMI_BIOS_VENDOR, "Apple Inc.")
 | |
| +		},
 | |
| +	},
 | |
| +	{}
 | |
| +};
 | |
| +#endif /*CONFIG_DMI*/
 | |
| +
 | |
|  static int __init i8042_init(void)
 | |
|  {
 | |
|  	struct platform_device *pdev;
 | |
| @@ -1547,6 +1563,12 @@ static int __init i8042_init(void)
 | |
|  
 | |
|  	dbg_init();
 | |
|  
 | |
| +#ifdef CONFIG_DMI
 | |
| +	/* Intel Apple Macs never have an i8042 controller */
 | |
| +	if (dmi_check_system(dmi_system_table) > 0)
 | |
| +		return -ENODEV;
 | |
| +#endif /*CONFIG_DMI*/
 | |
| +
 | |
|  	err = i8042_platform_init();
 | |
|  	if (err)
 | |
|  		return err;
 | |
| -- 
 | |
| 2.4.3
 | |
| 
 |