]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - sound/pci/ice1712/ice1724.c
ALSA: ice1724 - limit channels for multi-channel playback
[linux-2.6-omap-h63xx.git] / sound / pci / ice1712 / ice1724.c
index e596d777d9dde630d12532c55a578937f8d5b2ee..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;
        }
@@ -2250,7 +2251,8 @@ static int __devinit snd_vt1724_spdif_build_controls(struct snd_ice1712 *ice)
        int err;
        struct snd_kcontrol *kctl;
 
-       snd_assert(ice->pcm != NULL, return -EIO);
+       if (snd_BUG_ON(!ice->pcm))
+               return -EIO;
 
        err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_vt1724_mixer_pro_spdif_route, ice));
        if (err < 0)