Commit 47702565 authored by Arjan van de Ven's avatar Arjan van de Ven Committed by Christoph Hellwig

[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: default avatarJames Bottomley <James.Bottomley@SteelEye.com>

since AHD_HOSTRAID_BOARD wasn't actually used... a more minimal patch:
parent cd31a496
......@@ -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 }
};
......
......@@ -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)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment