[PATCH] irq-flags: sound: Use the new IRQF_ constants
[linux-2.6.git] / sound / mips / au1x00.c
index e66b014..c31b386 100644 (file)
@@ -465,13 +465,13 @@ snd_au1000_pcm_new(struct snd_au1000 *au1000)
 
        flags = claim_dma_lock();
        if ((au1000->stream[PLAYBACK]->dma = request_au1000_dma(DMA_ID_AC97C_TX,
-                       "AC97 TX", au1000_dma_interrupt, SA_INTERRUPT,
+                       "AC97 TX", au1000_dma_interrupt, IRQF_DISABLED,
                        au1000->stream[PLAYBACK])) < 0) {
                release_dma_lock(flags);
                return -EBUSY;
        }
        if ((au1000->stream[CAPTURE]->dma = request_au1000_dma(DMA_ID_AC97C_RX,
-                       "AC97 RX", au1000_dma_interrupt, SA_INTERRUPT,
+                       "AC97 RX", au1000_dma_interrupt, IRQF_DISABLED,
                        au1000->stream[CAPTURE])) < 0){
                release_dma_lock(flags);
                return -EBUSY;
@@ -561,12 +561,13 @@ snd_au1000_ac97_new(struct snd_au1000 *au1000)
                .read = snd_au1000_ac97_read,
        };
 
-       if ((au1000->ac97_res_port = request_region(AC97C_CONFIG,
-                       sizeof(struct au1000_ac97_reg), "Au1x00 AC97")) == NULL) {
+       if ((au1000->ac97_res_port = request_mem_region(CPHYSADDR(AC97C_CONFIG),
+                       0x100000, "Au1x00 AC97")) == NULL) {
                snd_printk(KERN_ERR "ALSA AC97: can't grap AC97 port\n");
                return -EBUSY;
        }
-       au1000->ac97_ioport = (struct au1000_ac97_reg *) au1000->ac97_res_port->start;
+       au1000->ac97_ioport = (struct au1000_ac97_reg *)
+               KSEG1ADDR(au1000->ac97_res_port->start);
 
        spin_lock_init(&au1000->ac97_lock);
 
@@ -612,14 +613,17 @@ snd_au1000_free(struct snd_card *card)
                release_and_free_resource(au1000->ac97_res_port);
        }
 
-       if (au1000->stream[PLAYBACK]->dma >= 0)
-               free_au1000_dma(au1000->stream[PLAYBACK]->dma);
-
-       if (au1000->stream[CAPTURE]->dma >= 0)
-               free_au1000_dma(au1000->stream[CAPTURE]->dma);
+       if (au1000->stream[PLAYBACK]) {
+               if (au1000->stream[PLAYBACK]->dma >= 0)
+                       free_au1000_dma(au1000->stream[PLAYBACK]->dma);
+               kfree(au1000->stream[PLAYBACK]);
+       }
 
-       kfree(au1000->stream[PLAYBACK]);
-       kfree(au1000->stream[CAPTURE]);
+       if (au1000->stream[CAPTURE]) {
+               if (au1000->stream[CAPTURE]->dma >= 0)
+                       free_au1000_dma(au1000->stream[CAPTURE]->dma);
+               kfree(au1000->stream[CAPTURE]);
+       }
 }
 
 
@@ -638,15 +642,19 @@ au1000_init(void)
 
        card->private_free = snd_au1000_free;
        au1000 = card->private_data;
-       /* so that snd_au1000_free will work as intended */
        au1000->card = card;
-       au1000->stream[PLAYBACK]->dma = -1;
-       au1000->stream[CAPTURE]->dma = -1;
-       au1000->ac97_res_port = NULL;
+
        au1000->stream[PLAYBACK] = kmalloc(sizeof(struct audio_stream), GFP_KERNEL);
-       au1000->stream[CAPTURE] = kmalloc(sizeof(struct audio_stream), GFP_KERNEL);
+       au1000->stream[CAPTURE ] = kmalloc(sizeof(struct audio_stream), GFP_KERNEL);
+       /* so that snd_au1000_free will work as intended */
+       au1000->ac97_res_port = NULL;
+       if (au1000->stream[PLAYBACK])
+               au1000->stream[PLAYBACK]->dma = -1;
+       if (au1000->stream[CAPTURE ])
+               au1000->stream[CAPTURE ]->dma = -1;
+
        if (au1000->stream[PLAYBACK] == NULL ||
-           au1000->stream[CAPTURE] == NULL) {
+           au1000->stream[CAPTURE ] == NULL) {
                snd_card_free(card);
                return -ENOMEM;
        }