📄 hwgpe.c
字号:
if (RegisterBit & InByte) { LocalEventStatus |= ACPI_EVENT_FLAG_SET; } /* Set return value */ (*EventStatus) = LocalEventStatus;UnlockAndExit: return (Status);}/****************************************************************************** * * FUNCTION: AcpiHwDisableGpeBlock * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Disable all GPEs within a single GPE block * ******************************************************************************/ACPI_STATUSAcpiHwDisableGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock){ UINT32 i; ACPI_STATUS Status; /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { /* Disable all GPEs in this register */ Status = AcpiHwLowLevelWrite (8, 0x00, &GpeBlock->RegisterInfo[i].EnableAddress); if (ACPI_FAILURE (Status)) { return (Status); } } return (AE_OK);}/****************************************************************************** * * FUNCTION: AcpiHwClearGpeBlock * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Clear status bits for all GPEs within a single GPE block * ******************************************************************************/ACPI_STATUSAcpiHwClearGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock){ UINT32 i; ACPI_STATUS Status; /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { /* Clear status on all GPEs in this register */ Status = AcpiHwLowLevelWrite (8, 0xFF, &GpeBlock->RegisterInfo[i].StatusAddress); if (ACPI_FAILURE (Status)) { return (Status); } } return (AE_OK);}/****************************************************************************** * * FUNCTION: AcpiHwEnableRuntimeGpeBlock * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Enable all "runtime" GPEs within a single GPE block. Includes * combination wake/run GPEs. * ******************************************************************************/ACPI_STATUSAcpiHwEnableRuntimeGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock){ UINT32 i; ACPI_STATUS Status; /* NOTE: assumes that all GPEs are currently disabled */ /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { if (!GpeBlock->RegisterInfo[i].EnableForRun) { continue; } /* Enable all "runtime" GPEs in this register */ Status = AcpiHwLowLevelWrite (8, GpeBlock->RegisterInfo[i].EnableForRun, &GpeBlock->RegisterInfo[i].EnableAddress); if (ACPI_FAILURE (Status)) { return (Status); } } return (AE_OK);}/****************************************************************************** * * FUNCTION: AcpiHwEnableWakeupGpeBlock * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Enable all "wake" GPEs within a single GPE block. Includes * combination wake/run GPEs. * ******************************************************************************/static ACPI_STATUSAcpiHwEnableWakeupGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock){ UINT32 i; ACPI_STATUS Status; /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { if (!GpeBlock->RegisterInfo[i].EnableForWake) { continue; } /* Enable all "wake" GPEs in this register */ Status = AcpiHwLowLevelWrite (8, GpeBlock->RegisterInfo[i].EnableForWake, &GpeBlock->RegisterInfo[i].EnableAddress); if (ACPI_FAILURE (Status)) { return (Status); } } return (AE_OK);}/****************************************************************************** * * FUNCTION: AcpiHwDisableAllGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Disable and clear all GPEs in all GPE blocks * ******************************************************************************/ACPI_STATUSAcpiHwDisableAllGpes ( void){ ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwDisableAllGpes); Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock); Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock); return_ACPI_STATUS (Status);}/****************************************************************************** * * FUNCTION: AcpiHwEnableAllRuntimeGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Enable all "runtime" GPEs, in all GPE blocks * ******************************************************************************/ACPI_STATUSAcpiHwEnableAllRuntimeGpes ( void){ ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwEnableAllRuntimeGpes); Status = AcpiEvWalkGpeList (AcpiHwEnableRuntimeGpeBlock); return_ACPI_STATUS (Status);}/****************************************************************************** * * FUNCTION: AcpiHwEnableAllWakeupGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Enable all "wakeup" GPEs, in all GPE blocks * ******************************************************************************/ACPI_STATUSAcpiHwEnableAllWakeupGpes ( void){ ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwEnableAllWakeupGpes); Status = AcpiEvWalkGpeList (AcpiHwEnableWakeupGpeBlock); return_ACPI_STATUS (Status);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -