diff --git a/sound/pci/oxygen/oxygen.h b/sound/pci/oxygen/oxygen.h
index 8fc9e7c..55ce244 100644
--- a/sound/pci/oxygen/oxygen.h
+++ b/sound/pci/oxygen/oxygen.h
@@ -3,6 +3,7 @@
 
 #include <linux/mutex.h>
 #include <linux/spinlock.h>
+#include <linux/wait.h>
 #include <linux/workqueue.h>
 #include "oxygen_regs.h"
 
@@ -65,6 +66,7 @@
 	struct snd_pcm_substream *streams[PCM_COUNT];
 	struct snd_kcontrol *controls[CONTROL_COUNT];
 	struct work_struct spdif_input_bits_work;
+	wait_queue_head_t ac97_waitqueue;
 };
 
 struct oxygen_model {
diff --git a/sound/pci/oxygen/oxygen_io.c b/sound/pci/oxygen/oxygen_io.c
index d0cdce0..74e23ef 100644
--- a/sound/pci/oxygen/oxygen_io.c
+++ b/sound/pci/oxygen/oxygen_io.c
@@ -85,14 +85,22 @@
 
 static int oxygen_ac97_wait(struct oxygen *chip, unsigned int mask)
 {
-	unsigned long timeout = jiffies + msecs_to_jiffies(1);
-	do {
-		udelay(5);
-		cond_resched();
-		if (oxygen_read8(chip, OXYGEN_AC97_INTERRUPT_STATUS) & mask)
-			return 0;
-	} while (time_after_eq(timeout, jiffies));
-	return -EIO;
+	u8 status = 0;
+
+	/*
+	 * Reading the status register also clears the bits, so we have to save
+	 * the read bits in status.
+	 */
+	wait_event_timeout(chip->ac97_waitqueue,
+			   ({ status |= oxygen_read8(chip, OXYGEN_AC97_INTERRUPT_STATUS);
+			      status & mask; }),
+			   msecs_to_jiffies(1) + 1);
+	/*
+	 * Check even after a timeout because this function should not require
+	 * the AC'97 interrupt to be enabled.
+	 */
+	status |= oxygen_read8(chip, OXYGEN_AC97_INTERRUPT_STATUS);
+	return status & mask ? 0 : -EIO;
 }
 
 /*
diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c
index d98867c..de6bf41 100644
--- a/sound/pci/oxygen/oxygen_lib.c
+++ b/sound/pci/oxygen/oxygen_lib.c
@@ -53,7 +53,8 @@
 			  OXYGEN_CHANNEL_MULTICH |
 			  OXYGEN_CHANNEL_AC97 |
 			  OXYGEN_INT_SPDIF_IN_DETECT |
-			  OXYGEN_INT_GPIO);
+			  OXYGEN_INT_GPIO |
+			  OXYGEN_INT_AC97);
 	if (clear) {
 		if (clear & OXYGEN_INT_SPDIF_IN_DETECT)
 			chip->interrupt_mask &= ~OXYGEN_INT_SPDIF_IN_DETECT;
@@ -89,6 +90,9 @@
 	if ((status & OXYGEN_INT_MIDI) && chip->midi)
 		snd_mpu401_uart_interrupt(0, chip->midi->private_data);
 
+	if (status & OXYGEN_INT_AC97)
+		wake_up(&chip->ac97_waitqueue);
+
 	return IRQ_HANDLED;
 }
 
@@ -306,7 +310,9 @@
 		      (2 << OXYGEN_A_MONITOR_ROUTE_2_SHIFT) |
 		      (3 << OXYGEN_A_MONITOR_ROUTE_3_SHIFT));
 
-	oxygen_write8(chip, OXYGEN_AC97_INTERRUPT_MASK, 0);
+	oxygen_write8(chip, OXYGEN_AC97_INTERRUPT_MASK,
+		      OXYGEN_AC97_INT_READ_DONE |
+		      OXYGEN_AC97_INT_WRITE_DONE);
 	oxygen_write32(chip, OXYGEN_AC97_OUT_CONFIG, 0);
 	oxygen_write32(chip, OXYGEN_AC97_IN_CONFIG, 0);
 	if (!(chip->has_ac97_0 | chip->has_ac97_1))
@@ -408,6 +414,7 @@
 	mutex_init(&chip->mutex);
 	INIT_WORK(&chip->spdif_input_bits_work,
 		  oxygen_spdif_input_bits_changed);
+	init_waitqueue_head(&chip->ac97_waitqueue);
 
 	err = pci_enable_device(pci);
 	if (err < 0)
@@ -471,7 +478,7 @@
 	oxygen_proc_init(chip);
 
 	spin_lock_irq(&chip->reg_lock);
-	chip->interrupt_mask |= OXYGEN_INT_SPDIF_IN_DETECT;
+	chip->interrupt_mask |= OXYGEN_INT_SPDIF_IN_DETECT | OXYGEN_INT_AC97;
 	oxygen_write16(chip, OXYGEN_INTERRUPT_MASK, chip->interrupt_mask);
 	spin_unlock_irq(&chip->reg_lock);
 
