From 02b99f94275d3a68c8ccc0a79a6da9a6563e6a7c Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Tue, 14 Aug 2007 09:30:42 -0700 Subject: [PATCH] --- yaml --- r: 63989 b: refs/heads/master c: c4e7ac5d427a48b91752671523f39a04e63e12ff h: refs/heads/master i: 63987: 2445b61b3187d860fab76ed60e3e4732cfecb62e v: v3 --- [refs] | 2 +- trunk/drivers/acpi/ec.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 0d4c54578025..0de00289b5f0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ce57a02c64052c3f1c62f30a902a937e6c316d88 +refs/heads/master: c4e7ac5d427a48b91752671523f39a04e63e12ff diff --git a/trunk/drivers/acpi/ec.c b/trunk/drivers/acpi/ec.c index 2300d81bbc4e..56bee9e065cf 100644 --- a/trunk/drivers/acpi/ec.c +++ b/trunk/drivers/acpi/ec.c @@ -651,6 +651,19 @@ static struct acpi_ec *make_acpi_ec(void) return ec; } +static acpi_status +acpi_ec_register_query_methods(acpi_handle handle, u32 level, + void *context, void **return_value) +{ + struct acpi_namespace_node *node = handle; + struct acpi_ec *ec = context; + int value = 0; + if (sscanf(node->name.ascii, "_Q%x", &value) == 1) { + acpi_ec_add_query_handler(ec, value, handle, NULL, NULL); + } + return AE_OK; +} + static acpi_status ec_parse_device(acpi_handle handle, u32 Level, void *context, void **retval) { @@ -668,6 +681,10 @@ ec_parse_device(acpi_handle handle, u32 Level, void *context, void **retval) if (ACPI_FAILURE(status)) return status; + /* Find and register all query methods */ + acpi_walk_namespace(ACPI_TYPE_METHOD, handle, 1, + acpi_ec_register_query_methods, ec, NULL); + /* Use the global lock for all EC transactions? */ acpi_evaluate_integer(handle, "_GLK", NULL, &ec->global_lock);