Commit a44061aa authored by Rafael J. Wysocki's avatar Rafael J. Wysocki Committed by Len Brown

ACPICA: Remove wakeup GPE reference counting which is not used

After the previous patch that introduced acpi_gpe_wakeup() and
modified the ACPI suspend and wakeup code to use it, the third
argument of acpi_{enable|disable}_gpe() and the GPE wakeup
reference counter are not necessary any more.  Remove them and
modify all of the users of acpi_{enable|disable}_gpe()
accordingly.  Also drop GPE type constants that aren't used
any more.
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent e8b6f970
...@@ -78,7 +78,7 @@ acpi_ev_queue_notify_request(struct acpi_namespace_node *node, ...@@ -78,7 +78,7 @@ acpi_ev_queue_notify_request(struct acpi_namespace_node *node,
u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list); u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list);
acpi_status acpi_status
acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info); acpi_ev_update_gpe_enable_mask(struct acpi_gpe_event_info *gpe_event_info);
struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device, struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device,
u32 gpe_number); u32 gpe_number);
......
...@@ -429,7 +429,6 @@ struct acpi_gpe_event_info { ...@@ -429,7 +429,6 @@ struct acpi_gpe_event_info {
u8 flags; /* Misc info about this GPE */ u8 flags; /* Misc info about this GPE */
u8 gpe_number; /* This GPE */ u8 gpe_number; /* This GPE */
u8 runtime_count; /* References to a run GPE */ u8 runtime_count; /* References to a run GPE */
u8 wakeup_count; /* References to a wake GPE */
}; };
/* Information about a GPE register pair, one per each status/enable pair in an array */ /* Information about a GPE register pair, one per each status/enable pair in an array */
......
...@@ -54,24 +54,24 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context); ...@@ -54,24 +54,24 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context);
/******************************************************************************* /*******************************************************************************
* *
* FUNCTION: acpi_ev_update_gpe_enable_masks * FUNCTION: acpi_ev_update_gpe_enable_mask
* *
* PARAMETERS: gpe_event_info - GPE to update * PARAMETERS: gpe_event_info - GPE to update
* *
* RETURN: Status * RETURN: Status
* *
* DESCRIPTION: Updates GPE register enable masks based upon whether there are * DESCRIPTION: Updates GPE register enable mask based upon whether there are
* references (either wake or run) to this GPE * runtime references to this GPE
* *
******************************************************************************/ ******************************************************************************/
acpi_status acpi_status
acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info) acpi_ev_update_gpe_enable_mask(struct acpi_gpe_event_info *gpe_event_info)
{ {
struct acpi_gpe_register_info *gpe_register_info; struct acpi_gpe_register_info *gpe_register_info;
u32 register_bit; u32 register_bit;
ACPI_FUNCTION_TRACE(ev_update_gpe_enable_masks); ACPI_FUNCTION_TRACE(ev_update_gpe_enable_mask);
gpe_register_info = gpe_event_info->register_info; gpe_register_info = gpe_event_info->register_info;
if (!gpe_register_info) { if (!gpe_register_info) {
...@@ -81,19 +81,14 @@ acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info) ...@@ -81,19 +81,14 @@ acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info)
register_bit = acpi_hw_get_gpe_register_bit(gpe_event_info, register_bit = acpi_hw_get_gpe_register_bit(gpe_event_info,
gpe_register_info); gpe_register_info);
/* Clear the wake/run bits up front */ /* Clear the run bit up front */
ACPI_CLEAR_BIT(gpe_register_info->enable_for_wake, register_bit);
ACPI_CLEAR_BIT(gpe_register_info->enable_for_run, register_bit); ACPI_CLEAR_BIT(gpe_register_info->enable_for_run, register_bit);
/* Set the mask bits only if there are references to this GPE */ /* Set the mask bit only if there are references to this GPE */
if (gpe_event_info->runtime_count) { if (gpe_event_info->runtime_count) {
ACPI_SET_BIT(gpe_register_info->enable_for_run, register_bit); ACPI_SET_BIT(gpe_register_info->enable_for_run, (u8)register_bit);
}
if (gpe_event_info->wakeup_count) {
ACPI_SET_BIT(gpe_register_info->enable_for_wake, register_bit);
} }
return_ACPI_STATUS(AE_OK); return_ACPI_STATUS(AE_OK);
......
...@@ -529,8 +529,7 @@ acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device, ...@@ -529,8 +529,7 @@ acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
/* Enable this GPE */ /* Enable this GPE */
status = acpi_enable_gpe(gpe_device, gpe_number, status = acpi_enable_gpe(gpe_device, gpe_number);
ACPI_GPE_TYPE_RUNTIME);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_EXCEPTION((AE_INFO, status, ACPI_EXCEPTION((AE_INFO, status,
"Could not enable GPE 0x%02X", "Could not enable GPE 0x%02X",
......
...@@ -482,8 +482,7 @@ acpi_ev_match_gpe_method(acpi_handle obj_handle, ...@@ -482,8 +482,7 @@ acpi_ev_match_gpe_method(acpi_handle obj_handle,
gpe_device = NULL; gpe_device = NULL;
} }
status = acpi_enable_gpe(gpe_device, gpe_number, status = acpi_enable_gpe(gpe_device, gpe_number);
ACPI_GPE_TYPE_RUNTIME);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_EXCEPTION((AE_INFO, status, ACPI_EXCEPTION((AE_INFO, status,
"Could not enable GPE 0x%02X", "Could not enable GPE 0x%02X",
......
...@@ -352,12 +352,13 @@ acpi_status acpi_gpe_wakeup(acpi_handle gpe_device, u32 gpe_number, u8 action) ...@@ -352,12 +352,13 @@ acpi_status acpi_gpe_wakeup(acpi_handle gpe_device, u32 gpe_number, u8 action)
switch (action) { switch (action) {
case ACPI_GPE_ENABLE: case ACPI_GPE_ENABLE:
ACPI_SET_BIT(gpe_register_info->enable_for_wake, register_bit); ACPI_SET_BIT(gpe_register_info->enable_for_wake,
(u8)register_bit);
break; break;
case ACPI_GPE_DISABLE: case ACPI_GPE_DISABLE:
ACPI_CLEAR_BIT(gpe_register_info->enable_for_wake, ACPI_CLEAR_BIT(gpe_register_info->enable_for_wake,
register_bit); (u8)register_bit);
break; break;
default: default:
...@@ -379,17 +380,14 @@ ACPI_EXPORT_SYMBOL(acpi_gpe_wakeup) ...@@ -379,17 +380,14 @@ ACPI_EXPORT_SYMBOL(acpi_gpe_wakeup)
* *
* PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1 * PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1
* gpe_number - GPE level within the GPE block * gpe_number - GPE level within the GPE block
* gpe_type - ACPI_GPE_TYPE_RUNTIME or ACPI_GPE_TYPE_WAKE
* or both
* *
* RETURN: Status * RETURN: Status
* *
* DESCRIPTION: Add a reference to a GPE. On the first reference, the GPE is * DESCRIPTION: Add a reference to a GPE. On the first reference, the GPE is
* hardware-enabled (for runtime GPEs), or the GPE register mask * hardware-enabled.
* is updated (for wake GPEs).
* *
******************************************************************************/ ******************************************************************************/
acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type) acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number)
{ {
acpi_status status = AE_OK; acpi_status status = AE_OK;
struct acpi_gpe_event_info *gpe_event_info; struct acpi_gpe_event_info *gpe_event_info;
...@@ -397,12 +395,6 @@ acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type) ...@@ -397,12 +395,6 @@ acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type)
ACPI_FUNCTION_TRACE(acpi_enable_gpe); ACPI_FUNCTION_TRACE(acpi_enable_gpe);
/* Parameter validation */
if (!gpe_type || (gpe_type & ~ACPI_GPE_TYPE_WAKE_RUN)) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock); flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
/* Ensure that we have a valid GPE number */ /* Ensure that we have a valid GPE number */
...@@ -413,46 +405,19 @@ acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type) ...@@ -413,46 +405,19 @@ acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type)
goto unlock_and_exit; goto unlock_and_exit;
} }
if (gpe_type & ACPI_GPE_TYPE_RUNTIME) { if (gpe_event_info->runtime_count == ACPI_UINT8_MAX) {
if (gpe_event_info->runtime_count == ACPI_UINT8_MAX) { status = AE_LIMIT; /* Too many references */
status = AE_LIMIT; /* Too many references */ goto unlock_and_exit;
goto unlock_and_exit;
}
gpe_event_info->runtime_count++;
if (gpe_event_info->runtime_count == 1) {
status = acpi_ev_update_gpe_enable_masks(gpe_event_info);
if (ACPI_SUCCESS(status)) {
status = acpi_clear_and_enable_gpe(gpe_event_info);
}
if (ACPI_FAILURE(status)) {
gpe_event_info->runtime_count--;
goto unlock_and_exit;
}
}
} }
if (gpe_type & ACPI_GPE_TYPE_WAKE) { gpe_event_info->runtime_count++;
/* The GPE must have the ability to wake the system */ if (gpe_event_info->runtime_count == 1) {
status = acpi_ev_update_gpe_enable_mask(gpe_event_info);
if (!(gpe_event_info->flags & ACPI_GPE_CAN_WAKE)) { if (ACPI_SUCCESS(status)) {
status = AE_TYPE; status = acpi_clear_and_enable_gpe(gpe_event_info);
goto unlock_and_exit;
}
if (gpe_event_info->wakeup_count == ACPI_UINT8_MAX) {
status = AE_LIMIT; /* Too many references */
goto unlock_and_exit;
} }
if (ACPI_FAILURE(status)) {
/* gpe_event_info->runtime_count--;
* Update the enable mask on the first wakeup reference. Wake GPEs
* are only hardware-enabled just before sleeping.
*/
gpe_event_info->wakeup_count++;
if (gpe_event_info->wakeup_count == 1) {
status = acpi_ev_update_gpe_enable_masks(gpe_event_info);
} }
} }
...@@ -468,8 +433,6 @@ ACPI_EXPORT_SYMBOL(acpi_enable_gpe) ...@@ -468,8 +433,6 @@ ACPI_EXPORT_SYMBOL(acpi_enable_gpe)
* *
* PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1 * PARAMETERS: gpe_device - Parent GPE Device. NULL for GPE0/GPE1
* gpe_number - GPE level within the GPE block * gpe_number - GPE level within the GPE block
* gpe_type - ACPI_GPE_TYPE_RUNTIME or ACPI_GPE_TYPE_WAKE
* or both
* *
* RETURN: Status * RETURN: Status
* *
...@@ -478,7 +441,7 @@ ACPI_EXPORT_SYMBOL(acpi_enable_gpe) ...@@ -478,7 +441,7 @@ ACPI_EXPORT_SYMBOL(acpi_enable_gpe)
* the GPE mask bit disabled (for wake GPEs) * the GPE mask bit disabled (for wake GPEs)
* *
******************************************************************************/ ******************************************************************************/
acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type) acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number)
{ {
acpi_status status = AE_OK; acpi_status status = AE_OK;
struct acpi_gpe_event_info *gpe_event_info; struct acpi_gpe_event_info *gpe_event_info;
...@@ -486,12 +449,6 @@ acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type ...@@ -486,12 +449,6 @@ acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type
ACPI_FUNCTION_TRACE(acpi_disable_gpe); ACPI_FUNCTION_TRACE(acpi_disable_gpe);
/* Parameter validation */
if (!gpe_type || (gpe_type & ~ACPI_GPE_TYPE_WAKE_RUN)) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
}
flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock); flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
/* Ensure that we have a valid GPE number */ /* Ensure that we have a valid GPE number */
...@@ -504,41 +461,21 @@ acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type ...@@ -504,41 +461,21 @@ acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type
/* Hardware-disable a runtime GPE on removal of the last reference */ /* Hardware-disable a runtime GPE on removal of the last reference */
if (gpe_type & ACPI_GPE_TYPE_RUNTIME) { if (!gpe_event_info->runtime_count) {
if (!gpe_event_info->runtime_count) { status = AE_LIMIT; /* There are no references to remove */
status = AE_LIMIT; /* There are no references to remove */ goto unlock_and_exit;
goto unlock_and_exit;
}
gpe_event_info->runtime_count--;
if (!gpe_event_info->runtime_count) {
status = acpi_ev_update_gpe_enable_masks(gpe_event_info);
if (ACPI_SUCCESS(status)) {
status = acpi_hw_low_set_gpe(gpe_event_info,
ACPI_GPE_DISABLE);
}
if (ACPI_FAILURE(status)) {
gpe_event_info->runtime_count++;
goto unlock_and_exit;
}
}
} }
/* gpe_event_info->runtime_count--;
* Update masks for wake GPE on removal of the last reference. if (!gpe_event_info->runtime_count) {
* No need to hardware-disable wake GPEs here, they are not currently status = acpi_ev_update_gpe_enable_mask(gpe_event_info);
* enabled. if (ACPI_SUCCESS(status)) {
*/ status =
if (gpe_type & ACPI_GPE_TYPE_WAKE) { acpi_hw_low_set_gpe(gpe_event_info,
if (!gpe_event_info->wakeup_count) { ACPI_GPE_DISABLE);
status = AE_LIMIT; /* There are no references to remove */
goto unlock_and_exit;
} }
if (ACPI_FAILURE(status)) {
gpe_event_info->wakeup_count--; gpe_event_info->runtime_count++;
if (!gpe_event_info->wakeup_count) {
status = acpi_ev_update_gpe_enable_masks(gpe_event_info);
} }
} }
......
...@@ -424,8 +424,7 @@ static int acpi_button_add(struct acpi_device *device) ...@@ -424,8 +424,7 @@ static int acpi_button_add(struct acpi_device *device)
if (device->wakeup.flags.valid) { if (device->wakeup.flags.valid) {
/* Button's GPE is run-wake GPE */ /* Button's GPE is run-wake GPE */
acpi_enable_gpe(device->wakeup.gpe_device, acpi_enable_gpe(device->wakeup.gpe_device,
device->wakeup.gpe_number, device->wakeup.gpe_number);
ACPI_GPE_TYPE_RUNTIME);
device->wakeup.run_wake_count++; device->wakeup.run_wake_count++;
device->wakeup.state.enabled = 1; device->wakeup.state.enabled = 1;
} }
...@@ -448,8 +447,7 @@ static int acpi_button_remove(struct acpi_device *device, int type) ...@@ -448,8 +447,7 @@ static int acpi_button_remove(struct acpi_device *device, int type)
if (device->wakeup.flags.valid) { if (device->wakeup.flags.valid) {
acpi_disable_gpe(device->wakeup.gpe_device, acpi_disable_gpe(device->wakeup.gpe_device,
device->wakeup.gpe_number, device->wakeup.gpe_number);
ACPI_GPE_TYPE_RUNTIME);
device->wakeup.run_wake_count--; device->wakeup.run_wake_count--;
device->wakeup.state.enabled = 0; device->wakeup.state.enabled = 0;
} }
......
...@@ -822,7 +822,7 @@ static int ec_install_handlers(struct acpi_ec *ec) ...@@ -822,7 +822,7 @@ static int ec_install_handlers(struct acpi_ec *ec)
if (ACPI_FAILURE(status)) if (ACPI_FAILURE(status))
return -ENODEV; return -ENODEV;
acpi_enable_gpe(NULL, ec->gpe, ACPI_GPE_TYPE_RUNTIME); acpi_enable_gpe(NULL, ec->gpe);
status = acpi_install_address_space_handler(ec->handle, status = acpi_install_address_space_handler(ec->handle,
ACPI_ADR_SPACE_EC, ACPI_ADR_SPACE_EC,
&acpi_ec_space_handler, &acpi_ec_space_handler,
...@@ -839,7 +839,7 @@ static int ec_install_handlers(struct acpi_ec *ec) ...@@ -839,7 +839,7 @@ static int ec_install_handlers(struct acpi_ec *ec)
} else { } else {
acpi_remove_gpe_handler(NULL, ec->gpe, acpi_remove_gpe_handler(NULL, ec->gpe,
&acpi_ec_gpe_handler); &acpi_ec_gpe_handler);
acpi_disable_gpe(NULL, ec->gpe, ACPI_GPE_TYPE_RUNTIME); acpi_disable_gpe(NULL, ec->gpe);
return -ENODEV; return -ENODEV;
} }
} }
...@@ -850,7 +850,7 @@ static int ec_install_handlers(struct acpi_ec *ec) ...@@ -850,7 +850,7 @@ static int ec_install_handlers(struct acpi_ec *ec)
static void ec_remove_handlers(struct acpi_ec *ec) static void ec_remove_handlers(struct acpi_ec *ec)
{ {
acpi_disable_gpe(NULL, ec->gpe, ACPI_GPE_TYPE_RUNTIME); acpi_disable_gpe(NULL, ec->gpe);
if (ACPI_FAILURE(acpi_remove_address_space_handler(ec->handle, if (ACPI_FAILURE(acpi_remove_address_space_handler(ec->handle,
ACPI_ADR_SPACE_EC, &acpi_ec_space_handler))) ACPI_ADR_SPACE_EC, &acpi_ec_space_handler)))
pr_err(PREFIX "failed to remove space handler\n"); pr_err(PREFIX "failed to remove space handler\n");
......
...@@ -388,12 +388,10 @@ static ssize_t counter_set(struct kobject *kobj, ...@@ -388,12 +388,10 @@ static ssize_t counter_set(struct kobject *kobj,
if (index < num_gpes) { if (index < num_gpes) {
if (!strcmp(buf, "disable\n") && if (!strcmp(buf, "disable\n") &&
(status & ACPI_EVENT_FLAG_ENABLED)) (status & ACPI_EVENT_FLAG_ENABLED))
result = acpi_disable_gpe(handle, index, result = acpi_disable_gpe(handle, index);
ACPI_GPE_TYPE_RUNTIME);
else if (!strcmp(buf, "enable\n") && else if (!strcmp(buf, "enable\n") &&
!(status & ACPI_EVENT_FLAG_ENABLED)) !(status & ACPI_EVENT_FLAG_ENABLED))
result = acpi_enable_gpe(handle, index, result = acpi_enable_gpe(handle, index);
ACPI_GPE_TYPE_RUNTIME);
else if (!strcmp(buf, "clear\n") && else if (!strcmp(buf, "clear\n") &&
(status & ACPI_EVENT_FLAG_SET)) (status & ACPI_EVENT_FLAG_SET))
result = acpi_clear_gpe(handle, index); result = acpi_clear_gpe(handle, index);
......
...@@ -295,14 +295,12 @@ static int acpi_dev_run_wake(struct device *phys_dev, bool enable) ...@@ -295,14 +295,12 @@ static int acpi_dev_run_wake(struct device *phys_dev, bool enable)
if (!dev->wakeup.run_wake_count++) { if (!dev->wakeup.run_wake_count++) {
acpi_enable_wakeup_device_power(dev, ACPI_STATE_S0); acpi_enable_wakeup_device_power(dev, ACPI_STATE_S0);
acpi_enable_gpe(dev->wakeup.gpe_device, acpi_enable_gpe(dev->wakeup.gpe_device,
dev->wakeup.gpe_number, dev->wakeup.gpe_number);
ACPI_GPE_TYPE_RUNTIME);
} }
} else if (dev->wakeup.run_wake_count > 0) { } else if (dev->wakeup.run_wake_count > 0) {
if (!--dev->wakeup.run_wake_count) { if (!--dev->wakeup.run_wake_count) {
acpi_disable_gpe(dev->wakeup.gpe_device, acpi_disable_gpe(dev->wakeup.gpe_device,
dev->wakeup.gpe_number, dev->wakeup.gpe_number);
ACPI_GPE_TYPE_RUNTIME);
acpi_disable_wakeup_device_power(dev); acpi_disable_wakeup_device_power(dev);
} }
} else { } else {
......
...@@ -284,11 +284,9 @@ acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status); ...@@ -284,11 +284,9 @@ acpi_status acpi_get_event_status(u32 event, acpi_event_status * event_status);
*/ */
acpi_status acpi_set_gpe(acpi_handle gpe_device, u32 gpe_number, u8 action); acpi_status acpi_set_gpe(acpi_handle gpe_device, u32 gpe_number, u8 action);
acpi_status acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number);
acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type);
acpi_status acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number);
acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 gpe_type);
acpi_status acpi_clear_gpe(acpi_handle gpe_device, u32 gpe_number); acpi_status acpi_clear_gpe(acpi_handle gpe_device, u32 gpe_number);
......
...@@ -669,12 +669,6 @@ typedef u32 acpi_event_status; ...@@ -669,12 +669,6 @@ typedef u32 acpi_event_status;
#define ACPI_GPE_DISABLE 1 #define ACPI_GPE_DISABLE 1
#define ACPI_GPE_COND_ENABLE 2 #define ACPI_GPE_COND_ENABLE 2
/* gpe_types for acpi_enable_gpe and acpi_disable_gpe */
#define ACPI_GPE_TYPE_WAKE (u8) 0x01
#define ACPI_GPE_TYPE_RUNTIME (u8) 0x02
#define ACPI_GPE_TYPE_WAKE_RUN (u8) 0x03
/* /*
* GPE info flags - Per GPE * GPE info flags - Per GPE
* +-------+---+-+-+ * +-------+---+-+-+
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment