summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai2009-10-30 13:21:49 +0100
committerTakashi Iwai2009-10-30 13:21:49 +0100
commit23c4a8812a17f0af2b573a63fc991baa7d3570ed (patch)
treeb02ccb19c9e84c69e3aff6b2672df8299aaf9ff8 /sound
parentALSA: hda - Add a proper ifdef to a debug code (diff)
downloadkernel-qcow2-linux-23c4a8812a17f0af2b573a63fc991baa7d3570ed.tar.gz
kernel-qcow2-linux-23c4a8812a17f0af2b573a63fc991baa7d3570ed.tar.xz
kernel-qcow2-linux-23c4a8812a17f0af2b573a63fc991baa7d3570ed.zip
ALSA: hda - Switch to polling mode before disabling MSI
When any codec communication error happens, try to switch to the polling mode first before turning off MSI. MSI gets more stable nowadays, thus we should keep it on as much as possible. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/hda_intel.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index d0effa3563e2..a0eface6e99a 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -677,6 +677,14 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
}
}
+ if (!chip->polling_mode) {
+ snd_printk(KERN_WARNING SFX "azx_get_response timeout, "
+ "switching to polling mode: last cmd=0x%08x\n",
+ chip->last_cmd[addr]);
+ chip->polling_mode = 1;
+ goto again;
+ }
+
if (chip->msi) {
snd_printk(KERN_WARNING SFX "No response from codec, "
"disabling MSI: last cmd=0x%08x\n",
@@ -692,14 +700,6 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
goto again;
}
- if (!chip->polling_mode) {
- snd_printk(KERN_WARNING SFX "azx_get_response timeout, "
- "switching to polling mode: last cmd=0x%08x\n",
- chip->last_cmd[addr]);
- chip->polling_mode = 1;
- goto again;
- }
-
if (chip->probing) {
/* If this critical timeout happens during the codec probing
* phase, this is likely an access to a non-existing codec