vserver 1.9.5.x5
[linux-2.6.git] / drivers / scsi / ips.c
index b2e7c23..f96c490 100644 (file)
 /* 6.10.00  - Remove 1G Addressing Limitations                               */
 /* 6.11.xx  - Get VersionInfo buffer off the stack !              DDTS 60401 */
 /* 6.11.xx  - Make Logical Drive Info structure safe for DMA      DDTS 60639 */
+/* 7.10.xx  - Add highmem_io flag in SCSI Templete for 2.4 kernels           */
+/*          - Fix path/name for scsi_hosts.h include for 2.6 kernels         */
+/*          - Fix sort order of 7k                                           */
+/*          - Remove 3 unused "inline" functions                             */
 /*****************************************************************************/
 
 /*
 #include <scsi/sg.h>
 
 #include "scsi.h"
+
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,5,0)
+#include "hosts.h"
+#else
 #include <scsi/scsi_host.h>
+#endif
+
 #include "ips.h"
 
 #include <linux/module.h>
 
 #ifdef MODULE
 static char *ips = NULL;
-MODULE_PARM(ips, "s");
+module_param(ips, charp, 0);
 #endif
 
 /*
  * DRIVER_VER
  */
-#define IPS_VERSION_HIGH        "7.00"
-#define IPS_VERSION_LOW         ".15 "
+#define IPS_VERSION_HIGH        "7.10"
+#define IPS_VERSION_LOW         ".18 "
 
 #if !defined(__i386__) && !defined(__ia64__) && !defined(__x86_64__)
 #warning "This driver has only been tested on the x86/ia64/x86_64 platforms"
@@ -278,6 +288,9 @@ static Scsi_Host_Template ips_driver_template = {
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
        .use_new_eh_code        = 1,
 #endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20)  &&  LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+    .highmem_io          = 1,   
+#endif
 };
 
 IPS_DEFINE_COMPAT_TABLE( Compatable ); /* Version Compatability Table      */
@@ -6904,7 +6917,6 @@ ips_order_controllers(void)
                        for (j = position; j < ips_num_controllers; j++) {
                                switch (ips_ha[j]->ad_type) {
                                case IPS_ADTYPE_SERVERAID6M:
-                               case IPS_ADTYPE_SERVERAID7k:
                                case IPS_ADTYPE_SERVERAID7M:
                                        if (nvram->adapter_order[i] == 'M') {
                                                ips_shift_controllers(position,
@@ -6925,6 +6937,7 @@ ips_order_controllers(void)
                                case IPS_ADTYPE_SERVERAID6I:
                                case IPS_ADTYPE_SERVERAID5I2:
                                case IPS_ADTYPE_SERVERAID5I1:
+                               case IPS_ADTYPE_SERVERAID7k:
                                        if (nvram->adapter_order[i] == 'S') {
                                                ips_shift_controllers(position,
                                                                      j);
@@ -7162,8 +7175,8 @@ ips_init_phase1(struct pci_dev *pci_dev, int *indexPtr)
        int j;
        int index;
        dma_addr_t dma_address;
-       char *ioremap_ptr;
-       char *mem_ptr;
+       char __iomem *ioremap_ptr;
+       char __iomem *mem_ptr;
        uint32_t IsDead;
 
        METHOD_TRACE("ips_init_phase1", 1);
@@ -7453,6 +7466,13 @@ ips_init_phase2(int index)
 MODULE_LICENSE("GPL");
 #endif
 
+MODULE_DESCRIPTION("IBM ServeRAID Adapter Driver " IPS_VER_STRING);
+
+#ifdef MODULE_VERSION
+MODULE_VERSION(IPS_VER_STRING);
+#endif
+
+
 /*
  * Overrides for Emacs so that we almost follow Linus's tabbing style.
  * Emacs will notice this stuff at the end of the file and automatically