summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/wd7000.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-05-07 02:55:41 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-05-07 02:55:41 +0000
commitdcec8a13bf565e47942a1751a9cec21bec5648fe (patch)
tree548b69625b18cc2e88c3e68d0923be546c9ebb03 /drivers/scsi/wd7000.c
parent2e0f55e79c49509b7ff70ff1a10e1e9e90a3dfd4 (diff)
o Merge with Linux 2.1.99.
o Fix ancient bug in the ELF loader making ldd crash. o Fix ancient bug in the keyboard code for SGI, SNI and Jazz.
Diffstat (limited to 'drivers/scsi/wd7000.c')
-rw-r--r--drivers/scsi/wd7000.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/scsi/wd7000.c b/drivers/scsi/wd7000.c
index 1b915e3ed..89947e8a1 100644
--- a/drivers/scsi/wd7000.c
+++ b/drivers/scsi/wd7000.c
@@ -154,6 +154,7 @@
#include <linux/sched.h>
#include <linux/malloc.h>
#include <asm/system.h>
+#include <asm/spinlock.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <linux/ioport.h>
@@ -513,7 +514,7 @@ typedef struct icbRevLvl {
typedef struct icbUnsMask { /* I'm totally guessing here */
unchar op;
volatile unchar mask[14]; /* mask bits */
-#ifdef 0
+#if 0
unchar rsvd[12]; /* reserved */
#endif
volatile unchar vue; /* vendor-unique error code */
@@ -1148,6 +1149,15 @@ void wd7000_intr_handle (int irq, void *dev_id, struct pt_regs *regs)
#endif
}
+void do_wd7000_intr_handle (int irq, void *dev_id, struct pt_regs *regs)
+{
+ unsigned long flags;
+
+ spin_lock_irqsave(&io_request_lock, flags);
+ wd7000_intr_handle(irq, dev_id, regs);
+ spin_unlock_irqrestore(&io_request_lock, flags);
+}
+
int wd7000_queuecommand (Scsi_Cmnd *SCpnt, void (*done) (Scsi_Cmnd *))
{
@@ -1314,7 +1324,7 @@ int wd7000_init (Adapter *host)
return (0);
}
- if (request_irq (host->irq, wd7000_intr_handle, SA_INTERRUPT, "wd7000", NULL)) {
+ if (request_irq (host->irq, do_wd7000_intr_handle, SA_INTERRUPT, "wd7000", NULL)) {
printk ("wd7000_init: can't get IRQ %d.\n", host->irq);
return (0);
}