Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 779ba5a3 authored by Lv Zheng's avatar Lv Zheng Committed by Rafael J. Wysocki
Browse files

ACPICA: Events: Cleanup to move acpi_gbl_global_event_handler invocation out...

ACPICA: Events: Cleanup to move acpi_gbl_global_event_handler invocation out of acpi_ev_gpe_dispatch()

ACPICA commit 04f25acdd4f655ae33f83de789bb5f4b7790171c

This patch follows acpi_ev_fixed_event_detect(), which invokes
acpi_gbl_global_event_handler instead of invoking it in
acpi_ev_fixed_event_dispatch(), moves acpi_gbl_global_event_handler from
acpi_ev_gpe_dispatch() to acpi_ev_gpe_detect(). This makes further cleanups
around acpi_ev_gpe_dispatch() simpler. Lv Zheng.

Link: https://github.com/acpica/acpica/commit/04f25acd


Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarDavid E. Box <david.e.box@linux.intel.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent c539251e
Loading
Loading
Loading
Loading
+26 −13
Original line number Original line Diff line number Diff line
@@ -328,7 +328,10 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list)
{
{
	acpi_status status;
	acpi_status status;
	struct acpi_gpe_block_info *gpe_block;
	struct acpi_gpe_block_info *gpe_block;
	struct acpi_namespace_node *gpe_device;
	struct acpi_gpe_register_info *gpe_register_info;
	struct acpi_gpe_register_info *gpe_register_info;
	struct acpi_gpe_event_info *gpe_event_info;
	u32 gpe_number;
	u32 int_status = ACPI_INTERRUPT_NOT_HANDLED;
	u32 int_status = ACPI_INTERRUPT_NOT_HANDLED;
	u8 enabled_status_byte;
	u8 enabled_status_byte;
	u32 status_reg;
	u32 status_reg;
@@ -356,6 +359,8 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list)


	gpe_block = gpe_xrupt_list->gpe_block_list_head;
	gpe_block = gpe_xrupt_list->gpe_block_list_head;
	while (gpe_block) {
	while (gpe_block) {
		gpe_device = gpe_block->node;

		/*
		/*
		 * Read all of the 8-bit GPE status and enable registers in this GPE
		 * Read all of the 8-bit GPE status and enable registers in this GPE
		 * block, saving all of them. Find all currently active GP events.
		 * block, saving all of them. Find all currently active GP events.
@@ -431,16 +436,33 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list)


				/* Examine one GPE bit */
				/* Examine one GPE bit */


				gpe_event_info =
				    &gpe_block->
				    event_info[((acpi_size) i *
						ACPI_GPE_REGISTER_WIDTH) + j];
				gpe_number =
				    j + gpe_register_info->base_gpe_number;

				if (enabled_status_byte & (1 << j)) {
				if (enabled_status_byte & (1 << j)) {

					/* Invoke global event handler if present */

					acpi_gpe_count++;
					if (acpi_gbl_global_event_handler) {
						acpi_gbl_global_event_handler
						    (ACPI_EVENT_TYPE_GPE,
						     gpe_device, gpe_number,
						     acpi_gbl_global_event_handler_context);
					}

					/*
					/*
					 * Found an active GPE. Dispatch the event to a handler
					 * Found an active GPE. Dispatch the event to a handler
					 * or method.
					 * or method.
					 */
					 */
					int_status |=
					int_status |=
					    acpi_ev_gpe_dispatch(gpe_block->
					    acpi_ev_gpe_dispatch(gpe_device,
								 node,
								 gpe_event_info,
								 &gpe_block->
								 gpe_number);
								 event_info[((acpi_size) i * ACPI_GPE_REGISTER_WIDTH) + j], j + gpe_register_info->base_gpe_number);
				}
				}
			}
			}
		}
		}
@@ -645,15 +667,6 @@ acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device,


	ACPI_FUNCTION_TRACE(ev_gpe_dispatch);
	ACPI_FUNCTION_TRACE(ev_gpe_dispatch);


	/* Invoke global event handler if present */

	acpi_gpe_count++;
	if (acpi_gbl_global_event_handler) {
		acpi_gbl_global_event_handler(ACPI_EVENT_TYPE_GPE, gpe_device,
					      gpe_number,
					      acpi_gbl_global_event_handler_context);
	}

	/*
	/*
	 * Always disable the GPE so that it does not keep firing before
	 * Always disable the GPE so that it does not keep firing before
	 * any asynchronous activity completes (either from the execution
	 * any asynchronous activity completes (either from the execution