Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5279dee authored by Alexey Starikovskiy's avatar Alexey Starikovskiy Committed by Len Brown
Browse files

ACPI: EC: Add some basic check for ECDT data

One more ASUS comes with empty ECDT, add a guard for it...

http://bugzilla.kernel.org/show_bug.cgi?id=11880



Signed-off-by: default avatarAlexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent ed313489
Loading
Loading
Loading
Loading
+22 −21
Original line number Diff line number Diff line
@@ -977,7 +977,6 @@ static const struct acpi_device_id ec_device_ids[] = {

int __init acpi_ec_ecdt_probe(void)
{
	int ret;
	acpi_status status;
	struct acpi_table_ecdt *ecdt_ptr;

@@ -1005,7 +1004,11 @@ int __init acpi_ec_ecdt_probe(void)
		boot_ec->gpe = ecdt_ptr->gpe;
		boot_ec->handle = ACPI_ROOT_OBJECT;
		acpi_get_handle(ACPI_ROOT_OBJECT, ecdt_ptr->id, &boot_ec->handle);
	} else {
		/* Add some basic check against completely broken table */
		if (boot_ec->data_addr != boot_ec->command_addr)
			goto install;
	/* fall through */
	}
	/* This workaround is needed only on some broken machines,
	 * which require early EC, but fail to provide ECDT */
	acpi_handle x;
@@ -1021,10 +1024,8 @@ int __init acpi_ec_ecdt_probe(void)
	 */
	if (ACPI_FAILURE(acpi_get_handle(boot_ec->handle, "_INI", &x)))
		return -ENODEV;
	}

	ret = ec_install_handlers(boot_ec);
	if (!ret) {
install:
	if (!ec_install_handlers(boot_ec)) {
		first_ec = boot_ec;
		return 0;
	}