Check in files with local changes:

* In the resume path, give up after waiting for a while
for WAK_STS to be set.  Some BIOSs never set it.

* Allow access to the field if it is within the region size rounded
up to a multiple of the access byte width.  This overcomes "off-by-one"
programming errors in the AML often found in Toshiba laptops.
This commit is contained in:
Nate Lawson 2004-04-14 02:17:00 +00:00
parent ea905c360c
commit aa87b3ef75
2 changed files with 20 additions and 8 deletions

View File

@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exfldio - Aml Field I/O
* $Revision: 103 $
* $Revision: 104 $
*
*****************************************************************************/
@ -352,7 +352,7 @@ AcpiExAccessRegion (
}
else if (Status == AE_NOT_EXIST)
{
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
ACPI_REPORT_ERROR ((
"Region %s(%X) has no handler\n",
AcpiUtGetRegionName (RgnDesc->Region.SpaceId),
RgnDesc->Region.SpaceId));

View File

@ -2,7 +2,7 @@
/******************************************************************************
*
* Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface
* $Revision: 65 $
* $Revision: 66 $
*
*****************************************************************************/
@ -375,7 +375,11 @@ AcpiEnterSleepState (
}
}
Status = AcpiHwDisableNonWakeupGpes ();
/*
* 1) Disable all runtime GPEs
* 2) Enable all wakeup GPEs
*/
Status = AcpiHwPrepareGpesForSleep ();
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
@ -526,7 +530,11 @@ AcpiEnterSleepStateS4bios (
return_ACPI_STATUS (Status);
}
Status = AcpiHwDisableNonWakeupGpes ();
/*
* 1) Disable all runtime GPEs
* 2) Enable all wakeup GPEs
*/
Status = AcpiHwPrepareGpesForSleep ();
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
@ -646,10 +654,14 @@ AcpiLeaveSleepState (
{
ACPI_REPORT_ERROR (("Method _WAK failed, %s\n", AcpiFormatException (Status)));
}
/* TBD: _WAK "sometimes" returns stuff - do we want to look at it? */
/* _WAK returns stuff - do we want to look at it? */
Status = AcpiHwEnableNonWakeupGpes ();
/*
* Restore the GPEs:
* 1) Disable all wakeup GPEs
* 2) Enable all runtime GPEs
*/
Status = AcpiHwRestoreGpesOnWake ();
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);