[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <94F2FBAB4432B54E8AACC7DFDE6C92E3B776DF31@ORSMSX108.amr.corp.intel.com>
Date: Wed, 16 May 2018 19:18:56 +0000
From: "Moore, Robert" <robert.moore@...el.com>
To: "Rafael J. Wysocki" <rjw@...ysocki.net>,
Linux ACPI <linux-acpi@...r.kernel.org>
CC: "Zhang, Rui" <rui.zhang@...el.com>,
Linux PM <linux-pm@...r.kernel.org>,
LKML <linux-kernel@...r.kernel.org>,
"Schmauss, Erik" <erik.schmauss@...el.com>,
"Wang, Wendy" <wendy.wang@...el.com>
Subject: RE: [PATCH 1/2] ACPICA: Introduce acpi_dispatch_gpe()
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
> -----Original Message-----
> From: Rafael J. Wysocki [mailto:rjw@...ysocki.net]
> Sent: Wednesday, May 16, 2018 5:12 AM
> To: Linux ACPI <linux-acpi@...r.kernel.org>
> Cc: Zhang, Rui <rui.zhang@...el.com>; Linux PM <linux-
> pm@...r.kernel.org>; LKML <linux-kernel@...r.kernel.org>; Schmauss, Erik
> <erik.schmauss@...el.com>; Moore, Robert <robert.moore@...el.com>; Wang,
> Wendy <wendy.wang@...el.com>
> Subject: [PATCH 1/2] ACPICA: Introduce acpi_dispatch_gpe()
>
> From: Rafael J. Wysocki <rafael.j.wysocki@...el.com>
>
> 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 <rafael.j.wysocki@...el.com>
> ---
> 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))
Powered by blists - more mailing lists