summaryrefslogtreecommitdiff
path: root/sys/dev/acpi/acpiec.c
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2010-08-02 17:13:58 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2010-08-02 17:13:58 +0000
commit70b7830dd2d1272ab45568772e1ddfe337c6ff0c (patch)
tree7b5f37fb57942492a293f4ea3bb00ecfc1d546b6 /sys/dev/acpi/acpiec.c
parent69cb66963e5fbbc966db55e0e7aa0a54b35bbf3e (diff)
The EC GPE is always edge. edge interrupts have their STS bit reset
at interrupt reception; level interrupts have STS cleared when processing is complete. Since the STS has already been reset at interrupt reception we should not reset late.. Found by marco
Diffstat (limited to 'sys/dev/acpi/acpiec.c')
-rw-r--r--sys/dev/acpi/acpiec.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/dev/acpi/acpiec.c b/sys/dev/acpi/acpiec.c
index d455029fb4d..53f278affe5 100644
--- a/sys/dev/acpi/acpiec.c
+++ b/sys/dev/acpi/acpiec.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: acpiec.c,v 1.40 2010/07/29 18:32:26 kettenis Exp $ */
+/* $OpenBSD: acpiec.c,v 1.41 2010/08/02 17:13:57 deraadt Exp $ */
/*
* Copyright (c) 2006 Can Erkin Acar <canacar@openbsd.org>
*
@@ -331,7 +331,6 @@ acpiec_gpehandler(struct acpi_softc *acpi_sc, int gpe, void *arg)
/* Unmask the GPE which was blocked at interrupt time */
s = spltty();
mask = (1L << (gpe & 7));
- acpi_write_pmreg(acpi_sc, ACPIREG_GPE_STS, gpe>>3, mask);
en = acpi_read_pmreg(acpi_sc, ACPIREG_GPE_EN, gpe>>3);
acpi_write_pmreg(acpi_sc, ACPIREG_GPE_EN, gpe>>3, en | mask);
splx(s);