hwsleep.c (77424) | hwsleep.c (78986) |
---|---|
1 2/****************************************************************************** 3 * 4 * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface | 1 2/****************************************************************************** 3 * 4 * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface |
5 * $Revision: 11 $ | 5 * $Revision: 12 $ |
6 * 7 *****************************************************************************/ 8 9/****************************************************************************** 10 * 11 * 1. Copyright Notice 12 * 13 * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. --- 250 unchanged lines hidden (view full) --- 264 265 AcpiEvaluateObject(NULL, "\\_PTS", &ArgList, NULL); 266 AcpiEvaluateObject(NULL, "\\_GTS", &ArgList, NULL); 267 268 /* clear wake status */ 269 270 AcpiHwRegisterBitAccess(ACPI_WRITE, ACPI_MTX_LOCK, WAK_STS, 1); 271 | 6 * 7 *****************************************************************************/ 8 9/****************************************************************************** 10 * 11 * 1. Copyright Notice 12 * 13 * Some or all of this work - Copyright (c) 1999, 2000, 2001, Intel Corp. --- 250 unchanged lines hidden (view full) --- 264 265 AcpiEvaluateObject(NULL, "\\_PTS", &ArgList, NULL); 266 AcpiEvaluateObject(NULL, "\\_GTS", &ArgList, NULL); 267 268 /* clear wake status */ 269 270 AcpiHwRegisterBitAccess(ACPI_WRITE, ACPI_MTX_LOCK, WAK_STS, 1); 271 |
272 disable(); 273 |
|
272 PM1AControl = (UINT16) AcpiHwRegisterRead(ACPI_MTX_LOCK, PM1_CONTROL); 273 | 274 PM1AControl = (UINT16) AcpiHwRegisterRead(ACPI_MTX_LOCK, PM1_CONTROL); 275 |
274 /* mask off SLP_EN and SLP_TYP fields */ | 276 DEBUG_PRINT(ACPI_OK, ("Entering S%d\n", SleepState)); |
275 | 277 |
278 /* mask off SLP_EN and SLP_TYP fields */ |
|
276 PM1AControl &= 0xC3FF; | 279 PM1AControl &= 0xC3FF; |
277 278 /* mask in SLP_EN */ 279 280 PM1AControl |= (1 << AcpiHwGetBitShift (SLP_EN_MASK)); 281 | |
282 PM1BControl = PM1AControl; 283 284 /* mask in SLP_TYP */ | 280 PM1BControl = PM1AControl; 281 282 /* mask in SLP_TYP */ |
285 | |
286 PM1AControl |= (TypeA << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); 287 PM1BControl |= (TypeB << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); 288 | 283 PM1AControl |= (TypeA << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); 284 PM1BControl |= (TypeB << AcpiHwGetBitShift (SLP_TYPE_X_MASK)); 285 |
289 DEBUG_PRINT(ACPI_OK, ("Entering S%d\n", SleepState)); | 286 /* write #1: fill in SLP_TYPE data */ 287 AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1A_CONTROL, PM1AControl); 288 AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1B_CONTROL, PM1BControl); |
290 | 289 |
291 disable(); | 290 /* mask in SLP_EN */ 291 PM1AControl |= (1 << AcpiHwGetBitShift (SLP_EN_MASK)); 292 PM1BControl |= (1 << AcpiHwGetBitShift (SLP_EN_MASK)); |
292 | 293 |
294 /* write #2: the whole tamale */ |
|
293 AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1A_CONTROL, PM1AControl); 294 AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1B_CONTROL, PM1BControl); 295 | 295 AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1A_CONTROL, PM1AControl); 296 AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1B_CONTROL, PM1BControl); 297 |
296 /* one system won't work with this, one won't work without */ 297 /*AcpiHwRegisterWrite(ACPI_MTX_LOCK, PM1_CONTROL, 298 (1 << AcpiHwGetBitShift (SLP_EN_MASK)));*/ 299 | |
300 enable(); 301 302 return_ACPI_STATUS (AE_OK); 303} | 298 enable(); 299 300 return_ACPI_STATUS (AE_OK); 301} |