status =
acpi_write_bit_register(ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
status = acpi_hw_clear_acpi_status(); if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
/* *1)DisableallGPEs *2)EnableallwakeupGPEs
*/
status = acpi_hw_disable_all_gpes(); if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
acpi_gbl_system_awake_and_running = FALSE;
status = acpi_hw_enable_all_wakeup_gpes(); if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
status = acpi_hw_write_port(acpi_gbl_FADT.smi_command,
(u32)acpi_gbl_FADT.s4_bios_request, 8); if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
do {
acpi_os_stall(ACPI_USEC_PER_MSEC);
status =
acpi_read_bit_register(ACPI_BITREG_WAKE_STATUS, &in_value); if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
status = acpi_get_sleep_type_data(sleep_state,
&acpi_gbl_sleep_type_a,
&acpi_gbl_sleep_type_b); if (ACPI_FAILURE(status)) {
return_ACPI_STATUS(status);
}
status = acpi_get_sleep_type_data(ACPI_STATE_S0,
&acpi_gbl_sleep_type_a_s0,
&acpi_gbl_sleep_type_b_s0); if (ACPI_FAILURE(status)) {
acpi_gbl_sleep_type_a_s0 = ACPI_SLEEP_TYPE_INVALID;
}
status =
acpi_evaluate_object(NULL, METHOD_PATHNAME__PTS, &arg_list, NULL); if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
return_ACPI_STATUS(status);
}
/* Setup the argument to the _SST method (System STatus) */
switch (sleep_state) { case ACPI_STATE_S0:
sst_value = ACPI_SST_WORKING; break;
case ACPI_STATE_S1: case ACPI_STATE_S2: case ACPI_STATE_S3:
sst_value = ACPI_SST_SLEEPING; break;
case ACPI_STATE_S4:
sst_value = ACPI_SST_SLEEP_CONTEXT; break;
default:
sst_value = ACPI_SST_INDICATOR_OFF; /* Default is off */ break;
}
if ((acpi_gbl_sleep_type_a > ACPI_SLEEP_TYPE_MAX) ||
(acpi_gbl_sleep_type_b > ACPI_SLEEP_TYPE_MAX)) {
ACPI_ERROR((AE_INFO, "Sleep values out of range: A=0x%X B=0x%X",
acpi_gbl_sleep_type_a, acpi_gbl_sleep_type_b));
return_ACPI_STATUS(AE_AML_OPERAND_VALUE);
}
#if !ACPI_REDUCED_HARDWARE if (!acpi_gbl_reduced_hardware)
status = acpi_hw_legacy_sleep(sleep_state); else #endif
status = acpi_hw_extended_sleep(sleep_state);
return_ACPI_STATUS(status);
}
#if !ACPI_REDUCED_HARDWARE if (!acpi_gbl_reduced_hardware)
status = acpi_hw_legacy_wake_prep(sleep_state); else #endif
status = acpi_hw_extended_wake_prep(sleep_state);
return_ACPI_STATUS(status);
}
#if !ACPI_REDUCED_HARDWARE if (!acpi_gbl_reduced_hardware)
status = acpi_hw_legacy_wake(sleep_state); else #endif
status = acpi_hw_extended_wake(sleep_state);
return_ACPI_STATUS(status);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.