aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrançois Revol <revol@free.fr>2010-11-09 11:47:46 +0100
committermalc <av1474@comtv.ru>2010-11-09 16:51:12 +0300
commitaf93485cde810f3c2f488533e0b60c99eae5d01d (patch)
tree9ec8a0da08d5c33c2f4c367e63e5ab4fb7a65895
parent129dcd2c66c3f693425f8a50c553146b8f6f4fd6 (diff)
intel-hda: Honor WAKEEN bits.
HDA: Honor WAKEEN bits when deciding to raise an interrupt on codec status change. This prevents an interrupt storm with the Haiku HDA driver which does not handle codec status changes in the irq handler. Signed-off-by: François Revol <revol@free.fr> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: malc <av1474@comtv.ru>
-rw-r--r--hw/intel-hda.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/intel-hda.c b/hw/intel-hda.c
index 78c32da473..2c1ef12491 100644
--- a/hw/intel-hda.c
+++ b/hw/intel-hda.c
@@ -246,7 +246,7 @@ static void intel_hda_update_int_sts(IntelHDAState *d)
if (d->rirb_sts & ICH6_RBSTS_OVERRUN) {
sts |= (1 << 30);
}
- if (d->state_sts) {
+ if (d->state_sts & d->wake_en) {
sts |= (1 << 30);
}
@@ -628,6 +628,7 @@ static const struct IntelHDAReg regtab[] = {
[ ICH6_REG_WAKEEN ] = {
.name = "WAKEEN",
.size = 2,
+ .wmask = 0x3fff,
.offset = offsetof(IntelHDAState, wake_en),
},
[ ICH6_REG_STATESTS ] = {