sata_sil: ignore and clear spurious IRQs while executing commands by polling
[powerpc.git] / drivers / scsi / sgiwd93.c
index 7cd366f..a15752b 100644 (file)
@@ -84,7 +84,7 @@ static inline unsigned long read_wd33c93_count(const wd33c93_regs regs)
        return value;
 }
 
-static irqreturn_t sgiwd93_intr(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t sgiwd93_intr(int irq, void *dev_id)
 {
        struct Scsi_Host * host = (struct Scsi_Host *) dev_id;
        unsigned long flags;
@@ -97,7 +97,7 @@ static irqreturn_t sgiwd93_intr(int irq, void *dev_id, struct pt_regs *regs)
 }
 
 static inline
-void fill_hpc_entries(struct hpc_chunk *hcp, Scsi_Cmnd *cmd, int datainp)
+void fill_hpc_entries(struct hpc_chunk *hcp, struct scsi_cmnd *cmd, int datainp)
 {
        unsigned long len = cmd->SCp.this_residual;
        void *addr = cmd->SCp.ptr;
@@ -129,7 +129,7 @@ void fill_hpc_entries(struct hpc_chunk *hcp, Scsi_Cmnd *cmd, int datainp)
        hcp->desc.cntinfo = HPCDMA_EOX;
 }
 
-static int dma_setup(Scsi_Cmnd *cmd, int datainp)
+static int dma_setup(struct scsi_cmnd *cmd, int datainp)
 {
        struct ip22_hostdata *hdata = HDATA(cmd->device->host);
        struct hpc3_scsiregs *hregs =
@@ -163,7 +163,7 @@ static int dma_setup(Scsi_Cmnd *cmd, int datainp)
        return 0;
 }
 
-static void dma_stop(struct Scsi_Host *instance, Scsi_Cmnd *SCpnt,
+static void dma_stop(struct Scsi_Host *instance, struct scsi_cmnd *SCpnt,
                     int status)
 {
        struct ip22_hostdata *hdata = HDATA(instance);
@@ -244,9 +244,10 @@ static struct Scsi_Host * __init sgiwd93_setup_scsi(
        regs.SASR = wdregs + 3;
        regs.SCMD = wdregs + 7;
 
-       wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_16_20);
+       wd33c93_init(host, regs, dma_setup, dma_stop, WD33C93_FS_MHZ(20));
 
-       hdata->wh.no_sync = 0;
+       if (hdata->wh.no_sync == 0xff)
+               hdata->wh.no_sync = 0;
 
        if (request_irq(irq, sgiwd93_intr, 0, "SGI WD93", (void *) host)) {
                printk(KERN_WARNING "sgiwd93: Could not register irq %d "
@@ -305,7 +306,7 @@ static int sgiwd93_release(struct Scsi_Host *instance)
        return 1;
 }
 
-static int sgiwd93_bus_reset(Scsi_Cmnd *cmd)
+static int sgiwd93_bus_reset(struct scsi_cmnd *cmd)
 {
        /* FIXME perform bus-specific reset */