1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
# 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 <James.Bottomley@SteelEye.com>
#
# 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];
|