The Satellite C670-10V has buggy implementation of the INFO method that causes ACPI exceptions when executed: ACPI Error: Result stack is empty! State=ffff88012d70f800 (20110413/dswstate-98) ACPI Exception: AE_AML_NO_RETURN_VALUE, Missing or null operand (20110413/dsutils-646) ACPI Exception: AE_AML_NO_RETURN_VALUE, While creating Arg 0 (20110413/dsutils-763) ACPI Error: Method parse/execution failed [\_SB_.VALZ.GETE] (Node ffff880131175eb0), AE_AML_NO_RETURN_VALUE (20110413/psparse-536) ACPI Error: Method parse/execution failed [\_SB_.VALZ.INFO] (Node ffff880131175ed8), AE_AML_NO_RETURN_VALUE (20110413/psparse-536) toshiba_acpi: ACPI INFO method execution failed toshiba_acpi: Failed to query hotkey event To work around this, add a blacklist of models with hotkey problems and add this model to that list. Signed-off-by: Seth Forshee <seth.forshee@xxxxxxxxxxxxx> --- drivers/platform/x86/toshiba_acpi.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index 6824bf7..a2f7cce 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -54,6 +54,7 @@ #include <linux/slab.h> #include <linux/workqueue.h> #include <linux/i8042.h> +#include <linux/dmi.h> #include <asm/uaccess.h> @@ -174,6 +175,18 @@ static const struct key_entry toshiba_acpi_keymap[] __devinitconst = { { KE_END, 0 }, }; +/* Machines for which hotkeys should not be enabled */ +static struct dmi_system_id __devinitdata toshiba_hotkey_blacklist[] = { + { + .ident = "Toshiba Satellite C670-10V", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE C670-10V"), + }, + }, + {} +}; + /* utility */ @@ -935,6 +948,11 @@ static int __devinit toshiba_acpi_setup_keyboard(struct toshiba_acpi_dev *dev) int error; u32 hci_result; + if (dmi_check_system(toshiba_hotkey_blacklist)) { + pr_info("Model has known hotkey problems, hotkeys will be disabled\n"); + return 0; + } + dev->hotkey_dev = input_allocate_device(); if (!dev->hotkey_dev) { pr_info("Unable to register input device\n"); -- 1.7.5.4 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html