ACPICA: Add new GPE public interface - acpi_mark_gpe_for_wake.
ACPICA commit c49dbfed2bc069d0038ea7e1294409bfde7c2c8c Some potential callers of acpi_setup_gpe_for_wake may know in advance that there won't be any notify handlers installed for device wake notifications from the given GPE (one example is a button GPE in Linux). For these cases, acpi_mark_gpe_for_wake should be used instead of acpi_setup_gpe_for_wake. This will set the ACPI_GPE_CAN_WAKE flag for the GPE without trying to setup implicit wake notification for it (since there's no handler method). Rafael Wysocki. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
This commit is contained in:
parent
b9ca3d7b51
commit
c12f07d17c
|
@ -185,6 +185,53 @@ acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number)
|
||||||
ACPI_EXPORT_SYMBOL(acpi_disable_gpe)
|
ACPI_EXPORT_SYMBOL(acpi_disable_gpe)
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: acpi_mark_gpe_for_wake
|
||||||
|
*
|
||||||
|
* PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1
|
||||||
|
* gpe_number - GPE level within the GPE block
|
||||||
|
*
|
||||||
|
* RETURN: Status
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Mark a GPE as having the ability to wake the system. Simply
|
||||||
|
* sets the ACPI_GPE_CAN_WAKE flag.
|
||||||
|
*
|
||||||
|
* Some potential callers of acpi_setup_gpe_for_wake may know in advance that
|
||||||
|
* there won't be any notify handlers installed for device wake notifications
|
||||||
|
* from the given GPE (one example is a button GPE in Linux). For these cases,
|
||||||
|
* acpi_mark_gpe_for_wake should be used instead of acpi_setup_gpe_for_wake.
|
||||||
|
* This will set the ACPI_GPE_CAN_WAKE flag for the GPE without trying to
|
||||||
|
* setup implicit wake notification for it (since there's no handler method).
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
acpi_status acpi_mark_gpe_for_wake(acpi_handle gpe_device, u32 gpe_number)
|
||||||
|
{
|
||||||
|
struct acpi_gpe_event_info *gpe_event_info;
|
||||||
|
acpi_status status = AE_BAD_PARAMETER;
|
||||||
|
acpi_cpu_flags flags;
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE(acpi_mark_gpe_for_wake);
|
||||||
|
|
||||||
|
flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
|
||||||
|
|
||||||
|
/* Ensure that we have a valid GPE number */
|
||||||
|
|
||||||
|
gpe_event_info = acpi_ev_get_gpe_event_info(gpe_device, gpe_number);
|
||||||
|
if (gpe_event_info) {
|
||||||
|
|
||||||
|
/* Mark the GPE as a possible wake event */
|
||||||
|
|
||||||
|
gpe_event_info->flags |= ACPI_GPE_CAN_WAKE;
|
||||||
|
status = AE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
|
||||||
|
return_ACPI_STATUS(status);
|
||||||
|
}
|
||||||
|
|
||||||
|
ACPI_EXPORT_SYMBOL(acpi_mark_gpe_for_wake)
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: acpi_setup_gpe_for_wake
|
* FUNCTION: acpi_setup_gpe_for_wake
|
||||||
|
|
|
@ -674,6 +674,10 @@ ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
|
||||||
acpi_finish_gpe(acpi_handle gpe_device,
|
acpi_finish_gpe(acpi_handle gpe_device,
|
||||||
u32 gpe_number))
|
u32 gpe_number))
|
||||||
|
|
||||||
|
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
|
||||||
|
acpi_mark_gpe_for_wake(acpi_handle gpe_device,
|
||||||
|
u32 gpe_number))
|
||||||
|
|
||||||
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
|
ACPI_HW_DEPENDENT_RETURN_STATUS(acpi_status
|
||||||
acpi_setup_gpe_for_wake(acpi_handle
|
acpi_setup_gpe_for_wake(acpi_handle
|
||||||
parent_device,
|
parent_device,
|
||||||
|
|
Loading…
Reference in New Issue