]> git.hungrycats.org Git - linux/commitdiff
[PATCH] aic79xx hostraid support
authorArjan van de Ven <arjanv@redhat.com>
Fri, 10 Sep 2004 08:31:59 +0000 (04:31 -0400)
committerChristoph Hellwig <hch@sgi.com>
Fri, 10 Sep 2004 08:31:59 +0000 (04:31 -0400)
Patch ported to 2.6.8 by John A. Hull (john_hull@dell.com) to add
support for the aic79xx hostraid family support.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
since AHD_HOSTRAID_BOARD wasn't actually used... a more minimal patch:

drivers/scsi/aic7xxx/aic79xx_osm_pci.c
drivers/scsi/aic7xxx/aic79xx_pci.c

index d30823d008a060ea13b83eadaa0f3d8ac542f3e7..804fb43cc9f1c5017930c8a7009c152fa002039b 100644 (file)
@@ -64,6 +64,10 @@ static struct pci_device_id ahd_linux_pci_id_table[] = {
                0x9005, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
                PCI_CLASS_STORAGE_SCSI << 8, 0xFFFF00, 0
        },
+       {
+               0x9005, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
+               PCI_CLASS_STORAGE_RAID << 8, 0xFFFF00, 0
+       },
        { 0 }
 };
 
index 7cc83dafade4d010dc848aeb64b7d5516f313d5e..7e535095c68cac14e5833dde9dc1453a0178906b 100644 (file)
@@ -65,10 +65,10 @@ ahd_compose_id(u_int device, u_int vendor, u_int subdevice, u_int subvendor)
 }
 
 #define ID_ALL_MASK                    0xFFFFFFFFFFFFFFFFull
-#define ID_ALL_IROC_MASK               0xFFFFFF7FFFFFFFFFull
+#define ID_ALL_IROC_MASK               0xFF7FFFFFFFFFFFFFull
 #define ID_DEV_VENDOR_MASK             0xFFFFFFFF00000000ull
 #define ID_9005_GENERIC_MASK           0xFFF0FFFF00000000ull
-#define ID_9005_GENERIC_IROC_MASK      0xFFF0FF7F00000000ull
+#define ID_9005_GENERIC_IROC_MASK      0xFF70FFFF00000000ull
 
 #define ID_AIC7901                     0x800F9005FFFF9005ull
 #define ID_AHA_29320A                  0x8000900500609005ull
@@ -92,6 +92,8 @@ ahd_compose_id(u_int device, u_int vendor, u_int subdevice, u_int subvendor)
 #define ID_AIC7902_PCI_REV_B0          0x10
 #define SUBID_HP                       0x0E11
 
+#define DEVID_9005_HOSTRAID(id) ((id) & 0x80)
+
 #define DEVID_9005_TYPE(id) ((id) & 0xF)
 #define                DEVID_9005_TYPE_HBA             0x0     /* Standard Card */
 #define                DEVID_9005_TYPE_HBA_2EXT        0x1     /* 2 External Ports */
@@ -134,18 +136,18 @@ struct ahd_pci_identity ahd_pci_ident_table [] =
                "Adaptec 29320ALP Ultra320 SCSI adapter",
                ahd_aic7901_setup
        },
-       /* aic7901A based controllers */
+       /* aic7902 based controllers */ 
        {
                ID_AHA_29320,
                ID_ALL_MASK,
                "Adaptec 29320 Ultra320 SCSI adapter",
-               ahd_aic7901A_setup
+               ahd_aic7902_setup
        },
        {
                ID_AHA_29320B,
                ID_ALL_MASK,
                "Adaptec 29320B Ultra320 SCSI adapter",
-               ahd_aic7901A_setup
+               ahd_aic7902_setup
        },
        {
                ID_AHA_29320LP,
@@ -153,7 +155,6 @@ struct ahd_pci_identity ahd_pci_ident_table [] =
                "Adaptec 29320LP Ultra320 SCSI adapter",
                ahd_aic7901A_setup
        },
-       /* aic7902 based controllers */ 
        {
                ID_AHA_39320,
                ID_ALL_MASK,
@@ -196,22 +197,10 @@ struct ahd_pci_identity ahd_pci_ident_table [] =
                "Adaptec (HP OEM) 39320D Ultra320 SCSI adapter",
                ahd_aic7902_setup
        },
-       {
-               ID_AHA_29320,
-               ID_ALL_MASK,
-               "Adaptec 29320 Ultra320 SCSI adapter",
-               ahd_aic7902_setup
-       },
-       {
-               ID_AHA_29320B,
-               ID_ALL_MASK,
-               "Adaptec 29320B Ultra320 SCSI adapter",
-               ahd_aic7902_setup
-       },
        /* Generic chip probes for devices we don't know 'exactly' */
        {
-               ID_AIC7901 & ID_DEV_VENDOR_MASK,
-               ID_DEV_VENDOR_MASK,
+               ID_AIC7901 & ID_9005_GENERIC_MASK,
+               ID_9005_GENERIC_MASK,
                "Adaptec AIC7901 Ultra320 SCSI adapter",
                ahd_aic7901_setup
        },
@@ -294,6 +283,12 @@ ahd_find_pci_device(ahd_dev_softc_t pci)
                                 subdevice,
                                 subvendor);
 
+       /*
+        * Controllers, mask out the IROC/HostRAID bit
+        */
+       
+       full_id &= ID_ALL_IROC_MASK;
+
        for (i = 0; i < ahd_num_pci_devs; i++) {
                entry = &ahd_pci_ident_table[i];
                if (entry->full_id == (full_id & entry->id_mask)) {