diff --git a/sound/pci/oxygen/oxygen.h b/sound/pci/oxygen/oxygen.h
index 248f7ed..a10c377 100644
--- a/sound/pci/oxygen/oxygen.h
+++ b/sound/pci/oxygen/oxygen.h
@@ -15,6 +15,12 @@
 #define PCM_AC97	5
 #define PCM_COUNT	6
 
+enum {
+	CONTROL_SPDIF_PCM,
+	CONTROL_SPDIF_INPUT_BITS,
+	CONTROL_COUNT
+};
+
 #define OXYGEN_PCI_SUBID(sv, sd) \
 	.vendor = PCI_VENDOR_ID_CMEDIA, \
 	.device = 0x8788, \
@@ -50,8 +56,7 @@
 	u32 spdif_bits;
 	u32 spdif_pcm_bits;
 	struct snd_pcm_substream *streams[PCM_COUNT];
-	struct snd_kcontrol *spdif_pcm_ctl;
-	struct snd_kcontrol *spdif_input_bits_ctl;
+	struct snd_kcontrol *controls[CONTROL_COUNT];
 	struct work_struct spdif_input_bits_work;
 };
 
diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c
index 9cd4be2..5b77c94 100644
--- a/sound/pci/oxygen/oxygen_lib.c
+++ b/sound/pci/oxygen/oxygen_lib.c
@@ -114,7 +114,7 @@
 		}
 	}
 
-	if (chip->spdif_input_bits_ctl) {
+	if (chip->controls[CONTROL_SPDIF_INPUT_BITS]) {
 		spin_lock_irq(&chip->reg_lock);
 		chip->interrupt_mask |= OXYGEN_INT_SPDIF_IN_CHANGE;
 		oxygen_write16(chip, OXYGEN_INTERRUPT_MASK,
@@ -122,7 +122,7 @@
 		spin_unlock_irq(&chip->reg_lock);
 
 		snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE,
-			       &chip->spdif_input_bits_ctl->id);
+			       &chip->controls[CONTROL_SPDIF_INPUT_BITS]->id);
 	}
 }
 
diff --git a/sound/pci/oxygen/oxygen_mixer.c b/sound/pci/oxygen/oxygen_mixer.c
index ca72799..f7350fa 100644
--- a/sound/pci/oxygen/oxygen_mixer.c
+++ b/sound/pci/oxygen/oxygen_mixer.c
@@ -586,15 +586,22 @@
 static void oxygen_any_ctl_free(struct snd_kcontrol *ctl)
 {
 	struct oxygen *chip = ctl->private_data;
+	unsigned int i;
 
 	/* I'm too lazy to write a function for each control :-) */
-	chip->spdif_pcm_ctl = NULL;
-	chip->spdif_input_bits_ctl = NULL;
+	for (i = 0; i < ARRAY_SIZE(chip->controls); ++i)
+		chip->controls[i] = NULL;
 }
 
 int oxygen_mixer_init(struct oxygen *chip)
 {
-	unsigned int i;
+	static const char *const known_ctl_names[CONTROL_COUNT] = {
+		[CONTROL_SPDIF_PCM] =
+			SNDRV_CTL_NAME_IEC958("", PLAYBACK, PCM_STREAM),
+		[CONTROL_SPDIF_INPUT_BITS] =
+			SNDRV_CTL_NAME_IEC958("", CAPTURE, DEFAULT),
+	};
+	unsigned int i, j;
 	struct snd_kcontrol *ctl;
 	int err;
 
@@ -610,15 +617,11 @@
 		err = snd_ctl_add(chip->card, ctl);
 		if (err < 0)
 			return err;
-		if (!strcmp(ctl->id.name,
-			    SNDRV_CTL_NAME_IEC958("", PLAYBACK, PCM_STREAM))) {
-			chip->spdif_pcm_ctl = ctl;
-			ctl->private_free = oxygen_any_ctl_free;
-		} else if (!strcmp(ctl->id.name,
-				 SNDRV_CTL_NAME_IEC958("", CAPTURE, DEFAULT))) {
-			chip->spdif_input_bits_ctl = ctl;
-			ctl->private_free = oxygen_any_ctl_free;
-		}
+		for (j = 0; j < CONTROL_COUNT; ++j)
+			if (!strcmp(ctl->id.name, known_ctl_names[j])) {
+				chip->controls[j] = ctl;
+				ctl->private_free = oxygen_any_ctl_free;
+			}
 	}
 	return chip->model->mixer_init ? chip->model->mixer_init(chip) : 0;
 }
diff --git a/sound/pci/oxygen/oxygen_pcm.c b/sound/pci/oxygen/oxygen_pcm.c
index d4a1d73..5f67a79 100644
--- a/sound/pci/oxygen/oxygen_pcm.c
+++ b/sound/pci/oxygen/oxygen_pcm.c
@@ -209,11 +209,11 @@
 	chip->pcm_active |= 1 << channel;
 	if (channel == PCM_SPDIF) {
 		chip->spdif_pcm_bits = chip->spdif_bits;
-		chip->spdif_pcm_ctl->vd[0].access &=
+		chip->controls[CONTROL_SPDIF_PCM]->vd[0].access &=
 			~SNDRV_CTL_ELEM_ACCESS_INACTIVE;
 		snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE |
 			       SNDRV_CTL_EVENT_MASK_INFO,
-			       &chip->spdif_pcm_ctl->id);
+			       &chip->controls[CONTROL_SPDIF_PCM]->id);
 	}
 	mutex_unlock(&chip->mutex);
 
@@ -258,11 +258,11 @@
 	mutex_lock(&chip->mutex);
 	chip->pcm_active &= ~(1 << channel);
 	if (channel == PCM_SPDIF) {
-		chip->spdif_pcm_ctl->vd[0].access |=
+		chip->controls[CONTROL_SPDIF_PCM]->vd[0].access |=
 			SNDRV_CTL_ELEM_ACCESS_INACTIVE;
 		snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE |
 			       SNDRV_CTL_EVENT_MASK_INFO,
-			       &chip->spdif_pcm_ctl->id);
+			       &chip->controls[CONTROL_SPDIF_PCM]->id);
 	}
 	if (channel == PCM_SPDIF || channel == PCM_MULTICH)
 		oxygen_update_spdif_source(chip);
