[ALSA] oxygen: use an array of snd_kcontrol pointers

Use an array for the pointers to known controls so that it is easier to
add more.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
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;
 }