ALSA: ice1724 - limit channels for multi-channel playback
authorTakashi Iwai <tiwai@suse.de>
Fri, 29 Aug 2008 14:17:25 +0000 (16:17 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 4 Sep 2008 08:25:05 +0000 (10:25 +0200)
Limit the available channels for multi-channel playback device to
the real number of channels.  Until now, always up to 8 channels
are created, which are simply useless without the real outputs.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
sound/pci/ice1712/ice1724.c

index 60119d220a6618b8e6aa7a61fe7f82acf5869f06..7bb99df44fd154e311bfc84962435e67e9749582 100644 (file)
@@ -942,7 +942,7 @@ static int snd_vt1724_playback_pro_open(struct snd_pcm_substream *substream)
 {
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct snd_ice1712 *ice = snd_pcm_substream_chip(substream);
-       int chs;
+       int chs, num_indeps;
 
        runtime->private_data = (void *)&vt1724_playback_pro_reg;
        ice->playback_pro_substream = substream;
@@ -952,7 +952,8 @@ static int snd_vt1724_playback_pro_open(struct snd_pcm_substream *substream)
        set_rate_constraints(ice, substream);
        mutex_lock(&ice->open_mutex);
        /* calculate the currently available channels */
-       for (chs = 0; chs < 3; chs++) {
+       num_indeps = ice->num_total_dacs / 2 - 1;
+       for (chs = 0; chs < num_indeps; chs++) {
                if (ice->pcm_reserved[chs])
                        break;
        }