Patchwork HDA: Honor WAKEEN bits when deciding to raise an interrupt on codec status

login
register
mail settings
Submitter François Revol
Date Nov. 7, 2010, 3:12 p.m.
Message ID <C9DB093D-7325-41DF-86F1-453880A5181D@free.fr>
Download mbox | patch
Permalink /patch/70350/
State New
Headers show

Comments

François Revol - Nov. 7, 2010, 3:12 p.m.
From 2e6c61248c76d3f0c511658b9f34660d034703a4 Mon Sep 17 00:00:00 2001

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>
---
 hw/intel-hda.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
malc - Nov. 7, 2010, 5:24 p.m.
On Sun, 7 Nov 2010, Fran?ois Revol wrote:

> From 2e6c61248c76d3f0c511658b9f34660d034703a4 Mon Sep 17 00:00:00 2001
> 
> 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.
> 

Talk this over with the author of intel hda.

Patch

diff --git a/hw/intel-hda.c b/hw/intel-hda.c
index ccb059d..f1bd203 100644
--- a/hw/intel-hda.c
+++ b/hw/intel-hda.c
@@ -235,7 +235,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);
     }
 
@@ -617,6 +617,7 @@  static const struct IntelHDAReg regtab[] = {
     [ ICH6_REG_WAKEEN ] = {
         .name     = "WAKEEN",
         .size     = 2,
+        .wmask    = 0x3fff,
         .offset   = offsetof(IntelHDAState, wake_en),
     },
     [ ICH6_REG_STATESTS ] = {