forked from rpms/kernel
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 2a79554c864ac58fa2ad982f0fcee2cc2aa33eb5 Mon Sep 17 00:00:00 2001
 | |
| From: Bastien Nocera <hadess@hadess.net>
 | |
| Date: Thu, 20 May 2010 10:30:31 -0400
 | |
| Subject: Disable i8042 checks on Intel Apple Macs
 | |
| 
 | |
| 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
 | |
| 
 | |
| Signed-off-by: Bastien Nocera <hadess@hadess.net>
 | |
| ---
 | |
|  drivers/input/serio/i8042.c |   22 ++++++++++++++++++++++
 | |
|  1 files changed, 22 insertions(+), 0 deletions(-)
 | |
| 
 | |
| diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
 | |
| index 6440a8f..4d7cf98 100644
 | |
| --- a/drivers/input/serio/i8042.c
 | |
| +++ b/drivers/input/serio/i8042.c
 | |
| @@ -1451,6 +1451,22 @@ static struct platform_driver i8042_driver = {
 | |
|  	.shutdown	= i8042_shutdown,
 | |
|  };
 | |
|  
 | |
| +#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;
 | |
| @@ -1458,6 +1474,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;
 | |
| -- 
 | |
| 1.7.0.1
 | |
| 
 |