This is a larger version of Michael's patch. It takes care of the header 
files and comments and it addresses sun3_NCR5380 as well as atari_NCR5380. 
This means that the initio.h include (!) can be dropped from sun3_scsi.h.

Signed-off-by: Finn Thain <fth...@telegraphics.com.au>

---

This version defines RESET_RUN_DONE in sun3_scsi.c, to avoid changing 
driver behaviour whilst trying to keep sun3_NCR5380.c in sync with 
atari_NCR5380.c (from which it was originally copied).


Index: linux-m68k/drivers/scsi/atari_NCR5380.c
===================================================================
--- linux-m68k.orig/drivers/scsi/atari_NCR5380.c        2014-03-13 
01:12:33.000000000 +1100
+++ linux-m68k/drivers/scsi/atari_NCR5380.c     2014-03-13 01:13:55.000000000 
+1100
@@ -2683,11 +2683,11 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
                        local_irq_restore(flags);
                        cmd->scsi_done(cmd);
                        falcon_release_lock_if_possible(hostdata);
-                       return SCSI_ABORT_SUCCESS;
+                       return SUCCESS;
                } else {
 /*                     local_irq_restore(flags); */
                        printk("scsi%d: abort of connected command failed!\n", 
HOSTNO);
-                       return SCSI_ABORT_ERROR;
+                       return FAILED;
                }
        }
 #endif
@@ -2711,7 +2711,7 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
                         * yet... */
                        tmp->scsi_done(tmp);
                        falcon_release_lock_if_possible(hostdata);
-                       return SCSI_ABORT_SUCCESS;
+                       return SUCCESS;
                }
        }
 
@@ -2729,7 +2729,7 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
        if (hostdata->connected) {
                local_irq_restore(flags);
                ABRT_PRINTK("scsi%d: abort failed, command connected.\n", 
HOSTNO);
-               return SCSI_ABORT_SNOOZE;
+               return FAILED;
        }
 
        /*
@@ -2764,7 +2764,7 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
                        ABRT_PRINTK("scsi%d: aborting disconnected command.\n", 
HOSTNO);
 
                        if (NCR5380_select(instance, cmd, (int)cmd->tag))
-                               return SCSI_ABORT_BUSY;
+                               return FAILED;
 
                        ABRT_PRINTK("scsi%d: nexus reestablished.\n", HOSTNO);
 
@@ -2791,7 +2791,7 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
                                        local_irq_restore(flags);
                                        tmp->scsi_done(tmp);
                                        
falcon_release_lock_if_possible(hostdata);
-                                       return SCSI_ABORT_SUCCESS;
+                                       return SUCCESS;
                                }
                        }
                }
@@ -2816,7 +2816,7 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
         */
        falcon_release_lock_if_possible(hostdata);
 
-       return SCSI_ABORT_NOT_RUNNING;
+       return FAILED;
 }
 
 
@@ -2825,7 +2825,7 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
  *
  * Purpose : reset the SCSI bus.
  *
- * Returns : SCSI_RESET_WAKEUP
+ * Returns : SUCCESS or FAILURE
  *
  */
 
