ALSA: wss_lib: rename cs4231.h into wss.h
[safe/jmp/linux-2.6] / sound / isa / gus / gus_irq.c
index c19ba29..041894d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Routine for IRQ handling from GF1/InterWave chip
- *  Copyright (c) by Jaroslav Kysela <perex@suse.cz>
+ *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
  *
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -19,7 +19,6 @@
  *
  */
 
-#include <sound/driver.h>
 #include <sound/core.h>
 #include <sound/info.h>
 #include <sound/gus.h>
@@ -30,7 +29,7 @@
 #define STAT_ADD(x)    while (0) { ; }
 #endif
 
-irqreturn_t snd_gus_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+irqreturn_t snd_gus_interrupt(int irq, void *dev_id)
 {
        struct snd_gus_card * gus = dev_id;
        unsigned char status;
@@ -45,11 +44,13 @@ __again:
        // snd_printk("IRQ: status = 0x%x\n", status);
        if (status & 0x02) {
                STAT_ADD(gus->gf1.interrupt_stat_midi_in);
-               gus->gf1.interrupt_handler_midi_in(gus);
+               if (gus->gf1.interrupt_handler_midi_in)
+                       gus->gf1.interrupt_handler_midi_in(gus);
        }
        if (status & 0x01) {
                STAT_ADD(gus->gf1.interrupt_stat_midi_out);
-               gus->gf1.interrupt_handler_midi_out(gus);
+               if (gus->gf1.interrupt_handler_midi_out)
+                       gus->gf1.interrupt_handler_midi_out(gus);
        }
        if (status & (0x20 | 0x40)) {
                unsigned int already, _current_;
@@ -85,20 +86,24 @@ __again:
        }
        if (status & 0x04) {
                STAT_ADD(gus->gf1.interrupt_stat_timer1);
-               gus->gf1.interrupt_handler_timer1(gus);
+               if (gus->gf1.interrupt_handler_timer1)
+                       gus->gf1.interrupt_handler_timer1(gus);
        }
        if (status & 0x08) {
                STAT_ADD(gus->gf1.interrupt_stat_timer2);
-               gus->gf1.interrupt_handler_timer2(gus);
+               if (gus->gf1.interrupt_handler_timer2)
+                       gus->gf1.interrupt_handler_timer2(gus);
        }
        if (status & 0x80) {
                if (snd_gf1_i_look8(gus, SNDRV_GF1_GB_DRAM_DMA_CONTROL) & 0x40) {
                        STAT_ADD(gus->gf1.interrupt_stat_dma_write);
-                       gus->gf1.interrupt_handler_dma_write(gus);
+                       if (gus->gf1.interrupt_handler_dma_write)
+                               gus->gf1.interrupt_handler_dma_write(gus);
                }
                if (snd_gf1_i_look8(gus, SNDRV_GF1_GB_REC_DMA_CONTROL) & 0x40) {
                        STAT_ADD(gus->gf1.interrupt_stat_dma_read);
-                       gus->gf1.interrupt_handler_dma_read(gus);
+                       if (gus->gf1.interrupt_handler_dma_read)
+                               gus->gf1.interrupt_handler_dma_read(gus);
                }
        }
        if (--loop > 0)
@@ -136,7 +141,7 @@ void snd_gus_irq_profile_init(struct snd_gus_card *gus)
        struct snd_info_entry *entry;
 
        if (! snd_card_proc_new(gus->card, "gusirq", &entry))
-               snd_info_set_text_ops(entry, gus, 1024, snd_gus_irq_info_read);
+               snd_info_set_text_ops(entry, gus, snd_gus_irq_info_read);
 }
 
 #endif