aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/dev/acpica/events/evgpeblk.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/events/evgpeblk.c')
-rw-r--r--sys/contrib/dev/acpica/events/evgpeblk.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/sys/contrib/dev/acpica/events/evgpeblk.c b/sys/contrib/dev/acpica/events/evgpeblk.c
index 4c115fbebe51..f434fb582f0e 100644
--- a/sys/contrib/dev/acpica/events/evgpeblk.c
+++ b/sys/contrib/dev/acpica/events/evgpeblk.c
@@ -613,6 +613,18 @@ AcpiEvInitializeGpeBlock (
GpeIndex = (i * ACPI_GPE_REGISTER_WIDTH) + j;
GpeEventInfo = &GpeBlock->EventInfo[GpeIndex];
+ GpeNumber = GpeIndex + GpeBlock->BlockBaseNumber;
+
+ /*
+ * If the GPE has already been enabled for runtime
+ * signalling, make sure that it remains enabled, but
+ * do not increment its reference count.
+ */
+ if (GpeEventInfo->RuntimeCount)
+ {
+ Status = AcpiEvEnableGpe (GpeEventInfo);
+ goto Enabled;
+ }
/* Ignore GPEs that can wake the system */
@@ -634,9 +646,8 @@ AcpiEvInitializeGpeBlock (
/* Enable this GPE */
- GpeNumber = GpeIndex + GpeBlock->BlockBaseNumber;
- Status = AcpiEnableGpe (GpeDevice, GpeNumber,
- ACPI_GPE_TYPE_RUNTIME);
+ Status = AcpiEnableGpe (GpeDevice, GpeNumber);
+Enabled:
if (ACPI_FAILURE (Status))
{
ACPI_EXCEPTION ((AE_INFO, Status,