]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - sound/pci/pcxhr/pcxhr.c
[ALSA] sound/pci: remove unused variable
[linux-2.6-omap-h63xx.git] / sound / pci / pcxhr / pcxhr.c
index 533c672ae8f3fd395b4d96b0c0041917b5654d71..beed5818338c71f367a04ba0219ec503b032728b 100644 (file)
@@ -21,7 +21,6 @@
  */
 
 
-#include <sound/driver.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/slab.h>
@@ -638,22 +637,24 @@ static void pcxhr_trigger_tasklet(unsigned long arg)
 static int pcxhr_trigger(struct snd_pcm_substream *subs, int cmd)
 {
        struct pcxhr_stream *stream;
-       struct list_head *pos;
        struct snd_pcm_substream *s;
-       int i;
 
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
                snd_printdd("SNDRV_PCM_TRIGGER_START\n");
-               i = 0;
-               snd_pcm_group_for_each(pos, subs) {
-                       s = snd_pcm_group_substream_entry(pos);
-                       stream = s->runtime->private_data;
-                       stream->status = PCXHR_STREAM_STATUS_SCHEDULE_RUN;
-                       snd_pcm_trigger_done(s, subs);
-                       i++;
-               }
-               if (i==1) {
+               if (snd_pcm_stream_linked(subs)) {
+                       struct snd_pcxhr *chip = snd_pcm_substream_chip(subs);
+                       snd_pcm_group_for_each_entry(s, subs) {
+                               if (snd_pcm_substream_chip(s) != chip)
+                                       continue;
+                               stream = s->runtime->private_data;
+                               stream->status =
+                                       PCXHR_STREAM_STATUS_SCHEDULE_RUN;
+                               snd_pcm_trigger_done(s, subs);
+                       }
+                       tasklet_hi_schedule(&chip->mgr->trigger_taskq);
+               } else {
+                       stream = subs->runtime->private_data;
                        snd_printdd("Only one Substream %c %d\n",
                                    stream->pipe->is_capture ? 'C' : 'P',
                                    stream->pipe->first_audio);
@@ -662,18 +663,15 @@ static int pcxhr_trigger(struct snd_pcm_substream *subs, int cmd)
                        if (pcxhr_update_r_buffer(stream))
                                return -EINVAL;
 
+                       stream->status = PCXHR_STREAM_STATUS_SCHEDULE_RUN;
                        if (pcxhr_set_stream_state(stream))
                                return -EINVAL;
                        stream->status = PCXHR_STREAM_STATUS_RUNNING;
-               } else {
-                       struct snd_pcxhr *chip = snd_pcm_substream_chip(subs);
-                       tasklet_hi_schedule(&chip->mgr->trigger_taskq);
                }
                break;
        case SNDRV_PCM_TRIGGER_STOP:
                snd_printdd("SNDRV_PCM_TRIGGER_STOP\n");
-               snd_pcm_group_for_each(pos, subs) {
-                       s = snd_pcm_group_substream_entry(pos);
+               snd_pcm_group_for_each_entry(s, subs) {
                        stream = s->runtime->private_data;
                        stream->status = PCXHR_STREAM_STATUS_SCHEDULE_STOP;
                        if (pcxhr_set_stream_state(stream))
@@ -848,7 +846,6 @@ static int pcxhr_open(struct snd_pcm_substream *subs)
        struct pcxhr_mgr       *mgr = chip->mgr;
        struct snd_pcm_runtime *runtime = subs->runtime;
        struct pcxhr_stream    *stream;
-       int                 is_capture;
 
        mutex_lock(&mgr->setup_mutex);
 
@@ -858,12 +855,10 @@ static int pcxhr_open(struct snd_pcm_substream *subs)
        if( subs->stream == SNDRV_PCM_STREAM_PLAYBACK ) {
                snd_printdd("pcxhr_open playback chip%d subs%d\n",
                            chip->chip_idx, subs->number);
-               is_capture = 0;
                stream = &chip->playback_stream[subs->number];
        } else {
                snd_printdd("pcxhr_open capture chip%d subs%d\n",
                            chip->chip_idx, subs->number);
-               is_capture = 1;
                if (mgr->mono_capture)
                        runtime->hw.channels_max = 1;
                else
@@ -906,6 +901,8 @@ static int pcxhr_open(struct snd_pcm_substream *subs)
        snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 4);
        snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 4);
 
+       snd_pcm_set_sync(subs);
+
        mgr->ref_count_rate++;
 
        mutex_unlock(&mgr->setup_mutex);
@@ -1250,7 +1247,7 @@ static int __devinit pcxhr_probe(struct pci_dev *pci, const struct pci_device_id
        mgr->pci = pci;
        mgr->irq = -1;
 
-       if (request_irq(pci->irq, pcxhr_interrupt, IRQF_DISABLED|IRQF_SHARED,
+       if (request_irq(pci->irq, pcxhr_interrupt, IRQF_SHARED,
                        card_name, mgr)) {
                snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq);
                pcxhr_free(mgr);