]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/scsi/NCR5380.h
Merge tag 'dlm-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm
[karo-tx-linux.git] / drivers / scsi / NCR5380.h
index d811775ffd9d71aca8c362a12c5526696cde80c4..162112dd1bf8eabeaf0c8bb029291742d6c55ce4 100644 (file)
@@ -7,8 +7,6 @@
  *     drew@colorado.edu
  *      +1 (303) 666-5836
  *
- * DISTRIBUTION RELEASE 7
- *
  * For more information, please consult 
  *
  * NCR 5380 Family
@@ -27,9 +25,6 @@
 #include <linux/interrupt.h>
 #include <scsi/scsi_eh.h>
 
-#define NCR5380_PUBLIC_RELEASE 7
-#define NCR53C400_PUBLIC_RELEASE 2
-
 #define NDEBUG_ARBITRATION     0x1
 #define NDEBUG_AUTOSENSE       0x2
 #define NDEBUG_DMA             0x4
 #define FLAG_NCR53C400                 4       /* NCR53c400 */
 #define FLAG_NO_PSEUDO_DMA             8       /* Inhibit DMA */
 #define FLAG_DTC3181E                  16      /* DTC3181E */
+#define FLAG_LATE_DMA_SETUP            32      /* Setup NCR before DMA H/W */
+#define FLAG_TAGGED_QUEUING            64      /* as X3T9.2 spelled it */
 
 #ifndef ASM
+
+#ifdef SUPPORT_TAGS
+struct tag_alloc {
+       DECLARE_BITMAP(allocated, MAX_TAGS);
+       int nr_allocated;
+       int queue_size;
+};
+#endif
+
 struct NCR5380_hostdata {
        NCR5380_implementation_fields;          /* implementation specific */
        struct Scsi_Host *host;                 /* Host backpointer */
@@ -260,9 +266,9 @@ struct NCR5380_hostdata {
        volatile int dma_len;                   /* requested length of DMA */
 #endif
        volatile unsigned char last_message;    /* last message OUT */
-       volatile Scsi_Cmnd *connected;          /* currently connected command */
-       volatile Scsi_Cmnd *issue_queue;        /* waiting to be issued */
-       volatile Scsi_Cmnd *disconnected_queue; /* waiting for reconnect */
+       volatile struct scsi_cmnd *connected;   /* currently connected command */
+       volatile struct scsi_cmnd *issue_queue; /* waiting to be issued */
+       volatile struct scsi_cmnd *disconnected_queue;  /* waiting for reconnect */
        volatile int restart_select;            /* we have disconnected,
                                                   used to restart 
                                                   NCR5380_select() */
@@ -270,9 +276,22 @@ struct NCR5380_hostdata {
        int flags;
        unsigned long time_expires;             /* in jiffies, set prior to sleeping */
        int select_time;                        /* timer in select for target response */
-       volatile Scsi_Cmnd *selecting;
+       volatile struct scsi_cmnd *selecting;
        struct delayed_work coroutine;          /* our co-routine */
        struct scsi_eh_save ses;
+       char info[256];
+       int read_overruns;                /* number of bytes to cut from a
+                                          * transfer to handle chip overruns */
+       int retain_dma_intr;
+       struct work_struct main_task;
+       volatile int main_running;
+#ifdef SUPPORT_TAGS
+       struct tag_alloc TagAlloc[8][8];        /* 8 targets and 8 LUNs */
+#endif
+#ifdef PSEUDO_DMA
+       unsigned spin_max_r;
+       unsigned spin_max_w;
+#endif
 };
 
 #ifdef __KERNEL__
@@ -307,9 +326,9 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance);
 static irqreturn_t NCR5380_intr(int irq, void *dev_id);
 #endif
 static void NCR5380_main(struct work_struct *work);
-static void __maybe_unused NCR5380_print_options(struct Scsi_Host *instance);
+static const char *NCR5380_info(struct Scsi_Host *instance);
 static void NCR5380_reselect(struct Scsi_Host *instance);
-static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd *cmd);
+static int NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd);
 #if defined(PSEUDO_DMA) || defined(REAL_DMA) || defined(REAL_DMA_POLL)
 static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase, int *count, unsigned char **data);
 #endif