167754Smsmith/****************************************************************************** 267754Smsmith * 367754Smsmith * Module Name: hwgpe - Low level GPE enable/disable/clear functions 467754Smsmith * 567754Smsmith *****************************************************************************/ 667754Smsmith 7217365Sjkim/* 8245582Sjkim * Copyright (C) 2000 - 2013, Intel Corp. 970243Smsmith * All rights reserved. 1067754Smsmith * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 2567754Smsmith * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 2967754Smsmith * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 4367754Smsmith 44193341Sjkim#include <contrib/dev/acpica/include/acpi.h> 45193341Sjkim#include <contrib/dev/acpica/include/accommon.h> 46193341Sjkim#include <contrib/dev/acpica/include/acevents.h> 4767754Smsmith 4877424Smsmith#define _COMPONENT ACPI_HARDWARE 4991116Smsmith ACPI_MODULE_NAME ("hwgpe") 5067754Smsmith 51231844Sjkim#if (!ACPI_REDUCED_HARDWARE) /* Entire module */ 52231844Sjkim 53151937Sjkim/* Local prototypes */ 5467754Smsmith 55151937Sjkimstatic ACPI_STATUS 56151937SjkimAcpiHwEnableWakeupGpeBlock ( 57151937Sjkim ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 58193267Sjkim ACPI_GPE_BLOCK_INFO *GpeBlock, 59193267Sjkim void *Context); 60151937Sjkim 61151937Sjkim 6267754Smsmith/****************************************************************************** 6367754Smsmith * 64209746Sjkim * FUNCTION: AcpiHwGetGpeRegisterBit 65193267Sjkim * 66209746Sjkim * PARAMETERS: GpeEventInfo - Info block for the GPE 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 ( 77239340Sjkim ACPI_GPE_EVENT_INFO *GpeEventInfo) 78209746Sjkim{ 79209746Sjkim 80209746Sjkim return ((UINT32) 1 << 81239340Sjkim (GpeEventInfo->GpeNumber - GpeEventInfo->RegisterInfo->BaseGpeNumber)); 82209746Sjkim} 83209746Sjkim 84209746Sjkim 85209746Sjkim/****************************************************************************** 86209746Sjkim * 87209746Sjkim * FUNCTION: AcpiHwLowSetGpe 88209746Sjkim * 89193267Sjkim * PARAMETERS: GpeEventInfo - Info block for the GPE to be disabled 90209746Sjkim * Action - Enable or disable 91193267Sjkim * 92193267Sjkim * RETURN: Status 93193267Sjkim * 94209746Sjkim * DESCRIPTION: Enable or disable a single GPE in the parent enable register. 95193267Sjkim * 96193267Sjkim ******************************************************************************/ 97193267Sjkim 98193267SjkimACPI_STATUS 99209746SjkimAcpiHwLowSetGpe ( 100209746Sjkim ACPI_GPE_EVENT_INFO *GpeEventInfo, 101209746Sjkim UINT32 Action) 102193267Sjkim{ 103193267Sjkim ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 104193267Sjkim ACPI_STATUS Status; 105193267Sjkim UINT32 EnableMask; 106209746Sjkim UINT32 RegisterBit; 107193267Sjkim 108193267Sjkim 109209746Sjkim ACPI_FUNCTION_ENTRY (); 110209746Sjkim 111209746Sjkim 112193267Sjkim /* Get the info block for the entire GPE register */ 113193267Sjkim 114193267Sjkim GpeRegisterInfo = GpeEventInfo->RegisterInfo; 115193267Sjkim if (!GpeRegisterInfo) 116193267Sjkim { 117193267Sjkim return (AE_NOT_EXIST); 118193267Sjkim } 119193267Sjkim 120193267Sjkim /* Get current value of the enable register that contains this GPE */ 121193267Sjkim 122197104Sjkim Status = AcpiHwRead (&EnableMask, &GpeRegisterInfo->EnableAddress); 123193267Sjkim if (ACPI_FAILURE (Status)) 124193267Sjkim { 125193267Sjkim return (Status); 126193267Sjkim } 127193267Sjkim 128209746Sjkim /* Set or clear just the bit that corresponds to this GPE */ 129193267Sjkim 130239340Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); 131209746Sjkim switch (Action) 132209746Sjkim { 133209746Sjkim case ACPI_GPE_CONDITIONAL_ENABLE: 134193267Sjkim 135209746Sjkim /* Only enable if the EnableForRun bit is set */ 136193267Sjkim 137209746Sjkim if (!(RegisterBit & GpeRegisterInfo->EnableForRun)) 138209746Sjkim { 139209746Sjkim return (AE_BAD_PARAMETER); 140209746Sjkim } 141193267Sjkim 142209746Sjkim /*lint -fallthrough */ 143193267Sjkim 144209746Sjkim case ACPI_GPE_ENABLE: 145250838Sjkim 146209746Sjkim ACPI_SET_BIT (EnableMask, RegisterBit); 147209746Sjkim break; 148193267Sjkim 149209746Sjkim case ACPI_GPE_DISABLE: 150250838Sjkim 151209746Sjkim ACPI_CLEAR_BIT (EnableMask, RegisterBit); 152209746Sjkim break; 15367754Smsmith 154209746Sjkim default: 155250838Sjkim 156245582Sjkim ACPI_ERROR ((AE_INFO, "Invalid GPE Action, %u", 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 */ 202239340Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); 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 250239340Sjkim RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); 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