These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / scsi / aacraid / aacraid.h
index 40fe65c..074878b 100644 (file)
@@ -12,7 +12,7 @@
  *              D E F I N E S
  *----------------------------------------------------------------------------*/
 
-#define AAC_MAX_MSIX                 /* vectors */
+#define AAC_MAX_MSIX           32      /* vectors */
 #define AAC_PCI_MSI_ENABLE     0x8000
 
 enum {
@@ -62,7 +62,7 @@ enum {
 #define        PMC_GLOBAL_INT_BIT0             0x00000001
 
 #ifndef AAC_DRIVER_BUILD
-# define AAC_DRIVER_BUILD 40709
+# define AAC_DRIVER_BUILD 41010
 # define AAC_DRIVER_BRANCH "-ms"
 #endif
 #define MAXIMUM_NUM_CONTAINERS 32
@@ -547,6 +547,7 @@ struct adapter_ops
        int  (*adapter_sync_cmd)(struct aac_dev *dev, u32 command, u32 p1, u32 p2, u32 p3, u32 p4, u32 p5, u32 p6, u32 *status, u32 *r1, u32 *r2, u32 *r3, u32 *r4);
        int  (*adapter_check_health)(struct aac_dev *dev);
        int  (*adapter_restart)(struct aac_dev *dev, int bled);
+       void (*adapter_start)(struct aac_dev *dev);
        /* Transport operations */
        int  (*adapter_ioremap)(struct aac_dev * dev, u32 size);
        irq_handler_t adapter_intr;
@@ -843,6 +844,10 @@ struct src_registers {
                                                &((AEP)->regs.src.bar0->CSR))
 #define src_writel(AEP, CSR, value)    writel(value, \
                                                &((AEP)->regs.src.bar0->CSR))
+#if defined(writeq)
+#define        src_writeq(AEP, CSR, value)     writeq(value, \
+                                               &((AEP)->regs.src.bar0->CSR))
+#endif
 
 #define SRC_ODR_SHIFT          12
 #define SRC_IDR_SHIFT          9
@@ -1162,6 +1167,11 @@ struct aac_dev
        struct fsa_dev_info     *fsa_dev;
        struct task_struct      *thread;
        int                     cardtype;
+       /*
+        *This lock will protect the two 32-bit
+        *writes to the Inbound Queue
+        */
+       spinlock_t              iq_lock;
 
        /*
         *      The following is the device specific extension.
@@ -1247,6 +1257,9 @@ struct aac_dev
 #define aac_adapter_restart(dev,bled) \
        (dev)->a_ops.adapter_restart(dev,bled)
 
+#define aac_adapter_start(dev) \
+       ((dev)->a_ops.adapter_start(dev))
+
 #define aac_adapter_ioremap(dev, size) \
        (dev)->a_ops.adapter_ioremap(dev, size)
 
@@ -2097,6 +2110,8 @@ static inline unsigned int cap_to_cyls(sector_t capacity, unsigned divisor)
 #define AAC_OWNER_ERROR_HANDLER        0x103
 #define AAC_OWNER_FIRMWARE     0x106
 
+int aac_acquire_irq(struct aac_dev *dev);
+void aac_free_irq(struct aac_dev *dev);
 const char *aac_driverinfo(struct Scsi_Host *);
 struct fib *aac_fib_alloc(struct aac_dev *dev);
 int aac_fib_setup(struct aac_dev *dev);
@@ -2127,6 +2142,7 @@ 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);
+void aac_define_int_mode(struct aac_dev *dev);
 unsigned int aac_response_normal(struct aac_queue * q);
 unsigned int aac_command_normal(struct aac_queue * q);
 unsigned int aac_intr_normal(struct aac_dev *dev, u32 Index,