]> err.no Git - linux-2.6/blobdiff - arch/m68k/atari/stdma.c
Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
[linux-2.6] / arch / m68k / atari / stdma.c
index 288f5e6a124eb57b73120136eef03dba428a5c35..d1bd029a34ac612acfe5b04936a8dab1821ce2de 100644 (file)
@@ -35,6 +35,7 @@
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/wait.h>
+#include <linux/module.h>
 
 #include <asm/atari_stdma.h>
 #include <asm/atariints.h>
@@ -44,7 +45,7 @@
 
 static int stdma_locked;                       /* the semaphore */
                                                /* int func to be called */
-static irqreturn_t (*stdma_isr)(int, void *, struct pt_regs *);
+static irq_handler_t stdma_isr;
 static void *stdma_isr_data;                   /* data passed to isr */
 static DECLARE_WAIT_QUEUE_HEAD(stdma_wait);    /* wait queue for ST-DMA */
 
@@ -53,7 +54,7 @@ static DECLARE_WAIT_QUEUE_HEAD(stdma_wait);   /* wait queue for ST-DMA */
 
 /***************************** Prototypes *****************************/
 
-static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp);
+static irqreturn_t stdma_int (int irq, void *dummy);
 
 /************************* End of Prototypes **************************/
 
@@ -75,8 +76,7 @@ static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp);
  *
  */
 
-void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *),
-               void *data)
+void stdma_lock(irq_handler_t handler, void *data)
 {
        unsigned long flags;
 
@@ -92,6 +92,7 @@ void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *),
        stdma_isr_data = data;
        local_irq_restore(flags);
 }
+EXPORT_SYMBOL(stdma_lock);
 
 
 /*
@@ -118,6 +119,7 @@ void stdma_release(void)
 
        local_irq_restore(flags);
 }
+EXPORT_SYMBOL(stdma_release);
 
 
 /*
@@ -135,6 +137,7 @@ int stdma_others_waiting(void)
 {
        return waitqueue_active(&stdma_wait);
 }
+EXPORT_SYMBOL(stdma_others_waiting);
 
 
 /*
@@ -156,6 +159,7 @@ int stdma_islocked(void)
 {
        return stdma_locked;
 }
+EXPORT_SYMBOL(stdma_islocked);
 
 
 /*
@@ -175,7 +179,7 @@ int stdma_islocked(void)
 void __init stdma_init(void)
 {
        stdma_isr = NULL;
-       request_irq(IRQ_MFP_FDC, stdma_int, IRQ_TYPE_SLOW,
+       request_irq(IRQ_MFP_FDC, stdma_int, IRQ_TYPE_SLOW | IRQF_SHARED,
                    "ST-DMA: floppy/ACSI/IDE/Falcon-SCSI", stdma_int);
 }
 
@@ -188,9 +192,9 @@ void __init stdma_init(void)
  *
  */
 
-static irqreturn_t stdma_int(int irq, void *dummy, struct pt_regs *fp)
+static irqreturn_t stdma_int(int irq, void *dummy)
 {
   if (stdma_isr)
-      (*stdma_isr)(irq, stdma_isr_data, fp);
+      (*stdma_isr)(irq, stdma_isr_data);
   return IRQ_HANDLED;
 }