@@ -2834,7 +2834,7 @@ static int NCR5380_bus_reset(Scsi_Cmnd *
        SETUP_HOSTDATA(cmd->device->host);
        int i;
        unsigned long flags;
-#if 1
+#if defined(RESET_RUN_DONE)
        Scsi_Cmnd *connected, *disconnected_queue;
 #endif
 
@@ -2859,7 +2859,14 @@ static int NCR5380_bus_reset(Scsi_Cmnd *
         * through anymore ... */
        (void)NCR5380_read(RESET_PARITY_INTERRUPT_REG);
 
-#if 1  /* XXX Should now be done by midlevel code, but it's broken XXX */
+       /* MSch 20140115 - looking at the generic NCR5380 driver, all of this
+        * should go.
+        * Catch-22: if we don't clear all queues, the SCSI driver lock will
+        * not be released by atari_scsi_reset()!
+        */
+
+#if defined(RESET_RUN_DONE)
+       /* XXX Should now be done by midlevel code, but it's broken XXX */
        /* XXX see below                                            XXX */
 
        /* MSch: old-style reset: actually abort all command processing here */
@@ -2915,7 +2922,7 @@ static int NCR5380_bus_reset(Scsi_Cmnd *
         * the midlevel code that the reset was SUCCESSFUL, and there is no
         * need to 'wake up' the commands by a request_sense
         */
-       return SCSI_RESET_SUCCESS | SCSI_RESET_BUS_RESET;
+       return SUCCESS;
 #else /* 1 */
 
        /* MSch: new-style reset handling: let the mid-level do what it can */
@@ -2963,6 +2970,6 @@ static int NCR5380_bus_reset(Scsi_Cmnd *
        local_irq_restore(flags);
 
        /* we did no complete reset of all commands, so a wakeup is required */
-       return SCSI_RESET_WAKEUP | SCSI_RESET_BUS_RESET;
+       return SUCCESS;
 #endif /* 1 */
 }
Index: linux-m68k/drivers/scsi/atari_scsi.c
===================================================================
--- linux-m68k.orig/drivers/scsi/atari_scsi.c   2014-03-13 01:12:33.000000000 
+1100
+++ linux-m68k/drivers/scsi/atari_scsi.c        2014-03-13 01:13:55.000000000 
+1100
@@ -821,7 +821,7 @@ static int atari_scsi_bus_reset(Scsi_Cmn
        } else {
                atari_turnon_irq(IRQ_MFP_FSCSI);
        }
-       if ((rv & SCSI_RESET_ACTION) == SCSI_RESET_SUCCESS)
+       if (rv == SUCCESS)
                falcon_release_lock_if_possible(hostdata);
 
        return rv;
Index: linux-m68k/drivers/scsi/atari_scsi.h
===================================================================
--- linux-m68k.orig/drivers/scsi/atari_scsi.h   2014-03-13 01:12:33.000000000 
+1100
+++ linux-m68k/drivers/scsi/atari_scsi.h        2014-03-13 01:13:55.000000000 
+1100
@@ -54,32 +54,6 @@
 #define        NCR5380_dma_xfer_len(i,cmd,phase) \
        atari_dma_xfer_len(cmd->SCp.this_residual,cmd,((phase) & SR_IO) ? 0 : 1)
 
-/* former generic SCSI error handling stuff */
-
-#define SCSI_ABORT_SNOOZE 0
-#define SCSI_ABORT_SUCCESS 1
-#define SCSI_ABORT_PENDING 2
-#define SCSI_ABORT_BUSY 3
-#define SCSI_ABORT_NOT_RUNNING 4
-#define SCSI_ABORT_ERROR 5
-
-#define SCSI_RESET_SNOOZE 0
-#define SCSI_RESET_PUNT 1
-#define SCSI_RESET_SUCCESS 2
-#define SCSI_RESET_PENDING 3
-#define SCSI_RESET_WAKEUP 4
-#define SCSI_RESET_NOT_RUNNING 5
-#define SCSI_RESET_ERROR 6
-
-#define SCSI_RESET_SYNCHRONOUS         0x01
-#define SCSI_RESET_ASYNCHRONOUS                0x02
-#define SCSI_RESET_SUGGEST_BUS_RESET   0x04
-#define SCSI_RESET_SUGGEST_HOST_RESET  0x08
-
-#define SCSI_RESET_BUS_RESET 0x100
-#define SCSI_RESET_HOST_RESET 0x200
-#define SCSI_RESET_ACTION   0xff
-
 /* Debugging printk definitions:
  *
  *  ARB  -> arbitration
Index: linux-m68k/drivers/scsi/sun3_NCR5380.c
===================================================================
--- linux-m68k.orig/drivers/scsi/sun3_NCR5380.c 2014-03-13 01:12:33.000000000 
+1100
+++ linux-m68k/drivers/scsi/sun3_NCR5380.c      2014-03-13 01:13:55.000000000 
+1100
@@ -2664,11 +2664,11 @@ static int NCR5380_abort(struct scsi_cmn
 #endif
          local_irq_restore(flags);
          cmd->scsi_done(cmd);
-         return SCSI_ABORT_SUCCESS;
+         return SUCCESS;
        } else {
 /*       local_irq_restore(flags); */
          printk("scsi%d: abort of connected command failed!\n", HOSTNO);
-         return SCSI_ABORT_ERROR;
+         return FAILED;
        } 
    }
 #endif
@@ -2691,7 +2691,7 @@ static int NCR5380_abort(struct scsi_cmn
            /* Tagged queuing note: no tag to free here, hasn't been assigned
             * yet... */
            tmp->scsi_done(tmp);
-           return SCSI_ABORT_SUCCESS;
+           return SUCCESS;
        }
 
 /* 
@@ -2708,7 +2708,7 @@ static int NCR5380_abort(struct scsi_cmn
     if (hostdata->connected) {
        local_irq_restore(flags);
        ABRT_PRINTK("scsi%d: abort failed, command connected.\n", HOSTNO);
-        return SCSI_ABORT_SNOOZE;
+        return FAILED;
     }
 
 /*
@@ -2743,7 +2743,7 @@ static int NCR5380_abort(struct scsi_cmn
            ABRT_PRINTK("scsi%d: aborting disconnected command.\n", HOSTNO);
   
             if (NCR5380_select (instance, cmd, (int) cmd->tag)) 
-               return SCSI_ABORT_BUSY;
+               return FAILED;
 
            ABRT_PRINTK("scsi%d: nexus reestablished.\n", HOSTNO);
 
@@ -2769,7 +2769,7 @@ static int NCR5380_abort(struct scsi_cmn
 #endif
                    local_irq_restore(flags);
                    tmp->scsi_done(tmp);
-                   return SCSI_ABORT_SUCCESS;
+                   return SUCCESS;
                }
        }
 
@@ -2786,7 +2786,7 @@ static int NCR5380_abort(struct scsi_cmn
     local_irq_restore(flags);
     printk(KERN_INFO "scsi%d: warning : SCSI command probably completed 
successfully before abortion\n", HOSTNO); 
 
-    return SCSI_ABORT_NOT_RUNNING;
+    return FAILED;
 }
 
 
@@ -2795,7 +2795,7 @@ static int NCR5380_abort(struct scsi_cmn
  * 
  * Purpose : reset the SCSI bus.
  *
- * Returns : SCSI_RESET_WAKEUP
+ * Returns : SUCCESS or FAILURE
  *
  */ 
 
@@ -2804,7 +2804,7 @@ static int NCR5380_bus_reset(struct scsi
     SETUP_HOSTDATA(cmd->device->host);
     int           i;
     unsigned long flags;
-#if 1
+#if defined(RESET_RUN_DONE)
     struct scsi_cmnd *connected, *disconnected_queue;
 #endif
 
@@ -2826,8 +2826,15 @@ static int NCR5380_bus_reset(struct scsi
      * through anymore ... */
     (void)NCR5380_read( RESET_PARITY_INTERRUPT_REG );
 
-#if 1 /* XXX Should now be done by midlevel code, but it's broken XXX */
-      /* XXX see below                                            XXX */
+       /* MSch 20140115 - looking at the generic NCR5380 driver, all of this
+        * should go.
+        * Catch-22: if we don't clear all queues, the SCSI driver lock will
+        * not be released by atari_scsi_reset()!
+        */
+
+#if defined(RESET_RUN_DONE)
+       /* XXX Should now be done by midlevel code, but it's broken XXX */
+       /* XXX see below                                            XXX */
 
     /* MSch: old-style reset: actually abort all command processing here */
 
@@ -2876,7 +2883,7 @@ static int NCR5380_bus_reset(struct scsi
      * the midlevel code that the reset was SUCCESSFUL, and there is no 
      * need to 'wake up' the commands by a request_sense
      */
-    return SCSI_RESET_SUCCESS | SCSI_RESET_BUS_RESET;
+    return SUCCESS;
 #else /* 1 */
 
     /* MSch: new-style reset handling: let the mid-level do what it can */
@@ -2924,7 +2931,7 @@ static int NCR5380_bus_reset(struct scsi
     local_irq_restore(flags);
 
     /* we did no complete reset of all commands, so a wakeup is required */
-    return SCSI_RESET_WAKEUP | SCSI_RESET_BUS_RESET;
+    return SUCCESS;
 #endif /* 1 */
 }
 
Index: linux-m68k/drivers/scsi/sun3_scsi.c
===================================================================
--- linux-m68k.orig/drivers/scsi/sun3_scsi.c    2014-03-13 01:12:33.000000000 
+1100
+++ linux-m68k/drivers/scsi/sun3_scsi.c 2014-03-13 01:13:55.000000000 +1100
@@ -79,7 +79,6 @@
 #define REAL_DMA
 
 #include "scsi.h"
-#include "initio.h"
 #include <scsi/scsi_host.h>
 #include "sun3_scsi.h"
 
@@ -123,6 +122,8 @@ module_param(setup_hostid, int, 0);
 
 static struct scsi_cmnd *sun3_dma_setup_done = NULL;
 
+#define        RESET_RUN_DONE
+
 #define        AFTER_RESET_DELAY       (HZ/2)
 
 /* ms to wait after hitting dma regs */
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to