]> err.no Git - linux-2.6/blobdiff - drivers/scsi/megaraid/megaraid_sas.h
Merge branch 'sched/new-API-sched_setscheduler' of git://git.kernel.org/pub/scm/linux...
[linux-2.6] / drivers / scsi / megaraid / megaraid_sas.h
index 4dffc918a414c3bf5c4254f0ceea06998127cc15..b0c41e67170281428b5725437524826a7a10fd6f 100644 (file)
@@ -2,7 +2,7 @@
  *
  *             Linux MegaRAID driver for SAS based RAID controllers
  *
- * Copyright (c) 2003-2005  LSI Logic Corporation.
+ * Copyright (c) 2003-2005  LSI Corporation.
  *
  *             This program is free software; you can redistribute it and/or
  *             modify it under the terms of the GNU General Public License
 /*
  * MegaRAID SAS Driver meta data
  */
-#define MEGASAS_VERSION                                "00.00.03.10-rc5"
-#define MEGASAS_RELDATE                                "May 17, 2007"
-#define MEGASAS_EXT_VERSION                    "Thu May 17 10:09:32 PDT 2007"
+#define MEGASAS_VERSION                        "00.00.03.20-rc1"
+#define MEGASAS_RELDATE                        "March 10, 2008"
+#define MEGASAS_EXT_VERSION            "Mon. March 10 11:02:31 PDT 2008"
 
 /*
  * Device IDs
  */
 #define        PCI_DEVICE_ID_LSI_SAS1078R              0x0060
+#define        PCI_DEVICE_ID_LSI_SAS1078DE             0x007C
 #define        PCI_DEVICE_ID_LSI_VERDE_ZCR             0x0413
 
 /*
 #define MR_FLUSH_DISK_CACHE                    0x02
 
 #define MR_DCMD_CTRL_SHUTDOWN                  0x01050000
+#define MR_DCMD_HIBERNATE_SHUTDOWN             0x01060000
 #define MR_ENABLE_DRIVE_SPINDOWN               0x01
 
 #define MR_DCMD_CTRL_EVENT_GET_INFO            0x01040100
@@ -541,6 +543,10 @@ struct megasas_ctrl_info {
 
 #define MEGASAS_FW_BUSY                                1
 
+/* Frame Type */
+#define IO_FRAME                               0
+#define PTHRU_FRAME                            1
+
 /*
  * When SCSI mid-layer calls driver's reset routine, driver waits for
  * MEGASAS_RESET_WAIT_TIME seconds for all outstanding IO to complete. Note
@@ -570,7 +576,8 @@ struct megasas_ctrl_info {
 #define IS_DMA64                               (sizeof(dma_addr_t) == 8)
 
 #define MFI_OB_INTR_STATUS_MASK                        0x00000002
-#define MFI_POLL_TIMEOUT_SECS                  10
+#define MFI_POLL_TIMEOUT_SECS                  60
+#define MEGASAS_COMPLETION_TIMER_INTERVAL      (HZ/10)
 
 #define MFI_REPLY_1078_MESSAGE_INTERRUPT       0x80000000
 
@@ -1083,13 +1090,15 @@ struct megasas_instance {
        struct megasas_cmd **cmd_list;
        struct list_head cmd_pool;
        spinlock_t cmd_pool_lock;
+       /* used to synch producer, consumer ptrs in dpc */
+       spinlock_t completion_lock;
        struct dma_pool *frame_dma_pool;
        struct dma_pool *sense_dma_pool;
 
        struct megasas_evt_detail *evt_detail;
        dma_addr_t evt_detail_h;
        struct megasas_cmd *aen_cmd;
-       struct semaphore aen_mutex;
+       struct mutex aen_mutex;
        struct semaphore ioctl_sem;
 
        struct Scsi_Host *host;
@@ -1108,6 +1117,8 @@ struct megasas_instance {
 
        u8 flag;
        unsigned long last_time;
+
+       struct timer_list io_completion_timer;
 };
 
 #define MEGASAS_IS_LOGICAL(scp)                                                \