# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/09/10 12:31:59-04:00 arjanv@redhat.com # [PATCH] aic79xx hostraid support # # 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 # # since AHD_HOSTRAID_BOARD wasn't actually used... a more minimal patch: # # drivers/scsi/aic7xxx/aic79xx_osm_pci.c # 2004/08/21 09:27:19-04:00 arjanv@redhat.com +4 -0 # aic79xx hostraid support # # drivers/scsi/aic7xxx/aic79xx_pci.c # 2004/08/21 09:27:19-04:00 arjanv@redhat.com +15 -20 # aic79xx hostraid support # diff -Nru a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c --- a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c 2004-11-10 07:41:45 -08:00 +++ b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c 2004-11-10 07:41:45 -08:00 @@ -64,6 +64,10 @@ 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 } }; diff -Nru a/drivers/scsi/aic7xxx/aic79xx_pci.c b/drivers/scsi/aic7xxx/aic79xx_pci.c --- a/drivers/scsi/aic7xxx/aic79xx_pci.c 2004-11-10 07:41:45 -08:00 +++ b/drivers/scsi/aic7xxx/aic79xx_pci.c 2004-11-10 07:41:45 -08:00 @@ -65,10 +65,10 @@ } #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 @@ #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 @@ "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 @@ "Adaptec 29320LP Ultra320 SCSI adapter", ahd_aic7901A_setup }, - /* aic7902 based controllers */ { ID_AHA_39320, ID_ALL_MASK, @@ -196,22 +197,10 @@ "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 }, @@ -293,6 +282,12 @@ vendor, 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];