diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2010-08-02 17:13:58 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2010-08-02 17:13:58 +0000 |
commit | 70b7830dd2d1272ab45568772e1ddfe337c6ff0c (patch) | |
tree | 7b5f37fb57942492a293f4ea3bb00ecfc1d546b6 /sys/dev/acpi/acpiec.c | |
parent | 69cb66963e5fbbc966db55e0e7aa0a54b35bbf3e (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.c | 3 |
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); |