Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / scsi / NCR53c406a.c
index c685d54..ae37d3a 100644 (file)
@@ -62,7 +62,7 @@
 
 #define SYNC_MODE 0            /* Synchronous transfer mode */
 
-#if DEBUG
+#ifdef DEBUG
 #undef NCR53C406A_DEBUG
 #define NCR53C406A_DEBUG 1
 #endif
@@ -182,13 +182,13 @@ static int irq_probe(void);
 static void *bios_base;
 #endif
 
-#if PORT_BASE
+#ifdef PORT_BASE
 static int port_base = PORT_BASE;
 #else
 static int port_base;
 #endif
 
-#if IRQ_LEV
+#ifdef IRQ_LEV
 static int irq_level = IRQ_LEV;
 #else
 static int irq_level = -1;     /* 0 is 'no irq', so use -1 for 'uninitialized' */
@@ -447,7 +447,7 @@ static __inline__ int NCR53c406a_pio_write(unsigned char *request, unsigned int
 }
 #endif                         /* USE_PIO */
 
-static int __init NCR53c406a_detect(Scsi_Host_Template * tpnt)
+static int __init NCR53c406a_detect(struct scsi_host_template * tpnt)
 {
        int present = 0;
        struct Scsi_Host *shpnt = NULL;
@@ -710,7 +710,7 @@ static int NCR53c406a_queue(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
 
        /* We are locked here already by the mid layer */
        REG0;
-       outb(SCpnt->device->id, DEST_ID);       /* set destination */
+       outb(scmd_id(SCpnt), DEST_ID);  /* set destination */
        outb(FLUSH_FIFO, CMD_REG);      /* reset the fifos */
 
        for (i = 0; i < SCpnt->cmd_len; i++) {
@@ -722,15 +722,12 @@ static int NCR53c406a_queue(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
        return 0;
 }
 
-static int NCR53c406a_abort(Scsi_Cmnd * SCpnt)
-{
-       DEB(printk("NCR53c406a_abort called\n"));
-       return FAILED;          /* Don't know how to abort */
-}
-
 static int NCR53c406a_host_reset(Scsi_Cmnd * SCpnt)
 {
        DEB(printk("NCR53c406a_reset called\n"));
+
+       spin_lock_irq(SCpnt->device->host->host_lock);
+
        outb(C4_IMG, CONFIG4);  /* Select reg set 0 */
        outb(CHIP_RESET, CMD_REG);
        outb(SCSI_NOP, CMD_REG);        /* required after reset */
@@ -738,17 +735,10 @@ static int NCR53c406a_host_reset(Scsi_Cmnd * SCpnt)
        chip_init();
 
        rtrc(2);
-       return SUCCESS;
-}
 
-static int NCR53c406a_device_reset(Scsi_Cmnd * SCpnt)
-{
-       return FAILED;
-}
+       spin_unlock_irq(SCpnt->device->host->host_lock);
 
-static int NCR53c406a_bus_reset(Scsi_Cmnd * SCpnt)
-{
-       return FAILED;
+       return SUCCESS;
 }
 
 static int NCR53c406a_biosparm(struct scsi_device *disk,
@@ -1067,7 +1057,7 @@ MODULE_LICENSE("GPL");
  * Use SG_NONE if DMA mode is enabled!
  */
 
-static Scsi_Host_Template driver_template = 
+static struct scsi_host_template driver_template =
 {
      .proc_name                = "NCR53c406a"          /* proc_name */,        
      .name                     = "NCR53c406a"          /* name */,             
@@ -1075,9 +1065,6 @@ static Scsi_Host_Template driver_template =
      .release                  = NCR53c406a_release,
      .info                     = NCR53c406a_info               /* info */,             
      .queuecommand             = NCR53c406a_queue      /* queuecommand */,     
-     .eh_abort_handler         = NCR53c406a_abort      /* abort */,            
-     .eh_bus_reset_handler      = NCR53c406a_bus_reset /* reset */,            
-     .eh_device_reset_handler   = NCR53c406a_device_reset      /* reset */,            
      .eh_host_reset_handler     = NCR53c406a_host_reset        /* reset */,            
      .bios_param               = NCR53c406a_biosparm   /* biosparm */,         
      .can_queue                = 1                     /* can_queue */,