ACPI: EC: Don't init EC early if it has no _INI
PATCH 1/1 ACPI: EC: Don't init EC early if it has no _INI
Option to init EC early inserted to handle #8598 ASUS problem, introduced several others.
EC driver in this particular case has fake _INI method, not present on other machines, which don't need or break from this workaround, so lets use its presence as a flag for early init.
Reference: http://bugzilla.kernel.org/show_bug.cgi?id=9262
Reference: http://bugzilla.kernel.org/show_bug.cgi?id=8598
Reference: https://bugzilla.novell.com/show_bug.cgi?id=334806
---
drivers/acpi/ec.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
drivers/acpi/ec.c +8 -0
@@ -881,12 +881,20 @@ int __init acpi_ec_ecdt_probe(void) boot_ec->gpe = ecdt_ptr->gpe; boot_ec->handle =ACPI_ROOT_OBJECT ; }else { +/* This workaround is needed only on some broken machines, +* which require early EC, but fail to provide ECDT */ +acpi_handle x; printk(KERN_DEBUG PREFIX "Look up EC in DSDT\n"); status =acpi_get_devices (ec_device_ids[0 ].id, ec_parse_device, boot_ec,NULL );/* Check that acpi_get_devices actually find something */ if (ACPI_FAILURE (status) || !boot_ec->handle) goto error; +/* We really need to limit this workaround, the only ASUS, +* which needs it, has fake EC._INI method, so use it as flag. +*/ +if (ACPI_FAILURE (acpi_get_handle (boot_ec->handle,"_INI" , &x))) + goto error; } ret =ec_install_handlers (boot_ec);
applied.
thanks,
-len
Quoted 46 lines · Alexey Starikovskiy
Option to init EC early inserted to handle #8598 ASUS problem, introduced several others.
EC driver in this particular case has fake_INImethod, not present on other machines, which don't need or break from this workaround, so lets use its presence as a flag for early init.Reference: http://bugzilla.kernel.org/show_bug.cgi?id=9262
Reference: http://bugzilla.kernel.org/show_bug.cgi?id=8598
Reference: https://bugzilla.novell.com/show_bug.cgi?id=334806Signed-off-by Alexey Starikovskiy <[email protected]>---
drivers/acpi/ec.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)drivers/acpi/ec.c +8
-1@@ -881,12 +881,20 @@ int __init acpi_ec_ecdt_probe(void) boot_ec->gpe = ecdt_ptr->gpe; boot_ec->handle =ACPI_ROOT_OBJECT ; }else { +/* This workaround is needed only on some broken machines, +* which require early EC, but fail to provide ECDT */ +acpi_handle x; printk(KERN_DEBUG PREFIX "Look up EC in DSDT\n"); status =acpi_get_devices (ec_device_ids[0 ].id, ec_parse_device, boot_ec,NULL );/* Check that acpi_get_devices actually find something */ if (ACPI_FAILURE (status) || !boot_ec->handle) goto error; +/* We really need to limit this workaround, the only ASUS, +* which needs it, has fake EC._INI method, so use it as flag. +*/ +if (ACPI_FAILURE (acpi_get_handle (boot_ec->handle,"_INI" , &x))) + goto error; } ret =ec_install_handlers (boot_ec); -To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html