forked from mirrors/linux
		
	ACPI / bus: Parse tables as term_list for Dell XPS 9570 and Precision M5530
The i2c touchpad on Dell XPS 9570 and Precision M5530 doesn't work out of box. The touchpad relies on its _INI method to update its _HID value from XXXX0000 to SYNA2393. Also, the _STA relies on value of I2CN to report correct status. Set acpi_gbl_parse_table_as_term_list so the value of I2CN can be correctly set up, and _INI can get run. The ACPI table in this machine is designed to get parsed this way. Also, change the quirk table to a more generic name. Link: https://bugzilla.kernel.org/show_bug.cgi?id=198515 Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
		
							parent
							
								
									63347db0af
								
							
						
					
					
						commit
						36904703ae
					
				
					 1 changed files with 31 additions and 7 deletions
				
			
		|  | @ -66,10 +66,37 @@ static int set_copy_dsdt(const struct dmi_system_id *id) | |||
| 	return 0; | ||||
| } | ||||
| #endif | ||||
| static int set_gbl_term_list(const struct dmi_system_id *id) | ||||
| { | ||||
| 	acpi_gbl_parse_table_as_term_list = 1; | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static const struct dmi_system_id dsdt_dmi_table[] __initconst = { | ||||
| static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = { | ||||
| 	/*
 | ||||
| 	 * Touchpad on Dell XPS 9570/Precision M5530 doesn't work under I2C | ||||
| 	 * mode. | ||||
| 	 * https://bugzilla.kernel.org/show_bug.cgi?id=198515
 | ||||
| 	 */ | ||||
| 	{ | ||||
| 		.callback = set_gbl_term_list, | ||||
| 		.ident = "Dell Precision M5530", | ||||
| 		.matches = { | ||||
| 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||||
| 			DMI_MATCH(DMI_PRODUCT_NAME, "Precision M5530"), | ||||
| 		}, | ||||
| 	}, | ||||
| 	{ | ||||
| 		.callback = set_gbl_term_list, | ||||
| 		.ident = "Dell XPS 15 9570", | ||||
| 		.matches = { | ||||
| 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||||
| 			DMI_MATCH(DMI_PRODUCT_NAME, "XPS 15 9570"), | ||||
| 		}, | ||||
| 	}, | ||||
| 	/*
 | ||||
| 	 * Invoke DSDT corruption work-around on all Toshiba Satellite. | ||||
| 	 * DSDT will be copied to memory. | ||||
| 	 * https://bugzilla.kernel.org/show_bug.cgi?id=14679
 | ||||
| 	 */ | ||||
| 	{ | ||||
|  | @ -83,7 +110,7 @@ static const struct dmi_system_id dsdt_dmi_table[] __initconst = { | |||
| 	{} | ||||
| }; | ||||
| #else | ||||
| static const struct dmi_system_id dsdt_dmi_table[] __initconst = { | ||||
| static const struct dmi_system_id acpi_quirks_dmi_table[] __initconst = { | ||||
| 	{} | ||||
| }; | ||||
| #endif | ||||
|  | @ -1008,11 +1035,8 @@ void __init acpi_early_init(void) | |||
| 
 | ||||
| 	acpi_permanent_mmap = true; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * If the machine falls into the DMI check table, | ||||
| 	 * DSDT will be copied to memory | ||||
| 	 */ | ||||
| 	dmi_check_system(dsdt_dmi_table); | ||||
| 	/* Check machine-specific quirks */ | ||||
| 	dmi_check_system(acpi_quirks_dmi_table); | ||||
| 
 | ||||
| 	status = acpi_reallocate_root_table(); | ||||
| 	if (ACPI_FAILURE(status)) { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Kai Heng Feng
						Kai Heng Feng