Thread (10 messages) 10 messages, 5 authors, 2018-05-25

RE: [PATCH 1/2] ACPICA: Introduce acpi_dispatch_gpe()

From: Moore, Robert <hidden>
Date: 2018-05-16 19:19:00
Also in: linux-acpi, lkml

I'm not sure why this is necessary, please explain.

Is the implication here that some driver is going to poll on acpi_dispatch_gpe?

Bob

quoted hunk ↗ jump to hunk
-----Original Message-----
From: Rafael J. Wysocki [mailto:rjw@rjwysocki.net]
Sent: Wednesday, May 16, 2018 5:12 AM
To: Linux ACPI <redacted>
Cc: Zhang, Rui <rui.zhang@intel.com>; Linux PM <linux-
pm@vger.kernel.org>; LKML [off-list ref]; Schmauss, Erik
[off-list ref]; Moore, Robert [off-list ref]; Wang,
Wendy [off-list ref]
Subject: [PATCH 1/2] ACPICA: Introduce acpi_dispatch_gpe()

From: Rafael J. Wysocki <redacted>

Introduce acpi_dispatch_gpe() as a wrapper around acpi_ev_detect_gpe()
for checking if the given GPE (as represented by a GPE device handle and
a GPE number) is currently active and dispatching it (if that's the
case) outside of interrupt context.

Signed-off-by: Rafael J. Wysocki <redacted>
---
 drivers/acpi/acpica/evgpe.c   |    6 ++++++
 drivers/acpi/acpica/evxfgpe.c |   22 ++++++++++++++++++++++
 include/acpi/acpixf.h         |    1 +
 3 files changed, 29 insertions(+)

Index: linux-pm/drivers/acpi/acpica/evgpe.c
===================================================================
--- linux-pm.orig/drivers/acpi/acpica/evgpe.c
+++ linux-pm/drivers/acpi/acpica/evgpe.c
@@ -634,6 +634,12 @@ acpi_ev_detect_gpe(struct acpi_namespace

 	flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);

+	if (!gpe_event_info) {
+		gpe_event_info = acpi_ev_get_gpe_event_info(gpe_device,
gpe_number);
+		if (!gpe_event_info)
+			goto error_exit;
+	}
+
 	/* Get the info block for the entire GPE register */

 	gpe_register_info = gpe_event_info->register_info;
Index: linux-pm/drivers/acpi/acpica/evxfgpe.c
===================================================================
--- linux-pm.orig/drivers/acpi/acpica/evxfgpe.c
+++ linux-pm/drivers/acpi/acpica/evxfgpe.c
@@ -639,6 +639,28 @@ ACPI_EXPORT_SYMBOL(acpi_get_gpe_status)

/***********************************************************************
********
  *
+ * FUNCTION:    acpi_gispatch_gpe
+ *
+ * PARAMETERS:  gpe_device          - Parent GPE Device. NULL for
GPE0/GPE1
+ *              gpe_number          - GPE level within the GPE block
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Detect and dispatch a General Purpose Event to either a
function
+ *              (e.g. EC) or method (e.g. _Lxx/_Exx) handler.
+ *
+
+***********************************************************************
+*******/ void acpi_dispatch_gpe(acpi_handle gpe_device, u32 gpe_number)
+{
+	ACPI_FUNCTION_TRACE(acpi_dispatch_gpe);
+
+	acpi_ev_detect_gpe(gpe_device, NULL, gpe_number); }
+
+ACPI_EXPORT_SYMBOL(acpi_dispatch_gpe)
+
+/**********************************************************************
+*********
+ *
  * FUNCTION:    acpi_finish_gpe
  *
  * PARAMETERS:  gpe_device          - Namespace node for the GPE Block
Index: linux-pm/include/acpi/acpixf.h
===================================================================
--- linux-pm.orig/include/acpi/acpixf.h
+++ linux-pm/include/acpi/acpixf.h
@@ -753,6 +753,7 @@ ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_sta
 						     u32 gpe_number,
 						     acpi_event_status
 						     *event_status))
+void acpi_dispatch_gpe(acpi_handle gpe_device, u32 gpe_number);
 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
acpi_disable_all_gpes(void))
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
acpi_enable_all_runtime_gpes(void))
 ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
acpi_enable_all_wakeup_gpes(void))
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help