mmc: s3c6410: enable ADMA feature in 6410 sdhci controller
[safe/jmp/linux-2.6] / sound / pci / echoaudio / echoaudio.c
index 2783ce6..668a5ec 100644 (file)
@@ -1864,7 +1864,9 @@ static irqreturn_t snd_echo_interrupt(int irq, void *dev_id)
        /* The hardware doesn't tell us which substream caused the irq,
        thus we have to check all running substreams. */
        for (ss = 0; ss < DSP_MAXPIPES; ss++) {
-               if ((substream = chip->substream[ss])) {
+               substream = chip->substream[ss];
+               if (substream && ((struct audiopipe *)substream->runtime->
+                               private_data)->state == PIPE_STATE_STARTED) {
                        period = pcm_pointer(substream) /
                                substream->runtime->period_size;
                        if (period != chip->last_period[ss]) {
@@ -2182,10 +2184,9 @@ static int __devinit snd_echo_probe(struct pci_dev *pci,
                        goto ctl_error;
 #endif
 
-       if ((err = snd_card_register(card)) < 0) {
-               snd_card_free(card);
+       err = snd_card_register(card);
+       if (err < 0)
                goto ctl_error;
-       }
        snd_printk(KERN_INFO "Card registered: %s\n", card->longname);
 
        pci_set_drvdata(pci, chip);