1*3446Smrj 2*3446Smrj /****************************************************************************** 3*3446Smrj * 4*3446Smrj * Module Name: hwgpe - Low level GPE enable/disable/clear functions 5*3446Smrj * $Revision: 1.73 $ 6*3446Smrj * 7*3446Smrj *****************************************************************************/ 8*3446Smrj 9*3446Smrj /****************************************************************************** 10*3446Smrj * 11*3446Smrj * 1. Copyright Notice 12*3446Smrj * 13*3446Smrj * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. 14*3446Smrj * All rights reserved. 15*3446Smrj * 16*3446Smrj * 2. License 17*3446Smrj * 18*3446Smrj * 2.1. This is your license from Intel Corp. under its intellectual property 19*3446Smrj * rights. You may have additional license terms from the party that provided 20*3446Smrj * you this software, covering your right to use that party's intellectual 21*3446Smrj * property rights. 22*3446Smrj * 23*3446Smrj * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 24*3446Smrj * copy of the source code appearing in this file ("Covered Code") an 25*3446Smrj * irrevocable, perpetual, worldwide license under Intel's copyrights in the 26*3446Smrj * base code distributed originally by Intel ("Original Intel Code") to copy, 27*3446Smrj * make derivatives, distribute, use and display any portion of the Covered 28*3446Smrj * Code in any form, with the right to sublicense such rights; and 29*3446Smrj * 30*3446Smrj * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 31*3446Smrj * license (with the right to sublicense), under only those claims of Intel 32*3446Smrj * patents that are infringed by the Original Intel Code, to make, use, sell, 33*3446Smrj * offer to sell, and import the Covered Code and derivative works thereof 34*3446Smrj * solely to the minimum extent necessary to exercise the above copyright 35*3446Smrj * license, and in no event shall the patent license extend to any additions 36*3446Smrj * to or modifications of the Original Intel Code. No other license or right 37*3446Smrj * is granted directly or by implication, estoppel or otherwise; 38*3446Smrj * 39*3446Smrj * The above copyright and patent license is granted only if the following 40*3446Smrj * conditions are met: 41*3446Smrj * 42*3446Smrj * 3. Conditions 43*3446Smrj * 44*3446Smrj * 3.1. Redistribution of Source with Rights to Further Distribute Source. 45*3446Smrj * Redistribution of source code of any substantial portion of the Covered 46*3446Smrj * Code or modification with rights to further distribute source must include 47*3446Smrj * the above Copyright Notice, the above License, this list of Conditions, 48*3446Smrj * and the following Disclaimer and Export Compliance provision. In addition, 49*3446Smrj * Licensee must cause all Covered Code to which Licensee contributes to 50*3446Smrj * contain a file documenting the changes Licensee made to create that Covered 51*3446Smrj * Code and the date of any change. Licensee must include in that file the 52*3446Smrj * documentation of any changes made by any predecessor Licensee. Licensee 53*3446Smrj * must include a prominent statement that the modification is derived, 54*3446Smrj * directly or indirectly, from Original Intel Code. 55*3446Smrj * 56*3446Smrj * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 57*3446Smrj * Redistribution of source code of any substantial portion of the Covered 58*3446Smrj * Code or modification without rights to further distribute source must 59*3446Smrj * include the following Disclaimer and Export Compliance provision in the 60*3446Smrj * documentation and/or other materials provided with distribution. In 61*3446Smrj * addition, Licensee may not authorize further sublicense of source of any 62*3446Smrj * portion of the Covered Code, and must include terms to the effect that the 63*3446Smrj * license from Licensee to its licensee is limited to the intellectual 64*3446Smrj * property embodied in the software Licensee provides to its licensee, and 65*3446Smrj * not to intellectual property embodied in modifications its licensee may 66*3446Smrj * make. 67*3446Smrj * 68*3446Smrj * 3.3. Redistribution of Executable. Redistribution in executable form of any 69*3446Smrj * substantial portion of the Covered Code or modification must reproduce the 70*3446Smrj * above Copyright Notice, and the following Disclaimer and Export Compliance 71*3446Smrj * provision in the documentation and/or other materials provided with the 72*3446Smrj * distribution. 73*3446Smrj * 74*3446Smrj * 3.4. Intel retains all right, title, and interest in and to the Original 75*3446Smrj * Intel Code. 76*3446Smrj * 77*3446Smrj * 3.5. Neither the name Intel nor any other trademark owned or controlled by 78*3446Smrj * Intel shall be used in advertising or otherwise to promote the sale, use or 79*3446Smrj * other dealings in products derived from or relating to the Covered Code 80*3446Smrj * without prior written authorization from Intel. 81*3446Smrj * 82*3446Smrj * 4. Disclaimer and Export Compliance 83*3446Smrj * 84*3446Smrj * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 85*3446Smrj * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 86*3446Smrj * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 87*3446Smrj * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 88*3446Smrj * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 89*3446Smrj * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 90*3446Smrj * PARTICULAR PURPOSE. 91*3446Smrj * 92*3446Smrj * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 93*3446Smrj * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 94*3446Smrj * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 95*3446Smrj * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 96*3446Smrj * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 97*3446Smrj * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 98*3446Smrj * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 99*3446Smrj * LIMITED REMEDY. 100*3446Smrj * 101*3446Smrj * 4.3. Licensee shall not export, either directly or indirectly, any of this 102*3446Smrj * software or system incorporating such software without first obtaining any 103*3446Smrj * required license or other approval from the U. S. Department of Commerce or 104*3446Smrj * any other agency or department of the United States Government. In the 105*3446Smrj * event Licensee exports any such software from the United States or 106*3446Smrj * re-exports any such software from a foreign destination, Licensee shall 107*3446Smrj * ensure that the distribution and export/re-export of the software is in 108*3446Smrj * compliance with all laws, regulations, orders, or other restrictions of the 109*3446Smrj * U.S. Export Administration Regulations. Licensee agrees that neither it nor 110*3446Smrj * any of its subsidiaries will export/re-export any technical data, process, 111*3446Smrj * software, or service, directly or indirectly, to any country for which the 112*3446Smrj * United States government or any agency thereof requires an export license, 113*3446Smrj * other governmental approval, or letter of assurance, without first obtaining 114*3446Smrj * such license, approval or letter. 115*3446Smrj * 116*3446Smrj *****************************************************************************/ 117*3446Smrj 118*3446Smrj #include "acpi.h" 119*3446Smrj #include "acevents.h" 120*3446Smrj 121*3446Smrj #define _COMPONENT ACPI_HARDWARE 122*3446Smrj ACPI_MODULE_NAME ("hwgpe") 123*3446Smrj 124*3446Smrj /* Local prototypes */ 125*3446Smrj 126*3446Smrj static ACPI_STATUS 127*3446Smrj AcpiHwEnableWakeupGpeBlock ( 128*3446Smrj ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 129*3446Smrj ACPI_GPE_BLOCK_INFO *GpeBlock); 130*3446Smrj 131*3446Smrj 132*3446Smrj /****************************************************************************** 133*3446Smrj * 134*3446Smrj * FUNCTION: AcpiHwWriteGpeEnableReg 135*3446Smrj * 136*3446Smrj * PARAMETERS: GpeEventInfo - Info block for the GPE to be enabled 137*3446Smrj * 138*3446Smrj * RETURN: Status 139*3446Smrj * 140*3446Smrj * DESCRIPTION: Write a GPE enable register. Note: The bit for this GPE must 141*3446Smrj * already be cleared or set in the parent register 142*3446Smrj * EnableForRun mask. 143*3446Smrj * 144*3446Smrj ******************************************************************************/ 145*3446Smrj 146*3446Smrj ACPI_STATUS 147*3446Smrj AcpiHwWriteGpeEnableReg ( 148*3446Smrj ACPI_GPE_EVENT_INFO *GpeEventInfo) 149*3446Smrj { 150*3446Smrj ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 151*3446Smrj ACPI_STATUS Status; 152*3446Smrj 153*3446Smrj 154*3446Smrj ACPI_FUNCTION_ENTRY (); 155*3446Smrj 156*3446Smrj 157*3446Smrj /* Get the info block for the entire GPE register */ 158*3446Smrj 159*3446Smrj GpeRegisterInfo = GpeEventInfo->RegisterInfo; 160*3446Smrj if (!GpeRegisterInfo) 161*3446Smrj { 162*3446Smrj return (AE_NOT_EXIST); 163*3446Smrj } 164*3446Smrj 165*3446Smrj /* Write the entire GPE (runtime) enable register */ 166*3446Smrj 167*3446Smrj Status = AcpiHwLowLevelWrite (8, GpeRegisterInfo->EnableForRun, 168*3446Smrj &GpeRegisterInfo->EnableAddress); 169*3446Smrj 170*3446Smrj return (Status); 171*3446Smrj } 172*3446Smrj 173*3446Smrj 174*3446Smrj /****************************************************************************** 175*3446Smrj * 176*3446Smrj * FUNCTION: AcpiHwClearGpe 177*3446Smrj * 178*3446Smrj * PARAMETERS: GpeEventInfo - Info block for the GPE to be cleared 179*3446Smrj * 180*3446Smrj * RETURN: Status 181*3446Smrj * 182*3446Smrj * DESCRIPTION: Clear the status bit for a single GPE. 183*3446Smrj * 184*3446Smrj ******************************************************************************/ 185*3446Smrj 186*3446Smrj ACPI_STATUS 187*3446Smrj AcpiHwClearGpe ( 188*3446Smrj ACPI_GPE_EVENT_INFO *GpeEventInfo) 189*3446Smrj { 190*3446Smrj ACPI_STATUS Status; 191*3446Smrj 192*3446Smrj 193*3446Smrj ACPI_FUNCTION_ENTRY (); 194*3446Smrj 195*3446Smrj 196*3446Smrj /* 197*3446Smrj * Write a one to the appropriate bit in the status register to 198*3446Smrj * clear this GPE. 199*3446Smrj */ 200*3446Smrj Status = AcpiHwLowLevelWrite (8, GpeEventInfo->RegisterBit, 201*3446Smrj &GpeEventInfo->RegisterInfo->StatusAddress); 202*3446Smrj 203*3446Smrj return (Status); 204*3446Smrj } 205*3446Smrj 206*3446Smrj 207*3446Smrj /****************************************************************************** 208*3446Smrj * 209*3446Smrj * FUNCTION: AcpiHwGetGpeStatus 210*3446Smrj * 211*3446Smrj * PARAMETERS: GpeEventInfo - Info block for the GPE to queried 212*3446Smrj * EventStatus - Where the GPE status is returned 213*3446Smrj * 214*3446Smrj * RETURN: Status 215*3446Smrj * 216*3446Smrj * DESCRIPTION: Return the status of a single GPE. 217*3446Smrj * 218*3446Smrj ******************************************************************************/ 219*3446Smrj 220*3446Smrj ACPI_STATUS 221*3446Smrj AcpiHwGetGpeStatus ( 222*3446Smrj ACPI_GPE_EVENT_INFO *GpeEventInfo, 223*3446Smrj ACPI_EVENT_STATUS *EventStatus) 224*3446Smrj { 225*3446Smrj UINT32 InByte; 226*3446Smrj UINT8 RegisterBit; 227*3446Smrj ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; 228*3446Smrj ACPI_STATUS Status; 229*3446Smrj ACPI_EVENT_STATUS LocalEventStatus = 0; 230*3446Smrj 231*3446Smrj 232*3446Smrj ACPI_FUNCTION_ENTRY (); 233*3446Smrj 234*3446Smrj 235*3446Smrj if (!EventStatus) 236*3446Smrj { 237*3446Smrj return (AE_BAD_PARAMETER); 238*3446Smrj } 239*3446Smrj 240*3446Smrj /* Get the info block for the entire GPE register */ 241*3446Smrj 242*3446Smrj GpeRegisterInfo = GpeEventInfo->RegisterInfo; 243*3446Smrj 244*3446Smrj /* Get the register bitmask for this GPE */ 245*3446Smrj 246*3446Smrj RegisterBit = GpeEventInfo->RegisterBit; 247*3446Smrj 248*3446Smrj /* GPE currently enabled? (enabled for runtime?) */ 249*3446Smrj 250*3446Smrj if (RegisterBit & GpeRegisterInfo->EnableForRun) 251*3446Smrj { 252*3446Smrj LocalEventStatus |= ACPI_EVENT_FLAG_ENABLED; 253*3446Smrj } 254*3446Smrj 255*3446Smrj /* GPE enabled for wake? */ 256*3446Smrj 257*3446Smrj if (RegisterBit & GpeRegisterInfo->EnableForWake) 258*3446Smrj { 259*3446Smrj LocalEventStatus |= ACPI_EVENT_FLAG_WAKE_ENABLED; 260*3446Smrj } 261*3446Smrj 262*3446Smrj /* GPE currently active (status bit == 1)? */ 263*3446Smrj 264*3446Smrj Status = AcpiHwLowLevelRead (8, &InByte, &GpeRegisterInfo->StatusAddress); 265*3446Smrj if (ACPI_FAILURE (Status)) 266*3446Smrj { 267*3446Smrj goto UnlockAndExit; 268*3446Smrj } 269*3446Smrj 270*3446Smrj if (RegisterBit & InByte) 271*3446Smrj { 272*3446Smrj LocalEventStatus |= ACPI_EVENT_FLAG_SET; 273*3446Smrj } 274*3446Smrj 275*3446Smrj /* Set return value */ 276*3446Smrj 277*3446Smrj (*EventStatus) = LocalEventStatus; 278*3446Smrj 279*3446Smrj 280*3446Smrj UnlockAndExit: 281*3446Smrj return (Status); 282*3446Smrj } 283*3446Smrj 284*3446Smrj 285*3446Smrj /****************************************************************************** 286*3446Smrj * 287*3446Smrj * FUNCTION: AcpiHwDisableGpeBlock 288*3446Smrj * 289*3446Smrj * PARAMETERS: GpeXruptInfo - GPE Interrupt info 290*3446Smrj * GpeBlock - Gpe Block info 291*3446Smrj * 292*3446Smrj * RETURN: Status 293*3446Smrj * 294*3446Smrj * DESCRIPTION: Disable all GPEs within a single GPE block 295*3446Smrj * 296*3446Smrj ******************************************************************************/ 297*3446Smrj 298*3446Smrj ACPI_STATUS 299*3446Smrj AcpiHwDisableGpeBlock ( 300*3446Smrj ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 301*3446Smrj ACPI_GPE_BLOCK_INFO *GpeBlock) 302*3446Smrj { 303*3446Smrj UINT32 i; 304*3446Smrj ACPI_STATUS Status; 305*3446Smrj 306*3446Smrj 307*3446Smrj /* Examine each GPE Register within the block */ 308*3446Smrj 309*3446Smrj for (i = 0; i < GpeBlock->RegisterCount; i++) 310*3446Smrj { 311*3446Smrj /* Disable all GPEs in this register */ 312*3446Smrj 313*3446Smrj Status = AcpiHwLowLevelWrite (8, 0x00, 314*3446Smrj &GpeBlock->RegisterInfo[i].EnableAddress); 315*3446Smrj if (ACPI_FAILURE (Status)) 316*3446Smrj { 317*3446Smrj return (Status); 318*3446Smrj } 319*3446Smrj } 320*3446Smrj 321*3446Smrj return (AE_OK); 322*3446Smrj } 323*3446Smrj 324*3446Smrj 325*3446Smrj /****************************************************************************** 326*3446Smrj * 327*3446Smrj * FUNCTION: AcpiHwClearGpeBlock 328*3446Smrj * 329*3446Smrj * PARAMETERS: GpeXruptInfo - GPE Interrupt info 330*3446Smrj * GpeBlock - Gpe Block info 331*3446Smrj * 332*3446Smrj * RETURN: Status 333*3446Smrj * 334*3446Smrj * DESCRIPTION: Clear status bits for all GPEs within a single GPE block 335*3446Smrj * 336*3446Smrj ******************************************************************************/ 337*3446Smrj 338*3446Smrj ACPI_STATUS 339*3446Smrj AcpiHwClearGpeBlock ( 340*3446Smrj ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 341*3446Smrj ACPI_GPE_BLOCK_INFO *GpeBlock) 342*3446Smrj { 343*3446Smrj UINT32 i; 344*3446Smrj ACPI_STATUS Status; 345*3446Smrj 346*3446Smrj 347*3446Smrj /* Examine each GPE Register within the block */ 348*3446Smrj 349*3446Smrj for (i = 0; i < GpeBlock->RegisterCount; i++) 350*3446Smrj { 351*3446Smrj /* Clear status on all GPEs in this register */ 352*3446Smrj 353*3446Smrj Status = AcpiHwLowLevelWrite (8, 0xFF, 354*3446Smrj &GpeBlock->RegisterInfo[i].StatusAddress); 355*3446Smrj if (ACPI_FAILURE (Status)) 356*3446Smrj { 357*3446Smrj return (Status); 358*3446Smrj } 359*3446Smrj } 360*3446Smrj 361*3446Smrj return (AE_OK); 362*3446Smrj } 363*3446Smrj 364*3446Smrj 365*3446Smrj /****************************************************************************** 366*3446Smrj * 367*3446Smrj * FUNCTION: AcpiHwEnableRuntimeGpeBlock 368*3446Smrj * 369*3446Smrj * PARAMETERS: GpeXruptInfo - GPE Interrupt info 370*3446Smrj * GpeBlock - Gpe Block info 371*3446Smrj * 372*3446Smrj * RETURN: Status 373*3446Smrj * 374*3446Smrj * DESCRIPTION: Enable all "runtime" GPEs within a single GPE block. Includes 375*3446Smrj * combination wake/run GPEs. 376*3446Smrj * 377*3446Smrj ******************************************************************************/ 378*3446Smrj 379*3446Smrj ACPI_STATUS 380*3446Smrj AcpiHwEnableRuntimeGpeBlock ( 381*3446Smrj ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 382*3446Smrj ACPI_GPE_BLOCK_INFO *GpeBlock) 383*3446Smrj { 384*3446Smrj UINT32 i; 385*3446Smrj ACPI_STATUS Status; 386*3446Smrj 387*3446Smrj 388*3446Smrj /* NOTE: assumes that all GPEs are currently disabled */ 389*3446Smrj 390*3446Smrj /* Examine each GPE Register within the block */ 391*3446Smrj 392*3446Smrj for (i = 0; i < GpeBlock->RegisterCount; i++) 393*3446Smrj { 394*3446Smrj if (!GpeBlock->RegisterInfo[i].EnableForRun) 395*3446Smrj { 396*3446Smrj continue; 397*3446Smrj } 398*3446Smrj 399*3446Smrj /* Enable all "runtime" GPEs in this register */ 400*3446Smrj 401*3446Smrj Status = AcpiHwLowLevelWrite (8, GpeBlock->RegisterInfo[i].EnableForRun, 402*3446Smrj &GpeBlock->RegisterInfo[i].EnableAddress); 403*3446Smrj if (ACPI_FAILURE (Status)) 404*3446Smrj { 405*3446Smrj return (Status); 406*3446Smrj } 407*3446Smrj } 408*3446Smrj 409*3446Smrj return (AE_OK); 410*3446Smrj } 411*3446Smrj 412*3446Smrj 413*3446Smrj /****************************************************************************** 414*3446Smrj * 415*3446Smrj * FUNCTION: AcpiHwEnableWakeupGpeBlock 416*3446Smrj * 417*3446Smrj * PARAMETERS: GpeXruptInfo - GPE Interrupt info 418*3446Smrj * GpeBlock - Gpe Block info 419*3446Smrj * 420*3446Smrj * RETURN: Status 421*3446Smrj * 422*3446Smrj * DESCRIPTION: Enable all "wake" GPEs within a single GPE block. Includes 423*3446Smrj * combination wake/run GPEs. 424*3446Smrj * 425*3446Smrj ******************************************************************************/ 426*3446Smrj 427*3446Smrj static ACPI_STATUS 428*3446Smrj AcpiHwEnableWakeupGpeBlock ( 429*3446Smrj ACPI_GPE_XRUPT_INFO *GpeXruptInfo, 430*3446Smrj ACPI_GPE_BLOCK_INFO *GpeBlock) 431*3446Smrj { 432*3446Smrj UINT32 i; 433*3446Smrj ACPI_STATUS Status; 434*3446Smrj 435*3446Smrj 436*3446Smrj /* Examine each GPE Register within the block */ 437*3446Smrj 438*3446Smrj for (i = 0; i < GpeBlock->RegisterCount; i++) 439*3446Smrj { 440*3446Smrj if (!GpeBlock->RegisterInfo[i].EnableForWake) 441*3446Smrj { 442*3446Smrj continue; 443*3446Smrj } 444*3446Smrj 445*3446Smrj /* Enable all "wake" GPEs in this register */ 446*3446Smrj 447*3446Smrj Status = AcpiHwLowLevelWrite (8, 448*3446Smrj GpeBlock->RegisterInfo[i].EnableForWake, 449*3446Smrj &GpeBlock->RegisterInfo[i].EnableAddress); 450*3446Smrj if (ACPI_FAILURE (Status)) 451*3446Smrj { 452*3446Smrj return (Status); 453*3446Smrj } 454*3446Smrj } 455*3446Smrj 456*3446Smrj return (AE_OK); 457*3446Smrj } 458*3446Smrj 459*3446Smrj 460*3446Smrj /****************************************************************************** 461*3446Smrj * 462*3446Smrj * FUNCTION: AcpiHwDisableAllGpes 463*3446Smrj * 464*3446Smrj * PARAMETERS: None 465*3446Smrj * 466*3446Smrj * RETURN: Status 467*3446Smrj * 468*3446Smrj * DESCRIPTION: Disable and clear all GPEs in all GPE blocks 469*3446Smrj * 470*3446Smrj ******************************************************************************/ 471*3446Smrj 472*3446Smrj ACPI_STATUS 473*3446Smrj AcpiHwDisableAllGpes ( 474*3446Smrj void) 475*3446Smrj { 476*3446Smrj ACPI_STATUS Status; 477*3446Smrj 478*3446Smrj 479*3446Smrj ACPI_FUNCTION_TRACE (HwDisableAllGpes); 480*3446Smrj 481*3446Smrj 482*3446Smrj Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock); 483*3446Smrj Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock); 484*3446Smrj return_ACPI_STATUS (Status); 485*3446Smrj } 486*3446Smrj 487*3446Smrj 488*3446Smrj /****************************************************************************** 489*3446Smrj * 490*3446Smrj * FUNCTION: AcpiHwEnableAllRuntimeGpes 491*3446Smrj * 492*3446Smrj * PARAMETERS: None 493*3446Smrj * 494*3446Smrj * RETURN: Status 495*3446Smrj * 496*3446Smrj * DESCRIPTION: Enable all "runtime" GPEs, in all GPE blocks 497*3446Smrj * 498*3446Smrj ******************************************************************************/ 499*3446Smrj 500*3446Smrj ACPI_STATUS 501*3446Smrj AcpiHwEnableAllRuntimeGpes ( 502*3446Smrj void) 503*3446Smrj { 504*3446Smrj ACPI_STATUS Status; 505*3446Smrj 506*3446Smrj 507*3446Smrj ACPI_FUNCTION_TRACE (HwEnableAllRuntimeGpes); 508*3446Smrj 509*3446Smrj 510*3446Smrj Status = AcpiEvWalkGpeList (AcpiHwEnableRuntimeGpeBlock); 511*3446Smrj return_ACPI_STATUS (Status); 512*3446Smrj } 513*3446Smrj 514*3446Smrj 515*3446Smrj /****************************************************************************** 516*3446Smrj * 517*3446Smrj * FUNCTION: AcpiHwEnableAllWakeupGpes 518*3446Smrj * 519*3446Smrj * PARAMETERS: None 520*3446Smrj * 521*3446Smrj * RETURN: Status 522*3446Smrj * 523*3446Smrj * DESCRIPTION: Enable all "wakeup" GPEs, in all GPE blocks 524*3446Smrj * 525*3446Smrj ******************************************************************************/ 526*3446Smrj 527*3446Smrj ACPI_STATUS 528*3446Smrj AcpiHwEnableAllWakeupGpes ( 529*3446Smrj void) 530*3446Smrj { 531*3446Smrj ACPI_STATUS Status; 532*3446Smrj 533*3446Smrj 534*3446Smrj ACPI_FUNCTION_TRACE (HwEnableAllWakeupGpes); 535*3446Smrj 536*3446Smrj 537*3446Smrj Status = AcpiEvWalkGpeList (AcpiHwEnableWakeupGpeBlock); 538*3446Smrj return_ACPI_STATUS (Status); 539*3446Smrj } 540*3446Smrj 541