···10511051 * Maybe EC region is required at bus_scan/acpi_get_devices. So it10521052 * is necessary to enable it as early as possible.10531053 */10541054- acpi_boot_ec_enable();10541054+ acpi_ec_dsdt_probe();1055105510561056 printk(KERN_INFO PREFIX "Interpreter enabled\n");10571057
+22-7
drivers/acpi/ec.c
···14461446 return AE_OK;14471447}1448144814491449-int __init acpi_boot_ec_enable(void)14491449+static const struct acpi_device_id ec_device_ids[] = {14501450+ {"PNP0C09", 0},14511451+ {"", 0},14521452+};14531453+14541454+int __init acpi_ec_dsdt_probe(void)14501455{14511451- if (!boot_ec)14561456+ acpi_status status;14571457+14581458+ if (boot_ec)14521459 return 0;14601460+14611461+ /*14621462+ * Finding EC from DSDT if there is no ECDT EC available. When this14631463+ * function is invoked, ACPI tables have been fully loaded, we can14641464+ * walk namespace now.14651465+ */14661466+ boot_ec = make_acpi_ec();14671467+ if (!boot_ec)14681468+ return -ENOMEM;14691469+ status = acpi_get_devices(ec_device_ids[0].id,14701470+ ec_parse_device, boot_ec, NULL);14711471+ if (ACPI_FAILURE(status) || !boot_ec->handle)14721472+ return -ENODEV;14531473 if (!ec_install_handlers(boot_ec)) {14541474 first_ec = boot_ec;14551475 return 0;14561476 }14571477 return -EFAULT;14581478}14591459-14601460-static const struct acpi_device_id ec_device_ids[] = {14611461- {"PNP0C09", 0},14621462- {"", 0},14631463-};1464147914651480#if 014661481/*