hwgpe.c revision 231844
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 52231844Sjkim#if (!ACPI_REDUCED_HARDWARE) /* Entire module */ 53231844Sjkim 54151937Sjkim/* Local prototypes */ 5567754Smsmith 56151937Sjkimstatic ACPI_STATUS 57151937SjkimAcpiHwEnableWakeupGpeBlock ( 58151937Sjkim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 59193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 60193267Sjkim void *Context); 61151937Sjkim 62151937Sjkim 6367754Smsmith/****************************************************************************** 6467754Smsmith * 65209746Sjkim * FUNCTION: AcpiHwGetGpeRegisterBit 66193267Sjkim * 67209746Sjkim * PARAMETERS: GpeEventInfo - Info block for the GPE 68209746Sjkim * GpeRegisterInfo - Info block for the GPE register 69209746Sjkim * 70209746Sjkim * RETURN: Register mask with a one in the GPE bit position 71209746Sjkim * 72209746Sjkim * DESCRIPTION: Compute the register mask for this GPE. One bit is set in the 73209746Sjkim * correct position for the input GPE. 74209746Sjkim * 75209746Sjkim ******************************************************************************/ 76209746Sjkim 77209746SjkimUINT32 78209746SjkimAcpiHwGetGpeRegisterBit ( 79209746Sjkim ACPI_GPE_EVENT_INFO *GpeEventInfo, 80209746Sjkim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo) 81209746Sjkim{ 82209746Sjkim 83209746Sjkim return ((UINT32) 1 << 84209746Sjkim (GpeEventInfo->GpeNumber - GpeRegisterInfo->BaseGpeNumber)); 85209746Sjkim} 86209746Sjkim 87209746Sjkim 88209746Sjkim/****************************************************************************** 89209746Sjkim * 90209746Sjkim * FUNCTION: AcpiHwLowSetGpe 91209746Sjkim * 92193267Sjkim * PARAMETERS: GpeEventInfo - Info block for the GPE to be disabled 93209746Sjkim * Action - Enable or disable 94193267Sjkim * 95193267Sjkim * RETURN: Status 96193267Sjkim * 97209746Sjkim * DESCRIPTION: Enable or disable a single GPE in the parent enable register. 98193267Sjkim * 99193267Sjkim ******************************************************************************/ 100193267Sjkim 101193267SjkimACPI_STATUS 102209746SjkimAcpiHwLowSetGpe ( 103209746Sjkim ACPI_GPE_EVENT_INFO *GpeEventInfo, 104209746Sjkim UINT32 Action) 105193267Sjkim{ 106193267Sjkim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 107193267Sjkim ACPI_STATUS Status; 108193267Sjkim UINT32 EnableMask; 109209746Sjkim UINT32 RegisterBit; 110193267Sjkim 111193267Sjkim 112209746Sjkim ACPI_FUNCTION_ENTRY (); 113209746Sjkim 114209746Sjkim 115193267Sjkim /* Get the info block for the entire GPE register */ 116193267Sjkim 117193267Sjkim GpeRegisterInfo = GpeEventInfo->RegisterInfo; 118193267Sjkim if (!GpeRegisterInfo) 119193267Sjkim { 120193267Sjkim return (AE_NOT_EXIST); 121193267Sjkim } 122193267Sjkim 123193267Sjkim /* Get current value of the enable register that contains this GPE */ 124193267Sjkim 125197104Sjkim Status = AcpiHwRead (&EnableMask, &GpeRegisterInfo->EnableAddress); 126193267Sjkim if (ACPI_FAILURE (Status)) 127193267Sjkim { 128193267Sjkim return (Status); 129193267Sjkim } 130193267Sjkim 131209746Sjkim /* Set or clear just the bit that corresponds to this GPE */ 132193267Sjkim 133209746Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); 134209746Sjkim switch (Action) 135209746Sjkim { 136209746Sjkim case ACPI_GPE_CONDITIONAL_ENABLE: 137193267Sjkim 138209746Sjkim /* Only enable if the EnableForRun bit is set */ 139193267Sjkim 140209746Sjkim if (!(RegisterBit & GpeRegisterInfo->EnableForRun)) 141209746Sjkim { 142209746Sjkim return (AE_BAD_PARAMETER); 143209746Sjkim } 144193267Sjkim 145209746Sjkim /*lint -fallthrough */ 146193267Sjkim 147209746Sjkim case ACPI_GPE_ENABLE: 148209746Sjkim ACPI_SET_BIT (EnableMask, RegisterBit); 149209746Sjkim break; 150193267Sjkim 151209746Sjkim case ACPI_GPE_DISABLE: 152209746Sjkim ACPI_CLEAR_BIT (EnableMask, RegisterBit); 153209746Sjkim break; 15467754Smsmith 155209746Sjkim default: 156209746Sjkim ACPI_ERROR ((AE_INFO, "Invalid GPE Action, %u\n", Action)); 157209746Sjkim return (AE_BAD_PARAMETER); 158114237Snjl } 15967754Smsmith 160209746Sjkim /* Write the updated enable mask */ 16184491Smsmith 162209746Sjkim Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress); 163129684Snjl return (Status); 16467754Smsmith} 16567754Smsmith 16691116Smsmith 16784491Smsmith/****************************************************************************** 16884491Smsmith * 16967754Smsmith * FUNCTION: AcpiHwClearGpe 17067754Smsmith * 171128212Snjl * PARAMETERS: GpeEventInfo - Info block for the GPE to be cleared 17267754Smsmith * 173138287Smarks * RETURN: Status 17467754Smsmith * 175128212Snjl * DESCRIPTION: Clear the status bit for a single GPE. 17667754Smsmith * 17767754Smsmith ******************************************************************************/ 17867754Smsmith 17999679SiwasakiACPI_STATUS 18067754SmsmithAcpiHwClearGpe ( 181114237Snjl ACPI_GPE_EVENT_INFO *GpeEventInfo) 18267754Smsmith{ 183209746Sjkim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 18499679Siwasaki ACPI_STATUS Status; 185209746Sjkim UINT32 RegisterBit; 18667754Smsmith 18780062Smsmith 18891116Smsmith ACPI_FUNCTION_ENTRY (); 18983174Smsmith 190209746Sjkim /* Get the info block for the entire GPE register */ 19183174Smsmith 192209746Sjkim GpeRegisterInfo = GpeEventInfo->RegisterInfo; 193209746Sjkim if (!GpeRegisterInfo) 194209746Sjkim { 195209746Sjkim return (AE_NOT_EXIST); 196209746Sjkim } 197167802Sjkim 19867754Smsmith /* 19967754Smsmith * Write a one to the appropriate bit in the status register to 20067754Smsmith * clear this GPE. 20167754Smsmith */ 202209746Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); 203209746Sjkim 204197104Sjkim Status = AcpiHwWrite (RegisterBit, 205209746Sjkim &GpeRegisterInfo->StatusAddress); 20699679Siwasaki 20799679Siwasaki return (Status); 20867754Smsmith} 20967754Smsmith 21067754Smsmith 21167754Smsmith/****************************************************************************** 21267754Smsmith * 21367754Smsmith * FUNCTION: AcpiHwGetGpeStatus 21467754Smsmith * 215128212Snjl * PARAMETERS: GpeEventInfo - Info block for the GPE to queried 216128212Snjl * EventStatus - Where the GPE status is returned 21767754Smsmith * 218128212Snjl * RETURN: Status 21967754Smsmith * 22067754Smsmith * DESCRIPTION: Return the status of a single GPE. 22167754Smsmith * 22267754Smsmith ******************************************************************************/ 22367754Smsmith 22499679SiwasakiACPI_STATUS 22567754SmsmithAcpiHwGetGpeStatus ( 226117521Snjl ACPI_GPE_EVENT_INFO *GpeEventInfo, 22767754Smsmith ACPI_EVENT_STATUS *EventStatus) 22867754Smsmith{ 229114237Snjl UINT32 InByte; 230209746Sjkim UINT32 RegisterBit; 23191116Smsmith ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 232209746Sjkim ACPI_EVENT_STATUS LocalEventStatus = 0; 23399679Siwasaki ACPI_STATUS Status; 23467754Smsmith 23580062Smsmith 23691116Smsmith ACPI_FUNCTION_ENTRY (); 23783174Smsmith 23883174Smsmith 23967754Smsmith if (!EventStatus) 24067754Smsmith { 24199679Siwasaki return (AE_BAD_PARAMETER); 24267754Smsmith } 24367754Smsmith 244114237Snjl /* Get the info block for the entire GPE register */ 24567754Smsmith 246114237Snjl GpeRegisterInfo = GpeEventInfo->RegisterInfo; 24767754Smsmith 24891116Smsmith /* Get the register bitmask for this GPE */ 24991116Smsmith 250209746Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo, GpeRegisterInfo); 25191116Smsmith 252129684Snjl /* GPE currently enabled? (enabled for runtime?) */ 25391116Smsmith 254129684Snjl if (RegisterBit & GpeRegisterInfo->EnableForRun) 25599679Siwasaki { 256114237Snjl LocalEventStatus |= ACPI_EVENT_FLAG_ENABLED; 25767754Smsmith } 25867754Smsmith 259129684Snjl /* GPE enabled for wake? */ 26091116Smsmith 261129684Snjl if (RegisterBit & GpeRegisterInfo->EnableForWake) 26284491Smsmith { 263114237Snjl LocalEventStatus |= ACPI_EVENT_FLAG_WAKE_ENABLED; 26484491Smsmith } 26584491Smsmith 266129684Snjl /* GPE currently active (status bit == 1)? */ 26791116Smsmith 268197104Sjkim Status = AcpiHwRead (&InByte, &GpeRegisterInfo->StatusAddress); 26999679Siwasaki if (ACPI_FAILURE (Status)) 27099679Siwasaki { 271202771Sjkim return (Status); 27299679Siwasaki } 27399679Siwasaki 274129684Snjl if (RegisterBit & InByte) 27567754Smsmith { 276114237Snjl LocalEventStatus |= ACPI_EVENT_FLAG_SET; 27767754Smsmith } 278114237Snjl 279114237Snjl /* Set return value */ 280114237Snjl 281114237Snjl (*EventStatus) = LocalEventStatus; 282202771Sjkim return (AE_OK); 283117521Snjl} 284117521Snjl 285117521Snjl 286117521Snjl/****************************************************************************** 287117521Snjl * 288117521Snjl * FUNCTION: AcpiHwDisableGpeBlock 289117521Snjl * 290117521Snjl * PARAMETERS: GpeXruptInfo - GPE Interrupt info 291117521Snjl * GpeBlock - Gpe Block info 292117521Snjl * 293117521Snjl * RETURN: Status 294117521Snjl * 295151937Sjkim * DESCRIPTION: Disable all GPEs within a single GPE block 296117521Snjl * 297117521Snjl ******************************************************************************/ 298117521Snjl 299117521SnjlACPI_STATUS 300117521SnjlAcpiHwDisableGpeBlock ( 301117521Snjl ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 302193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 303193267Sjkim void *Context) 304117521Snjl{ 305117521Snjl UINT32 i; 306117521Snjl ACPI_STATUS Status; 307117521Snjl 308117521Snjl 309117521Snjl /* Examine each GPE Register within the block */ 310117521Snjl 311117521Snjl for (i = 0; i < GpeBlock->RegisterCount; i++) 312117521Snjl { 313126372Snjl /* Disable all GPEs in this register */ 314126372Snjl 315197104Sjkim Status = AcpiHwWrite (0x00, &GpeBlock->RegisterInfo[i].EnableAddress); 316117521Snjl if (ACPI_FAILURE (Status)) 317117521Snjl { 318117521Snjl return (Status); 319117521Snjl } 320117521Snjl } 321117521Snjl 32299679Siwasaki return (AE_OK); 32367754Smsmith} 32484491Smsmith 32591116Smsmith 32684491Smsmith/****************************************************************************** 32784491Smsmith * 328117521Snjl * FUNCTION: AcpiHwClearGpeBlock 329117521Snjl * 330117521Snjl * PARAMETERS: GpeXruptInfo - GPE Interrupt info 331117521Snjl * GpeBlock - Gpe Block info 332117521Snjl * 333117521Snjl * RETURN: Status 334117521Snjl * 335151937Sjkim * DESCRIPTION: Clear status bits for all GPEs within a single GPE block 336117521Snjl * 337117521Snjl ******************************************************************************/ 338117521Snjl 339117521SnjlACPI_STATUS 340117521SnjlAcpiHwClearGpeBlock ( 341117521Snjl ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 342193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 343193267Sjkim void *Context) 344117521Snjl{ 345117521Snjl UINT32 i; 346117521Snjl ACPI_STATUS Status; 347117521Snjl 348117521Snjl 349117521Snjl /* Examine each GPE Register within the block */ 350117521Snjl 351117521Snjl for (i = 0; i < GpeBlock->RegisterCount; i++) 352117521Snjl { 353128212Snjl /* Clear status on all GPEs in this register */ 354126372Snjl 355197104Sjkim Status = AcpiHwWrite (0xFF, &GpeBlock->RegisterInfo[i].StatusAddress); 356117521Snjl if (ACPI_FAILURE (Status)) 357117521Snjl { 358117521Snjl return (Status); 359117521Snjl } 360117521Snjl } 361117521Snjl 362117521Snjl return (AE_OK); 363117521Snjl} 364117521Snjl 365117521Snjl 366117521Snjl/****************************************************************************** 367117521Snjl * 368129684Snjl * FUNCTION: AcpiHwEnableRuntimeGpeBlock 369117521Snjl * 370117521Snjl * PARAMETERS: GpeXruptInfo - GPE Interrupt info 371117521Snjl * GpeBlock - Gpe Block info 372117521Snjl * 373117521Snjl * RETURN: Status 374117521Snjl * 375151937Sjkim * DESCRIPTION: Enable all "runtime" GPEs within a single GPE block. Includes 376151937Sjkim * combination wake/run GPEs. 377117521Snjl * 378117521Snjl ******************************************************************************/ 379117521Snjl 380129684SnjlACPI_STATUS 381129684SnjlAcpiHwEnableRuntimeGpeBlock ( 382117521Snjl ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 383193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 384193267Sjkim void *Context) 385117521Snjl{ 386117521Snjl UINT32 i; 387117521Snjl ACPI_STATUS Status; 388117521Snjl 389117521Snjl 390129684Snjl /* NOTE: assumes that all GPEs are currently disabled */ 391117521Snjl 392117521Snjl /* Examine each GPE Register within the block */ 393117521Snjl 394117521Snjl for (i = 0; i < GpeBlock->RegisterCount; i++) 395117521Snjl { 396129684Snjl if (!GpeBlock->RegisterInfo[i].EnableForRun) 397117521Snjl { 398129684Snjl continue; 399117521Snjl } 400117521Snjl 401129684Snjl /* Enable all "runtime" GPEs in this register */ 402117521Snjl 403197104Sjkim Status = AcpiHwWrite (GpeBlock->RegisterInfo[i].EnableForRun, 404129684Snjl &GpeBlock->RegisterInfo[i].EnableAddress); 405117521Snjl if (ACPI_FAILURE (Status)) 406117521Snjl { 407117521Snjl return (Status); 408117521Snjl } 409117521Snjl } 410117521Snjl 411117521Snjl return (AE_OK); 412117521Snjl} 413117521Snjl 414117521Snjl 415117521Snjl/****************************************************************************** 416117521Snjl * 417129684Snjl * FUNCTION: AcpiHwEnableWakeupGpeBlock 41884491Smsmith * 419129684Snjl * PARAMETERS: GpeXruptInfo - GPE Interrupt info 420129684Snjl * GpeBlock - Gpe Block info 42184491Smsmith * 422128212Snjl * RETURN: Status 42384491Smsmith * 424151937Sjkim * DESCRIPTION: Enable all "wake" GPEs within a single GPE block. Includes 425151937Sjkim * combination wake/run GPEs. 42684491Smsmith * 42784491Smsmith ******************************************************************************/ 42884491Smsmith 429151937Sjkimstatic ACPI_STATUS 430129684SnjlAcpiHwEnableWakeupGpeBlock ( 431129684Snjl ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 432193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 433193267Sjkim void *Context) 43484491Smsmith{ 435129684Snjl UINT32 i; 43699679Siwasaki ACPI_STATUS Status; 43784491Smsmith 43884491Smsmith 439129684Snjl /* Examine each GPE Register within the block */ 44091116Smsmith 441129684Snjl for (i = 0; i < GpeBlock->RegisterCount; i++) 442129684Snjl { 443129684Snjl if (!GpeBlock->RegisterInfo[i].EnableForWake) 444129684Snjl { 445129684Snjl continue; 446129684Snjl } 44791116Smsmith 448129684Snjl /* Enable all "wake" GPEs in this register */ 449129684Snjl 450197104Sjkim Status = AcpiHwWrite (GpeBlock->RegisterInfo[i].EnableForWake, 451129684Snjl &GpeBlock->RegisterInfo[i].EnableAddress); 452129684Snjl if (ACPI_FAILURE (Status)) 453129684Snjl { 454129684Snjl return (Status); 455129684Snjl } 456129684Snjl } 457129684Snjl 458129684Snjl return (AE_OK); 459117521Snjl} 46084491Smsmith 46199679Siwasaki 462117521Snjl/****************************************************************************** 463117521Snjl * 464129684Snjl * FUNCTION: AcpiHwDisableAllGpes 465117521Snjl * 466151937Sjkim * PARAMETERS: None 467117521Snjl * 468117521Snjl * RETURN: Status 469117521Snjl * 470151937Sjkim * DESCRIPTION: Disable and clear all GPEs in all GPE blocks 471117521Snjl * 472117521Snjl ******************************************************************************/ 473114237Snjl 474129684SnjlACPI_STATUS 475129684SnjlAcpiHwDisableAllGpes ( 476151937Sjkim void) 477117521Snjl{ 478117521Snjl ACPI_STATUS Status; 479114237Snjl 480117521Snjl 481167802Sjkim ACPI_FUNCTION_TRACE (HwDisableAllGpes); 482117521Snjl 483117521Snjl 484193267Sjkim Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock, NULL); 485193267Sjkim Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock, NULL); 486129684Snjl return_ACPI_STATUS (Status); 487129684Snjl} 488117521Snjl 489117521Snjl 490129684Snjl/****************************************************************************** 491129684Snjl * 492129684Snjl * FUNCTION: AcpiHwEnableAllRuntimeGpes 493129684Snjl * 494151937Sjkim * PARAMETERS: None 495129684Snjl * 496129684Snjl * RETURN: Status 497129684Snjl * 498151937Sjkim * DESCRIPTION: Enable all "runtime" GPEs, in all GPE blocks 499129684Snjl * 500129684Snjl ******************************************************************************/ 501126372Snjl 502129684SnjlACPI_STATUS 503129684SnjlAcpiHwEnableAllRuntimeGpes ( 504151937Sjkim void) 505129684Snjl{ 506129684Snjl ACPI_STATUS Status; 507126372Snjl 508114237Snjl 509167802Sjkim ACPI_FUNCTION_TRACE (HwEnableAllRuntimeGpes); 510128212Snjl 511114237Snjl 512193267Sjkim Status = AcpiEvWalkGpeList (AcpiHwEnableRuntimeGpeBlock, NULL); 513129684Snjl return_ACPI_STATUS (Status); 51484491Smsmith} 51584491Smsmith 51691116Smsmith 51784491Smsmith/****************************************************************************** 51884491Smsmith * 519129684Snjl * FUNCTION: AcpiHwEnableAllWakeupGpes 52084491Smsmith * 521151937Sjkim * PARAMETERS: None 52284491Smsmith * 523128212Snjl * RETURN: Status 52484491Smsmith * 525151937Sjkim * DESCRIPTION: Enable all "wakeup" GPEs, in all GPE blocks 52684491Smsmith * 52784491Smsmith ******************************************************************************/ 52884491Smsmith 52999679SiwasakiACPI_STATUS 530129684SnjlAcpiHwEnableAllWakeupGpes ( 531151937Sjkim void) 53284491Smsmith{ 53399679Siwasaki ACPI_STATUS Status; 53484491Smsmith 53584491Smsmith 536167802Sjkim ACPI_FUNCTION_TRACE (HwEnableAllWakeupGpes); 53791116Smsmith 53891116Smsmith 539193267Sjkim Status = AcpiEvWalkGpeList (AcpiHwEnableWakeupGpeBlock, NULL); 540129684Snjl return_ACPI_STATUS (Status); 54184491Smsmith} 542129684Snjl 543231844Sjkim#endif /* !ACPI_REDUCED_HARDWARE */ 544