aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/ec.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 06b78e5e33a1..56afe13af592 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -881,12 +881,20 @@ int __init acpi_ec_ecdt_probe(void)
881 boot_ec->gpe = ecdt_ptr->gpe; 881 boot_ec->gpe = ecdt_ptr->gpe;
882 boot_ec->handle = ACPI_ROOT_OBJECT; 882 boot_ec->handle = ACPI_ROOT_OBJECT;
883 } else { 883 } else {
884 /* This workaround is needed only on some broken machines,
885 * which require early EC, but fail to provide ECDT */
886 acpi_handle x;
884 printk(KERN_DEBUG PREFIX "Look up EC in DSDT\n"); 887 printk(KERN_DEBUG PREFIX "Look up EC in DSDT\n");
885 status = acpi_get_devices(ec_device_ids[0].id, ec_parse_device, 888 status = acpi_get_devices(ec_device_ids[0].id, ec_parse_device,
886 boot_ec, NULL); 889 boot_ec, NULL);
887 /* Check that acpi_get_devices actually find something */ 890 /* Check that acpi_get_devices actually find something */
888 if (ACPI_FAILURE(status) || !boot_ec->handle) 891 if (ACPI_FAILURE(status) || !boot_ec->handle)
889 goto error; 892 goto error;
893 /* We really need to limit this workaround, the only ASUS,
894 * which needs it, has fake EC._INI method, so use it as flag.
895 */
896 if (ACPI_FAILURE(acpi_get_handle(boot_ec->handle, "_INI", &x)))
897 goto error;
890 } 898 }
891 899
892 ret = ec_install_handlers(boot_ec); 900 ret = ec_install_handlers(boot_ec);