[SCSI] aacraid: Added Sync.mode to support series 7/8/9 controllers
[firefly-linux-kernel-4.4.55.git] / drivers / scsi / aacraid / aacraid.h
index ffb587817efce6de2443434007dcf72abaf39572..3fcf62724fadaf227583fa4c881472687425b107 100644 (file)
@@ -12,7 +12,7 @@
  *----------------------------------------------------------------------------*/
 
 #ifndef AAC_DRIVER_BUILD
-# define AAC_DRIVER_BUILD 28000
+# define AAC_DRIVER_BUILD 28900
 # define AAC_DRIVER_BRANCH "-ms"
 #endif
 #define MAXIMUM_NUM_CONTAINERS 32
@@ -756,8 +756,16 @@ struct src_mu_registers {
 
 struct src_registers {
        struct src_mu_registers MUnit;  /* 00h - c7h */
-       __le32 reserved1[130790];       /* c8h - 7fc5fh */
-       struct src_inbound IndexRegs;   /* 7fc60h */
+       union {
+               struct {
+                       __le32 reserved1[130790];       /* c8h - 7fc5fh */
+                       struct src_inbound IndexRegs;   /* 7fc60h */
+               } tupelo;
+               struct {
+                       __le32 reserved1[974];          /* c8h - fffh */
+                       struct src_inbound IndexRegs;   /* 1000h */
+               } denali;
+       } u;
 };
 
 #define src_readb(AEP, CSR)            readb(&((AEP)->regs.src.bar0->CSR))
@@ -999,6 +1007,10 @@ struct aac_bus_info_response {
 #define AAC_OPT_NEW_COMM               cpu_to_le32(1<<17)
 #define AAC_OPT_NEW_COMM_64            cpu_to_le32(1<<18)
 #define AAC_OPT_NEW_COMM_TYPE1         cpu_to_le32(1<<28)
+#define AAC_OPT_NEW_COMM_TYPE2         cpu_to_le32(1<<29)
+#define AAC_OPT_NEW_COMM_TYPE3         cpu_to_le32(1<<30)
+#define AAC_OPT_NEW_COMM_TYPE4         cpu_to_le32(1<<31)
+
 
 struct aac_dev
 {
@@ -1076,6 +1088,8 @@ struct aac_dev
 #      define AAC_MIN_FOOTPRINT_SIZE 8192
 #      define AAC_MIN_SRC_BAR0_SIZE 0x400000
 #      define AAC_MIN_SRC_BAR1_SIZE 0x800
+#      define AAC_MIN_SRCV_BAR0_SIZE 0x100000
+#      define AAC_MIN_SRCV_BAR1_SIZE 0x400
 #endif
        union
        {
@@ -1116,7 +1130,10 @@ struct aac_dev
        u8                      msi;
        int                     management_fib_count;
        spinlock_t              manage_lock;
-
+       spinlock_t              sync_lock;
+       int                     sync_mode;
+       struct fib              *sync_fib;
+       struct list_head        sync_fib_list;
 };
 
 #define aac_adapter_interrupt(dev) \
@@ -1163,6 +1180,7 @@ struct aac_dev
 
 #define FIB_CONTEXT_FLAG_TIMED_OUT             (0x00000001)
 #define FIB_CONTEXT_FLAG                       (0x00000002)
+#define FIB_CONTEXT_FLAG_WAIT                  (0x00000004)
 
 /*
  *     Define the command values
@@ -1970,6 +1988,7 @@ int aac_rkt_init(struct aac_dev *dev);
 int aac_nark_init(struct aac_dev *dev);
 int aac_sa_init(struct aac_dev *dev);
 int aac_src_init(struct aac_dev *dev);
+int aac_srcv_init(struct aac_dev *dev);
 int aac_queue_get(struct aac_dev * dev, u32 * index, u32 qid, struct hw_fib * hw_fib, int wait, struct fib * fibptr, unsigned long *nonotify);
 unsigned int aac_response_normal(struct aac_queue * q);
 unsigned int aac_command_normal(struct aac_queue * q);