hwgpe.c revision 229989
171867Smsmith 267754Smsmith/****************************************************************************** 367754Smsmith * 467754Smsmith * Module Name: hwgpe - Low level GPE enable/disable/clear functions 567754Smsmith * 667754Smsmith *****************************************************************************/ 767754Smsmith 8217365Sjkim/* 9229989Sjkim * Copyright (C) 2000 - 2012, Intel Corp. 1070243Smsmith * All rights reserved. 1167754Smsmith * 12217365Sjkim * Redistribution and use in source and binary forms, with or without 13217365Sjkim * modification, are permitted provided that the following conditions 14217365Sjkim * are met: 15217365Sjkim * 1. Redistributions of source code must retain the above copyright 16217365Sjkim * notice, this list of conditions, and the following disclaimer, 17217365Sjkim * without modification. 18217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 19217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 20217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 21217365Sjkim * including a substantially similar Disclaimer requirement for further 22217365Sjkim * binary redistribution. 23217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 24217365Sjkim * of any contributors may be used to endorse or promote products derived 25217365Sjkim * from this software without specific prior written permission. 2667754Smsmith * 27217365Sjkim * Alternatively, this software may be distributed under the terms of the 28217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 29217365Sjkim * Software Foundation. 3067754Smsmith * 31217365Sjkim * NO WARRANTY 32217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 35217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 37217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 38217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 39217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 40217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 41217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 42217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 43217365Sjkim */ 4467754Smsmith 45193341Sjkim#include <contrib/dev/acpica/include/acpi.h> 46193341Sjkim#include <contrib/dev/acpica/include/accommon.h> 47193341Sjkim#include <contrib/dev/acpica/include/acevents.h> 4867754Smsmith 4977424Smsmith#define _COMPONENT ACPI_HARDWARE 5091116Smsmith ACPI_MODULE_NAME ("hwgpe") 5167754Smsmith 52151937Sjkim/* Local prototypes */ 5367754Smsmith 54151937Sjkimstatic ACPI_STATUS 55151937SjkimAcpiHwEnableWakeupGpeBlock ( 56151937Sjkim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 57193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 58193267Sjkim void *Context); 59151937Sjkim 60151937Sjkim 6167754Smsmith/****************************************************************************** 6267754Smsmith * 63209746Sjkim * FUNCTION: AcpiHwGetGpeRegisterBit 64193267Sjkim * 65209746Sjkim * PARAMETERS: GpeEventInfo - Info block for the GPE 66209746Sjkim * GpeRegisterInfo - Info block for the GPE register 67209746Sjkim * 68209746Sjkim * RETURN: Register mask with a one in the GPE bit position 69209746Sjkim * 70209746Sjkim * DESCRIPTION: Compute the register mask for this GPE. One bit is set in the 71209746Sjkim * correct position for the input GPE. 72209746Sjkim * 73209746Sjkim ******************************************************************************/ 74209746Sjkim 75209746SjkimUINT32 76209746SjkimAcpiHwGetGpeRegisterBit ( 77209746Sjkim ACPI_GPE_EVENT_INFO *GpeEventInfo, 78209746Sjkim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo) 79209746Sjkim{ 80209746Sjkim 81209746Sjkim return ((UINT32) 1 << 82209746Sjkim (GpeEventInfo->GpeNumber - GpeRegisterInfo->BaseGpeNumber)); 83209746Sjkim} 84209746Sjkim 85209746Sjkim 86209746Sjkim/****************************************************************************** 87209746Sjkim * 88209746Sjkim * FUNCTION: AcpiHwLowSetGpe 89209746Sjkim * 90193267Sjkim * PARAMETERS: GpeEventInfo - Info block for the GPE to be disabled 91209746Sjkim * Action - Enable or disable 92193267Sjkim * 93193267Sjkim * RETURN: Status 94193267Sjkim * 95209746Sjkim * DESCRIPTION: Enable or disable a single GPE in the parent enable register. 96193267Sjkim * 97193267Sjkim ******************************************************************************/ 98193267Sjkim 99193267SjkimACPI_STATUS 100209746SjkimAcpiHwLowSetGpe ( 101209746Sjkim ACPI_GPE_EVENT_INFO *GpeEventInfo, 102209746Sjkim UINT32 Action) 103193267Sjkim{ 104193267Sjkim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 105193267Sjkim ACPI_STATUS Status; 106193267Sjkim UINT32 EnableMask; 107209746Sjkim UINT32 RegisterBit; 108193267Sjkim 109193267Sjkim 110209746Sjkim ACPI_FUNCTION_ENTRY (); 111209746Sjkim 112209746Sjkim 113193267Sjkim /* Get the info block for the entire GPE register */ 114193267Sjkim 115193267Sjkim GpeRegisterInfo = GpeEventInfo->RegisterInfo; 116193267Sjkim if (!GpeRegisterInfo) 117193267Sjkim { 118193267Sjkim return (AE_NOT_EXIST); 119193267Sjkim } 120193267Sjkim 121193267Sjkim /* Get current value of the enable register that contains this GPE */ 122193267Sjkim 123197104Sjkim Status = AcpiHwRead (&EnableMask, &GpeRegisterInfo->EnableAddress); 124193267Sjkim if (ACPI_FAILURE (Status)) 125193267Sjkim { 126193267Sjkim return (Status); 127193267Sjkim } 128193267Sjkim 129209746Sjkim /* Set or clear just the bit that corresponds to this GPE */ 130193267Sjkim 131209746Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); 132209746Sjkim switch (Action) 133209746Sjkim { 134209746Sjkim case ACPI_GPE_CONDITIONAL_ENABLE: 135193267Sjkim 136209746Sjkim /* Only enable if the EnableForRun bit is set */ 137193267Sjkim 138209746Sjkim if (!(RegisterBit & GpeRegisterInfo->EnableForRun)) 139209746Sjkim { 140209746Sjkim return (AE_BAD_PARAMETER); 141209746Sjkim } 142193267Sjkim 143209746Sjkim /*lint -fallthrough */ 144193267Sjkim 145209746Sjkim case ACPI_GPE_ENABLE: 146209746Sjkim ACPI_SET_BIT (EnableMask, RegisterBit); 147209746Sjkim break; 148193267Sjkim 149209746Sjkim case ACPI_GPE_DISABLE: 150209746Sjkim ACPI_CLEAR_BIT (EnableMask, RegisterBit); 151209746Sjkim break; 15267754Smsmith 153209746Sjkim default: 154209746Sjkim ACPI_ERROR ((AE_INFO, "Invalid GPE Action, %u\n", Action)); 155209746Sjkim return (AE_BAD_PARAMETER); 156114237Snjl } 15767754Smsmith 158209746Sjkim /* Write the updated enable mask */ 15984491Smsmith 160209746Sjkim Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress); 161129684Snjl return (Status); 16267754Smsmith} 16367754Smsmith 16491116Smsmith 16584491Smsmith/****************************************************************************** 16684491Smsmith * 16767754Smsmith * FUNCTION: AcpiHwClearGpe 16867754Smsmith * 169128212Snjl * PARAMETERS: GpeEventInfo - Info block for the GPE to be cleared 17067754Smsmith * 171138287Smarks * RETURN: Status 17267754Smsmith * 173128212Snjl * DESCRIPTION: Clear the status bit for a single GPE. 17467754Smsmith * 17567754Smsmith ******************************************************************************/ 17667754Smsmith 17799679SiwasakiACPI_STATUS 17867754SmsmithAcpiHwClearGpe ( 179114237Snjl ACPI_GPE_EVENT_INFO *GpeEventInfo) 18067754Smsmith{ 181209746Sjkim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 18299679Siwasaki ACPI_STATUS Status; 183209746Sjkim UINT32 RegisterBit; 18467754Smsmith 18580062Smsmith 18691116Smsmith ACPI_FUNCTION_ENTRY (); 18783174Smsmith 188209746Sjkim /* Get the info block for the entire GPE register */ 18983174Smsmith 190209746Sjkim GpeRegisterInfo = GpeEventInfo->RegisterInfo; 191209746Sjkim if (!GpeRegisterInfo) 192209746Sjkim { 193209746Sjkim return (AE_NOT_EXIST); 194209746Sjkim } 195167802Sjkim 19667754Smsmith /* 19767754Smsmith * Write a one to the appropriate bit in the status register to 19867754Smsmith * clear this GPE. 19967754Smsmith */ 200209746Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); 201209746Sjkim 202197104Sjkim Status = AcpiHwWrite (RegisterBit, 203209746Sjkim &GpeRegisterInfo->StatusAddress); 20499679Siwasaki 20599679Siwasaki return (Status); 20667754Smsmith} 20767754Smsmith 20867754Smsmith 20967754Smsmith/****************************************************************************** 21067754Smsmith * 21167754Smsmith * FUNCTION: AcpiHwGetGpeStatus 21267754Smsmith * 213128212Snjl * PARAMETERS: GpeEventInfo - Info block for the GPE to queried 214128212Snjl * EventStatus - Where the GPE status is returned 21567754Smsmith * 216128212Snjl * RETURN: Status 21767754Smsmith * 21867754Smsmith * DESCRIPTION: Return the status of a single GPE. 21967754Smsmith * 22067754Smsmith ******************************************************************************/ 22167754Smsmith 22299679SiwasakiACPI_STATUS 22367754SmsmithAcpiHwGetGpeStatus ( 224117521Snjl ACPI_GPE_EVENT_INFO *GpeEventInfo, 22567754Smsmith ACPI_EVENT_STATUS *EventStatus) 22667754Smsmith{ 227114237Snjl UINT32 InByte; 228209746Sjkim UINT32 RegisterBit; 22991116Smsmith ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 230209746Sjkim ACPI_EVENT_STATUS LocalEventStatus = 0; 23199679Siwasaki ACPI_STATUS Status; 23267754Smsmith 23380062Smsmith 23491116Smsmith ACPI_FUNCTION_ENTRY (); 23583174Smsmith 23683174Smsmith 23767754Smsmith if (!EventStatus) 23867754Smsmith { 23999679Siwasaki return (AE_BAD_PARAMETER); 24067754Smsmith } 24167754Smsmith 242114237Snjl /* Get the info block for the entire GPE register */ 24367754Smsmith 244114237Snjl GpeRegisterInfo = GpeEventInfo->RegisterInfo; 24567754Smsmith 24691116Smsmith /* Get the register bitmask for this GPE */ 24791116Smsmith 248209746Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); 24991116Smsmith 250129684Snjl /* GPE currently enabled? (enabled for runtime?) */ 25191116Smsmith 252129684Snjl if (RegisterBit & GpeRegisterInfo->EnableForRun) 25399679Siwasaki { 254114237Snjl LocalEventStatus |= ACPI_EVENT_FLAG_ENABLED; 25567754Smsmith } 25667754Smsmith 257129684Snjl /* GPE enabled for wake? */ 25891116Smsmith 259129684Snjl if (RegisterBit & GpeRegisterInfo->EnableForWake) 26084491Smsmith { 261114237Snjl LocalEventStatus |= ACPI_EVENT_FLAG_WAKE_ENABLED; 26284491Smsmith } 26384491Smsmith 264129684Snjl /* GPE currently active (status bit == 1)? */ 26591116Smsmith 266197104Sjkim Status = AcpiHwRead (&InByte, &GpeRegisterInfo->StatusAddress); 26799679Siwasaki if (ACPI_FAILURE (Status)) 26899679Siwasaki { 269202771Sjkim return (Status); 27099679Siwasaki } 27199679Siwasaki 272129684Snjl if (RegisterBit & InByte) 27367754Smsmith { 274114237Snjl LocalEventStatus |= ACPI_EVENT_FLAG_SET; 27567754Smsmith } 276114237Snjl 277114237Snjl /* Set return value */ 278114237Snjl 279114237Snjl (*EventStatus) = LocalEventStatus; 280202771Sjkim return (AE_OK); 281117521Snjl} 282117521Snjl 283117521Snjl 284117521Snjl/****************************************************************************** 285117521Snjl * 286117521Snjl * FUNCTION: AcpiHwDisableGpeBlock 287117521Snjl * 288117521Snjl * PARAMETERS: GpeXruptInfo - GPE Interrupt info 289117521Snjl * GpeBlock - Gpe Block info 290117521Snjl * 291117521Snjl * RETURN: Status 292117521Snjl * 293151937Sjkim * DESCRIPTION: Disable all GPEs within a single GPE block 294117521Snjl * 295117521Snjl ******************************************************************************/ 296117521Snjl 297117521SnjlACPI_STATUS 298117521SnjlAcpiHwDisableGpeBlock ( 299117521Snjl ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 300193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 301193267Sjkim void *Context) 302117521Snjl{ 303117521Snjl UINT32 i; 304117521Snjl ACPI_STATUS Status; 305117521Snjl 306117521Snjl 307117521Snjl /* Examine each GPE Register within the block */ 308117521Snjl 309117521Snjl for (i = 0; i < GpeBlock->RegisterCount; i++) 310117521Snjl { 311126372Snjl /* Disable all GPEs in this register */ 312126372Snjl 313197104Sjkim Status = AcpiHwWrite (0x00, &GpeBlock->RegisterInfo[i].EnableAddress); 314117521Snjl if (ACPI_FAILURE (Status)) 315117521Snjl { 316117521Snjl return (Status); 317117521Snjl } 318117521Snjl } 319117521Snjl 32099679Siwasaki return (AE_OK); 32167754Smsmith} 32284491Smsmith 32391116Smsmith 32484491Smsmith/****************************************************************************** 32584491Smsmith * 326117521Snjl * FUNCTION: AcpiHwClearGpeBlock 327117521Snjl * 328117521Snjl * PARAMETERS: GpeXruptInfo - GPE Interrupt info 329117521Snjl * GpeBlock - Gpe Block info 330117521Snjl * 331117521Snjl * RETURN: Status 332117521Snjl * 333151937Sjkim * DESCRIPTION: Clear status bits for all GPEs within a single GPE block 334117521Snjl * 335117521Snjl ******************************************************************************/ 336117521Snjl 337117521SnjlACPI_STATUS 338117521SnjlAcpiHwClearGpeBlock ( 339117521Snjl ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 340193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 341193267Sjkim void *Context) 342117521Snjl{ 343117521Snjl UINT32 i; 344117521Snjl ACPI_STATUS Status; 345117521Snjl 346117521Snjl 347117521Snjl /* Examine each GPE Register within the block */ 348117521Snjl 349117521Snjl for (i = 0; i < GpeBlock->RegisterCount; i++) 350117521Snjl { 351128212Snjl /* Clear status on all GPEs in this register */ 352126372Snjl 353197104Sjkim Status = AcpiHwWrite (0xFF, &GpeBlock->RegisterInfo[i].StatusAddress); 354117521Snjl if (ACPI_FAILURE (Status)) 355117521Snjl { 356117521Snjl return (Status); 357117521Snjl } 358117521Snjl } 359117521Snjl 360117521Snjl return (AE_OK); 361117521Snjl} 362117521Snjl 363117521Snjl 364117521Snjl/****************************************************************************** 365117521Snjl * 366129684Snjl * FUNCTION: AcpiHwEnableRuntimeGpeBlock 367117521Snjl * 368117521Snjl * PARAMETERS: GpeXruptInfo - GPE Interrupt info 369117521Snjl * GpeBlock - Gpe Block info 370117521Snjl * 371117521Snjl * RETURN: Status 372117521Snjl * 373151937Sjkim * DESCRIPTION: Enable all "runtime" GPEs within a single GPE block. Includes 374151937Sjkim * combination wake/run GPEs. 375117521Snjl * 376117521Snjl ******************************************************************************/ 377117521Snjl 378129684SnjlACPI_STATUS 379129684SnjlAcpiHwEnableRuntimeGpeBlock ( 380117521Snjl ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 381193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 382193267Sjkim void *Context) 383117521Snjl{ 384117521Snjl UINT32 i; 385117521Snjl ACPI_STATUS Status; 386117521Snjl 387117521Snjl 388129684Snjl /* NOTE: assumes that all GPEs are currently disabled */ 389117521Snjl 390117521Snjl /* Examine each GPE Register within the block */ 391117521Snjl 392117521Snjl for (i = 0; i < GpeBlock->RegisterCount; i++) 393117521Snjl { 394129684Snjl if (!GpeBlock->RegisterInfo[i].EnableForRun) 395117521Snjl { 396129684Snjl continue; 397117521Snjl } 398117521Snjl 399129684Snjl /* Enable all "runtime" GPEs in this register */ 400117521Snjl 401197104Sjkim Status = AcpiHwWrite (GpeBlock->RegisterInfo[i].EnableForRun, 402129684Snjl &GpeBlock->RegisterInfo[i].EnableAddress); 403117521Snjl if (ACPI_FAILURE (Status)) 404117521Snjl { 405117521Snjl return (Status); 406117521Snjl } 407117521Snjl } 408117521Snjl 409117521Snjl return (AE_OK); 410117521Snjl} 411117521Snjl 412117521Snjl 413117521Snjl/****************************************************************************** 414117521Snjl * 415129684Snjl * FUNCTION: AcpiHwEnableWakeupGpeBlock 41684491Smsmith * 417129684Snjl * PARAMETERS: GpeXruptInfo - GPE Interrupt info 418129684Snjl * GpeBlock - Gpe Block info 41984491Smsmith * 420128212Snjl * RETURN: Status 42184491Smsmith * 422151937Sjkim * DESCRIPTION: Enable all "wake" GPEs within a single GPE block. Includes 423151937Sjkim * combination wake/run GPEs. 42484491Smsmith * 42584491Smsmith ******************************************************************************/ 42684491Smsmith 427151937Sjkimstatic ACPI_STATUS 428129684SnjlAcpiHwEnableWakeupGpeBlock ( 429129684Snjl ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 430193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 431193267Sjkim void *Context) 43284491Smsmith{ 433129684Snjl UINT32 i; 43499679Siwasaki ACPI_STATUS Status; 43584491Smsmith 43684491Smsmith 437129684Snjl /* Examine each GPE Register within the block */ 43891116Smsmith 439129684Snjl for (i = 0; i < GpeBlock->RegisterCount; i++) 440129684Snjl { 441129684Snjl if (!GpeBlock->RegisterInfo[i].EnableForWake) 442129684Snjl { 443129684Snjl continue; 444129684Snjl } 44591116Smsmith 446129684Snjl /* Enable all "wake" GPEs in this register */ 447129684Snjl 448197104Sjkim Status = AcpiHwWrite (GpeBlock->RegisterInfo[i].EnableForWake, 449129684Snjl &GpeBlock->RegisterInfo[i].EnableAddress); 450129684Snjl if (ACPI_FAILURE (Status)) 451129684Snjl { 452129684Snjl return (Status); 453129684Snjl } 454129684Snjl } 455129684Snjl 456129684Snjl return (AE_OK); 457117521Snjl} 45884491Smsmith 45999679Siwasaki 460117521Snjl/****************************************************************************** 461117521Snjl * 462129684Snjl * FUNCTION: AcpiHwDisableAllGpes 463117521Snjl * 464151937Sjkim * PARAMETERS: None 465117521Snjl * 466117521Snjl * RETURN: Status 467117521Snjl * 468151937Sjkim * DESCRIPTION: Disable and clear all GPEs in all GPE blocks 469117521Snjl * 470117521Snjl ******************************************************************************/ 471114237Snjl 472129684SnjlACPI_STATUS 473129684SnjlAcpiHwDisableAllGpes ( 474151937Sjkim void) 475117521Snjl{ 476117521Snjl ACPI_STATUS Status; 477114237Snjl 478117521Snjl 479167802Sjkim ACPI_FUNCTION_TRACE (HwDisableAllGpes); 480117521Snjl 481117521Snjl 482193267Sjkim Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock, NULL); 483193267Sjkim Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock, NULL); 484129684Snjl return_ACPI_STATUS (Status); 485129684Snjl} 486117521Snjl 487117521Snjl 488129684Snjl/****************************************************************************** 489129684Snjl * 490129684Snjl * FUNCTION: AcpiHwEnableAllRuntimeGpes 491129684Snjl * 492151937Sjkim * PARAMETERS: None 493129684Snjl * 494129684Snjl * RETURN: Status 495129684Snjl * 496151937Sjkim * DESCRIPTION: Enable all "runtime" GPEs, in all GPE blocks 497129684Snjl * 498129684Snjl ******************************************************************************/ 499126372Snjl 500129684SnjlACPI_STATUS 501129684SnjlAcpiHwEnableAllRuntimeGpes ( 502151937Sjkim void) 503129684Snjl{ 504129684Snjl ACPI_STATUS Status; 505126372Snjl 506114237Snjl 507167802Sjkim ACPI_FUNCTION_TRACE (HwEnableAllRuntimeGpes); 508128212Snjl 509114237Snjl 510193267Sjkim Status = AcpiEvWalkGpeList (AcpiHwEnableRuntimeGpeBlock, NULL); 511129684Snjl return_ACPI_STATUS (Status); 51284491Smsmith} 51384491Smsmith 51491116Smsmith 51584491Smsmith/****************************************************************************** 51684491Smsmith * 517129684Snjl * FUNCTION: AcpiHwEnableAllWakeupGpes 51884491Smsmith * 519151937Sjkim * PARAMETERS: None 52084491Smsmith * 521128212Snjl * RETURN: Status 52284491Smsmith * 523151937Sjkim * DESCRIPTION: Enable all "wakeup" GPEs, in all GPE blocks 52484491Smsmith * 52584491Smsmith ******************************************************************************/ 52684491Smsmith 52799679SiwasakiACPI_STATUS 528129684SnjlAcpiHwEnableAllWakeupGpes ( 529151937Sjkim void) 53084491Smsmith{ 53199679Siwasaki ACPI_STATUS Status; 53284491Smsmith 53384491Smsmith 534167802Sjkim ACPI_FUNCTION_TRACE (HwEnableAllWakeupGpes); 53591116Smsmith 53691116Smsmith 537193267Sjkim Status = AcpiEvWalkGpeList (AcpiHwEnableWakeupGpeBlock, NULL); 538129684Snjl return_ACPI_STATUS (Status); 53984491Smsmith} 540129684Snjl 541