From 9348604f45c89bc624f27d6105b02979dfa97c79 Mon Sep 17 00:00:00 2001 From: Zhang Rui Date: Wed, 19 Dec 2018 22:26:17 +0800 Subject: [PATCH] Run EC _REG Signe-off-by: Zhang Rui --- drivers/acpi/acpica/acevents.h | 4 ++-- drivers/acpi/acpica/evhandler.c | 8 ++++---- drivers/acpi/acpica/evregion.c | 9 +++++++-- drivers/acpi/acpica/nseval.c | 1 + 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/acpi/acpica/acevents.h b/drivers/acpi/acpica/acevents.h index b412aa9..2f43ab0 100644 --- a/drivers/acpi/acpica/acevents.h +++ b/drivers/acpi/acpica/acevents.h @@ -155,8 +155,8 @@ union acpi_operand_object *acpi_ev_find_region_handler(acpi_adr_space_type *handler_obj); u8 -acpi_ev_has_default_handler(struct acpi_namespace_node *node, - acpi_adr_space_type space_id); +acpi_ev_has_handler(struct acpi_namespace_node *node, + acpi_adr_space_type space_id, bool default_handler); acpi_status acpi_ev_install_region_handlers(void); diff --git a/drivers/acpi/acpica/evhandler.c b/drivers/acpi/acpica/evhandler.c index d319ee3..8a36df7 100644 --- a/drivers/acpi/acpica/evhandler.c +++ b/drivers/acpi/acpica/evhandler.c @@ -115,8 +115,8 @@ acpi_status acpi_ev_install_region_handlers(void) ******************************************************************************/ u8 -acpi_ev_has_default_handler(struct acpi_namespace_node *node, - acpi_adr_space_type space_id) +acpi_ev_has_handler(struct acpi_namespace_node *node, + acpi_adr_space_type space_id, bool default_handler) { union acpi_operand_object *obj_desc; union acpi_operand_object *handler_obj; @@ -131,8 +131,8 @@ acpi_ev_has_default_handler(struct acpi_namespace_node *node, while (handler_obj) { if (handler_obj->address_space.space_id == space_id) { - if (handler_obj->address_space.handler_flags & - ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) { + if (!default_handler || (handler_obj->address_space.handler_flags & + ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { return (TRUE); } } diff --git a/drivers/acpi/acpica/evregion.c b/drivers/acpi/acpica/evregion.c index 49decca..5eb7022 100644 --- a/drivers/acpi/acpica/evregion.c +++ b/drivers/acpi/acpica/evregion.c @@ -60,15 +60,19 @@ acpi_status acpi_ev_initialize_op_regions(void) * default, the _REG methods will have already been run (when the * handler was installed) */ - if (acpi_ev_has_default_handler(acpi_gbl_root_node, + if (acpi_ev_has_handler(acpi_gbl_root_node, acpi_gbl_default_address_spaces - [i])) { + [i], true)) { acpi_ev_execute_reg_methods(acpi_gbl_root_node, acpi_gbl_default_address_spaces [i], ACPI_REG_CONNECT); } } + /* Run the _REG methods for EC Operation Region */ + if (acpi_ev_has_handler(acpi_gbl_root_node, ACPI_ADR_SPACE_EC, false)) + acpi_ev_execute_reg_methods(acpi_gbl_root_node, ACPI_ADR_SPACE_EC, ACPI_REG_CONNECT); + (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE); return_ACPI_STATUS(status); } @@ -754,6 +758,7 @@ acpi_ev_reg_run(acpi_handle obj_handle, } info->reg_run_count++; + acpi_os_printf("Rui: Address space %d runs for %d times\n", info->space_id, info->reg_run_count); status = acpi_ev_execute_reg_method(obj_desc, info->function); return (status); } diff --git a/drivers/acpi/acpica/nseval.c b/drivers/acpi/acpica/nseval.c index 64ba80e..594f5df 100644 --- a/drivers/acpi/acpica/nseval.c +++ b/drivers/acpi/acpica/nseval.c @@ -186,6 +186,7 @@ acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info) goto cleanup; } + acpi_os_printf("Rui: **** Exec method [%s] ****\n", info->full_pathname); ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "**** Execute method [%s] at AML address %p length %X\n", info->full_pathname, -- 2.7.4