6f9563b36368a9acdac630f9e1328d42a1c128c7
[reactos.git] / reactos / drivers / storage / ide / uniata / bm_devs.h
1 /*++
2
3 Copyright (c) 2002-2014 Alexandr A. Telyatnikov (Alter)
4
5 Module Name:
6 bm_devs.h
7
8 Abstract:
9 This file contains list of 'well known' PCI IDE controllers
10
11 Author:
12 Alexander A. Telyatnikov (Alter)
13
14 Environment:
15 kernel mode only
16
17 Notes:
18
19 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30 Revision History:
31
32 --*/
33
34 #define IDE_MAX_CHAN 16
35 #define IDE_DEFAULT_MAX_CHAN 2
36 // Thanks to SATA Port Multipliers:
37 //#define IDE_MAX_LUN_PER_CHAN SATA_MAX_PM_UNITS
38 #define IDE_MAX_LUN_PER_CHAN 2
39
40 #define IDE_MAX_LUN (AHCI_MAX_PORT*IDE_MAX_LUN_PER_CHAN)
41
42 #define MAX_QUEUE_STAT 8
43
44 // define PIO timings in nanoseconds
45 #define PIO0_TIMING 600
46
47 //#define UniataGetPioTiming(LunExt) ((LunExt->TransferMode <= ATA_PIO0) ? PIO0_TIMING : 0)
48 #define UniataGetPioTiming(LunExt) 0 //ktp
49
50 #ifndef __IDE_BUSMASTER_DEVICES_H__
51 #define __IDE_BUSMASTER_DEVICES_H__
52
53 /*#ifdef USER_MODE
54 #define PVEN_STR PCSTR
55 #else // USER_MODE
56 #define PVEN_STR PCHAR
57 #endif // USER_MODE*/
58 #define PVEN_STR PCSTR
59
60 typedef struct _BUSMASTER_CONTROLLER_INFORMATION {
61 PVEN_STR VendorId;
62 ULONG VendorIdLength;
63 ULONG nVendorId;
64 PVEN_STR DeviceId;
65 ULONG DeviceIdLength;
66 ULONG nDeviceId;
67 ULONG nRevId;
68 ULONG MaxTransferMode;
69 PVEN_STR FullDevName;
70 ULONG RaidFlags;
71 CHAR VendorIdStr[4];
72 CHAR DeviceIdStr[4];
73 ULONG slotNumber;
74 ULONG busNumber;
75 CHAR channel;
76 // CHAR numOfChannes;
77 CHAR MasterDev;
78 BOOLEAN Known;
79 #ifndef USER_MODE
80 UCHAR ChanInitOk; // 0x01 - primary, 0x02 - secondary, 0x80 - PciIde claimed
81 BOOLEAN Isr2Enable;
82 union {
83 PDEVICE_OBJECT Isr2DevObj;
84 PDEVICE_OBJECT PciIdeDevObj;
85 };
86 KIRQL Isr2Irql;
87 KAFFINITY Isr2Affinity;
88 ULONG Isr2Vector;
89 PKINTERRUPT Isr2InterruptObject;
90 CHAR AltInitMasterDev; // 0xff - uninitialized, 0x00 - normal, 0x01 - change ISA to PCI
91 CHAR NeedAltInit; // 0x01 - try change ISA to PCI
92 #endif
93
94 }BUSMASTER_CONTROLLER_INFORMATION, *PBUSMASTER_CONTROLLER_INFORMATION;
95
96 /* defines for known chipset PCI id's */
97 #define ATA_ACARD_ID 0x1191
98 #define ATA_ATP850 0x00021191
99 #define ATA_ATP850A 0x00041191
100 #define ATA_ATP850R 0x00051191
101 #define ATA_ATP860A 0x00061191
102 #define ATA_ATP860R 0x00071191
103 #define ATA_ATP865A 0x00081191
104 #define ATA_ATP865R 0x00091191
105
106 #define ATA_ACER_LABS_ID 0x10b9
107 #define ATA_ALI_1533 0x153310b9
108 #define ATA_ALI_5228 0x522810b9
109 #define ATA_ALI_5229 0x522910b9
110 #define ATA_ALI_5281 0x528110b9
111 #define ATA_ALI_5287 0x528710b9
112 #define ATA_ALI_5288 0x528810b9
113 #define ATA_ALI_5289 0x528910b9
114
115 #define ATA_AMD_ID 0x1022
116 #define ATA_AMD755 0x74011022
117 #define ATA_AMD756 0x74091022
118 #define ATA_AMD766 0x74111022
119 #define ATA_AMD768 0x74411022
120 #define ATA_AMD8111 0x74691022
121 #define ATA_AMD5536 0x209a1022
122 #define ATA_AMD_HUDSON2_S1 0x78001022
123 #define ATA_AMD_HUDSON2_S2 0x78011022
124 #define ATA_AMD_HUDSON2_S3 0x78021022
125 #define ATA_AMD_HUDSON2_S4 0x78031022
126 #define ATA_AMD_HUDSON2_S5 0x78041022
127 #define ATA_AMD_HUDSON2 0x780c1022
128
129 #define ATA_ADAPTEC_ID 0x9005
130 #define ATA_ADAPTEC_1420 0x02419005
131 #define ATA_ADAPTEC_1430 0x02439005
132
133 #define ATA_ATI_ID 0x1002
134 #define ATA_ATI_IXP200 0x43491002
135 #define ATA_ATI_IXP300 0x43691002
136 #define ATA_ATI_IXP300_S1 0x436e1002
137 #define ATA_ATI_IXP400 0x43761002
138 #define ATA_ATI_IXP400_S1 0x43791002
139 #define ATA_ATI_IXP400_S2 0x437a1002
140 #define ATA_ATI_IXP600 0x438c1002
141 #define ATA_ATI_IXP600_S1 0x43801002
142 #define ATA_ATI_IXP700 0x439c1002
143 #define ATA_ATI_IXP700_S1 0x43901002
144 #define ATA_ATI_IXP700_S2 0x43911002
145 #define ATA_ATI_IXP700_S3 0x43921002
146 #define ATA_ATI_IXP700_S4 0x43931002
147 #define ATA_ATI_IXP800_S1 0x43941002
148 #define ATA_ATI_IXP800_S2 0x43951002
149 #define ATA_ATI_4385 0x43851002
150
151 #define ATA_CENATEK_ID 0x16ca
152 #define ATA_CENATEK_ROCKET 0x000116ca
153
154 #define ATA_CYRIX_ID 0x1078
155 #define ATA_CYRIX_5530 0x01021078
156
157 #define ATA_CYPRESS_ID 0x1080
158 #define ATA_CYPRESS_82C693 0xc6931080
159
160 #define ATA_DEC_21150 0x00221011
161 #define ATA_DEC_21150_1 0x00231011
162
163 #define ATA_HIGHPOINT_ID 0x1103
164 #define ATA_HPT366 0x00041103
165 #define ATA_HPT372 0x00051103
166 #define ATA_HPT302 0x00061103
167 #define ATA_HPT371 0x00071103
168 #define ATA_HPT374 0x00081103
169
170 #define ATA_INTEL_ID 0x8086
171 #define ATA_I960RM 0x09628086
172 #define ATA_I82371FB 0x12308086
173 #define ATA_I82371SB 0x70108086
174 #define ATA_I82371AB 0x71118086
175 #define ATA_I82443MX 0x71998086
176 #define ATA_I82451NX 0x84ca8086
177 #define ATA_I82372FB 0x76018086
178 #define ATA_I82801AB 0x24218086
179 #define ATA_I82801AA 0x24118086
180 #define ATA_I82801BA 0x244a8086
181 #define ATA_I82801BA_1 0x244b8086
182 #define ATA_I82801CA 0x248a8086
183 #define ATA_I82801CA_1 0x248b8086
184 #define ATA_I82801DB 0x24cb8086
185 #define ATA_I82801DB_1 0x24ca8086
186 #define ATA_I82801EB 0x24db8086
187 #define ATA_I82801EB_S1 0x24d18086
188 #define ATA_I82801EB_R1 0x24df8086
189 #define ATA_I6300ESB 0x25a28086
190 #define ATA_I6300ESB_S1 0x25a38086
191 #define ATA_I6300ESB_R1 0x25b08086
192 #define ATA_I63XXESB2 0x269e8086
193 #define ATA_I63XXESB2_S1 0x26808086
194 #define ATA_I63XXESB2_S2 0x26818086
195 #define ATA_I63XXESB2_R1 0x26828086
196 #define ATA_I63XXESB2_R2 0x26838086
197 #define ATA_I82801FB 0x266f8086
198 #define ATA_I82801FB_S1 0x26518086
199 #define ATA_I82801FB_R1 0x26528086
200 #define ATA_I82801FB_M 0x26538086
201 #define ATA_I82801GB 0x27df8086
202 #define ATA_I82801GB_S1 0x27c08086
203 #define ATA_I82801GB_AH 0x27c18086
204 #define ATA_I82801GB_R1 0x27c38086
205 #define ATA_I82801GBM_S1 0x27c48086
206 #define ATA_I82801GBM_AH 0x27c58086
207 #define ATA_I82801GBM_R1 0x27c68086
208 #define ATA_I82801HB_S1 0x28208086
209 #define ATA_I82801HB_AH6 0x28218086
210 #define ATA_I82801HB_R1 0x28228086
211 #define ATA_I82801HB_AH4 0x28248086
212 #define ATA_I82801HB_S2 0x28258086
213 #define ATA_I82801HBM 0x28508086
214 #define ATA_I82801HBM_S1 0x28288086
215 #define ATA_I82801HBM_S2 0x28298086
216 #define ATA_I82801HBM_S3 0x282a8086
217 #define ATA_I82801IB_S1 0x29208086
218 #define ATA_I82801IB_AH2 0x29218086
219 #define ATA_I82801IB_AH6 0x29228086
220 #define ATA_I82801IB_AH4 0x29238086
221 #define ATA_I82801IB_R1 0x29258086
222 #define ATA_I82801IB_S2 0x29268086
223 #define ATA_I82801IBM_S1 0x29288086
224 #define ATA_I82801IBM_AH 0x29298086
225 #define ATA_I82801IBM_R1 0x292a8086
226 #define ATA_I82801IBM_S2 0x292d8086
227 #define ATA_I82801JIB_S1 0x3a208086
228 #define ATA_I82801JIB_AH 0x3a228086
229 #define ATA_I82801JIB_R1 0x3a258086
230 #define ATA_I82801JIB_S2 0x3a268086
231 #define ATA_I82801JD_S1 0x3a008086
232 #define ATA_I82801JD_AH 0x3a028086
233 #define ATA_I82801JD_R1 0x3a058086
234 #define ATA_I82801JD_S2 0x3a068086
235 /*
236 #define ATA_I82801JI_S1 0x3a208086
237 #define ATA_I82801JI_AH 0x3a228086
238 #define ATA_I82801JI_R1 0x3a258086
239 #define ATA_I82801JI_S2 0x3a268086
240 */
241 #define ATA_5Series_S1 0x3b208086
242 #define ATA_5Series_S2 0x3b218086
243 #define ATA_5Series_AH1 0x3b228086
244 #define ATA_5Series_AH2 0x3b238086
245 #define ATA_5Series_R1 0x3b258086
246 #define ATA_5Series_S3 0x3b268086
247 #define ATA_5Series_S4 0x3b288086
248 #define ATA_5Series_AH3 0x3b298086
249 #define ATA_5Series_R2 0x3b2c8086
250 #define ATA_5Series_S5 0x3b2d8086
251 #define ATA_5Series_S6 0x3b2e8086
252 #define ATA_5Series_AH4 0x3b2f8086
253
254 #define ATA_CPT_S1 0x1c008086
255 #define ATA_CPT_S2 0x1c018086
256 #define ATA_CPT_AH1 0x1c028086
257 #define ATA_CPT_AH2 0x1c038086
258 #define ATA_CPT_R1 0x1c048086
259 #define ATA_CPT_R2 0x1c058086
260 #define ATA_CPT_S3 0x1c088086
261 #define ATA_CPT_S4 0x1c098086
262
263 #define ATA_PBG_S1 0x1d008086
264 #define ATA_PBG_AH1 0x1d028086
265 #define ATA_PBG_R1 0x1d048086
266 #define ATA_PBG_R2 0x1d068086
267 #define ATA_PBG_R3 0x28268086
268 #define ATA_PBG_S2 0x1d088086
269
270 #define ATA_PPT_S1 0x1e008086
271 #define ATA_PPT_S2 0x1e018086
272 #define ATA_PPT_AH1 0x1e028086
273 #define ATA_PPT_AH2 0x1e038086
274 #define ATA_PPT_R1 0x1e048086
275 #define ATA_PPT_R2 0x1e058086
276 #define ATA_PPT_R3 0x1e068086
277 #define ATA_PPT_R4 0x1e078086
278 #define ATA_PPT_S3 0x1e088086
279 #define ATA_PPT_S4 0x1e098086
280 #define ATA_PPT_R5 0x1e0e8086
281 #define ATA_PPT_R6 0x1e0f8086
282
283 #define ATA_LPT_S1 0x8c008086
284 #define ATA_LPT_S2 0x8c018086
285 #define ATA_LPT_AH1 0x8c028086
286 #define ATA_LPT_AH2 0x8c038086
287 #define ATA_LPT_R1 0x8c048086
288 #define ATA_LPT_R2 0x8c058086
289 #define ATA_LPT_R3 0x8c068086
290 #define ATA_LPT_R4 0x8c078086
291 #define ATA_LPT_S3 0x8c088086
292 #define ATA_LPT_S4 0x8c098086
293 #define ATA_LPT_R5 0x8c0e8086
294 #define ATA_LPT_R6 0x8c0f8086
295
296 #define ATA_I31244 0x32008086
297 #define ATA_ISCH 0x811a8086
298 #define ATA_DH89XXCC 0x23238086
299
300 #define ATA_COLETOCRK_AH1 0x23a38086
301 #define ATA_COLETOCRK_S1 0x23a18086
302 #define ATA_COLETOCRK_S2 0x23a68086
303
304 #define ATA_JMICRON_ID 0x197b
305 #define ATA_JMB360 0x2360197b
306 #define ATA_JMB361 0x2361197b
307 #define ATA_JMB362 0x2362197b
308 #define ATA_JMB363 0x2363197b
309 #define ATA_JMB365 0x2365197b
310 #define ATA_JMB366 0x2366197b
311 #define ATA_JMB368 0x2368197b
312
313 #define ATA_MARVELL_ID 0x11ab
314 #define ATA_M88SX5040 0x504011ab
315 #define ATA_M88SX5041 0x504111ab
316 #define ATA_M88SX5080 0x508011ab
317 #define ATA_M88SX5081 0x508111ab
318 #define ATA_M88SX6041 0x604111ab
319 #define ATA_M88SX6042 0x604211ab
320 #define ATA_M88SX6081 0x608111ab
321 #define ATA_M88SX7042 0x704211ab
322 #define ATA_M88SE6101 0x610111ab
323 #define ATA_M88SE6102 0x610211ab
324 #define ATA_M88SE6111 0x611111ab
325 #define ATA_M88SE6121 0x612111ab
326 #define ATA_M88SE6141 0x614111ab
327 #define ATA_M88SE6145 0x614511ab
328 #define ATA_M88SE9123 0x91231b4b
329 #define ATA_MARVELL2_ID 0x1b4b
330
331 #define ATA_MICRON_ID 0x1042
332 #define ATA_MICRON_RZ1000 0x10001042
333 #define ATA_MICRON_RZ1001 0x10011042
334
335 #define ATA_NATIONAL_ID 0x100b
336 #define ATA_SC1100 0x0502100b
337
338 #define ATA_NETCELL_ID 0x169c
339 #define ATA_NETCELL_SR 0x0044169c
340
341 #define ATA_NVIDIA_ID 0x10de
342 #define ATA_NFORCE1 0x01bc10de
343 #define ATA_NFORCE2 0x006510de
344 #define ATA_NFORCE2_PRO 0x008510de
345 #define ATA_NFORCE2_PRO_S1 0x008e10de
346 #define ATA_NFORCE3 0x00d510de
347 #define ATA_NFORCE3_PRO 0x00e510de
348 #define ATA_NFORCE3_PRO_S1 0x00e310de
349 #define ATA_NFORCE3_PRO_S2 0x00ee10de
350 #define ATA_NFORCE_MCP04 0x003510de
351 #define ATA_NFORCE_MCP04_S1 0x003610de
352 #define ATA_NFORCE_MCP04_S2 0x003e10de
353 #define ATA_NFORCE_CK804 0x005310de
354 #define ATA_NFORCE_CK804_S1 0x005410de
355 #define ATA_NFORCE_CK804_S2 0x005510de
356 #define ATA_NFORCE_MCP51 0x026510de
357 #define ATA_NFORCE_MCP51_S1 0x026610de
358 #define ATA_NFORCE_MCP51_S2 0x026710de
359 #define ATA_NFORCE_MCP55 0x036e10de
360 #define ATA_NFORCE_MCP55_S1 0x037e10de
361 #define ATA_NFORCE_MCP55_S2 0x037f10de
362 #define ATA_NFORCE_MCP61 0x03ec10de
363 #define ATA_NFORCE_MCP61_S1 0x03e710de
364 #define ATA_NFORCE_MCP61_S2 0x03f610de
365 #define ATA_NFORCE_MCP61_S3 0x03f710de
366 #define ATA_NFORCE_MCP65 0x044810de
367 #define ATA_NFORCE_MCP65_A0 0x044c10de
368 #define ATA_NFORCE_MCP65_A1 0x044d10de
369 #define ATA_NFORCE_MCP65_A2 0x044e10de
370 #define ATA_NFORCE_MCP65_A3 0x044f10de
371 #define ATA_NFORCE_MCP65_A4 0x045c10de
372 #define ATA_NFORCE_MCP65_A5 0x045d10de
373 #define ATA_NFORCE_MCP65_A6 0x045e10de
374 #define ATA_NFORCE_MCP65_A7 0x045f10de
375 #define ATA_NFORCE_MCP67 0x056010de
376 #define ATA_NFORCE_MCP67_A0 0x055010de
377 #define ATA_NFORCE_MCP67_A1 0x055110de
378 #define ATA_NFORCE_MCP67_A2 0x055210de
379 #define ATA_NFORCE_MCP67_A3 0x055310de
380 #define ATA_NFORCE_MCP67_A4 0x055410de
381 #define ATA_NFORCE_MCP67_A5 0x055510de
382 #define ATA_NFORCE_MCP67_A6 0x055610de
383 #define ATA_NFORCE_MCP67_A7 0x055710de
384 #define ATA_NFORCE_MCP67_A8 0x055810de
385 #define ATA_NFORCE_MCP67_A9 0x055910de
386 #define ATA_NFORCE_MCP67_AA 0x055A10de
387 #define ATA_NFORCE_MCP67_AB 0x055B10de
388 #define ATA_NFORCE_MCP67_AC 0x058410de
389 #define ATA_NFORCE_MCP73 0x056c10de
390 #define ATA_NFORCE_MCP73_A0 0x07f010de
391 #define ATA_NFORCE_MCP73_A1 0x07f110de
392 #define ATA_NFORCE_MCP73_A2 0x07f210de
393 #define ATA_NFORCE_MCP73_A3 0x07f310de
394 #define ATA_NFORCE_MCP73_A4 0x07f410de
395 #define ATA_NFORCE_MCP73_A5 0x07f510de
396 #define ATA_NFORCE_MCP73_A6 0x07f610de
397 #define ATA_NFORCE_MCP73_A7 0x07f710de
398 #define ATA_NFORCE_MCP73_A8 0x07f810de
399 #define ATA_NFORCE_MCP73_A9 0x07f910de
400 #define ATA_NFORCE_MCP73_AA 0x07fa10de
401 #define ATA_NFORCE_MCP73_AB 0x07fb10de
402 #define ATA_NFORCE_MCP77 0x075910de
403 #define ATA_NFORCE_MCP77_A0 0x0ad010de
404 #define ATA_NFORCE_MCP77_A1 0x0ad110de
405 #define ATA_NFORCE_MCP77_A2 0x0ad210de
406 #define ATA_NFORCE_MCP77_A3 0x0ad310de
407 #define ATA_NFORCE_MCP77_A4 0x0ad410de
408 #define ATA_NFORCE_MCP77_A5 0x0ad510de
409 #define ATA_NFORCE_MCP77_A6 0x0ad610de
410 #define ATA_NFORCE_MCP77_A7 0x0ad710de
411 #define ATA_NFORCE_MCP77_A8 0x0ad810de
412 #define ATA_NFORCE_MCP77_A9 0x0ad910de
413 #define ATA_NFORCE_MCP77_AA 0x0ada10de
414 #define ATA_NFORCE_MCP77_AB 0x0adb10de
415 #define ATA_NFORCE_MCP79_A0 0x0ab410de
416 #define ATA_NFORCE_MCP79_A1 0x0ab510de
417 #define ATA_NFORCE_MCP79_A2 0x0ab610de
418 #define ATA_NFORCE_MCP79_A3 0x0ab710de
419 #define ATA_NFORCE_MCP79_A4 0x0ab810de
420 #define ATA_NFORCE_MCP79_A5 0x0ab910de
421 #define ATA_NFORCE_MCP79_A6 0x0aba10de
422 #define ATA_NFORCE_MCP79_A7 0x0abb10de
423 #define ATA_NFORCE_MCP79_A8 0x0abc10de
424 #define ATA_NFORCE_MCP79_A9 0x0abd10de
425 #define ATA_NFORCE_MCP79_AA 0x0abe10de
426 #define ATA_NFORCE_MCP79_AB 0x0abf10de
427 #define ATA_NFORCE_MCP89_A0 0x0d8410de
428 #define ATA_NFORCE_MCP89_A1 0x0d8510de
429 #define ATA_NFORCE_MCP89_A2 0x0d8610de
430 #define ATA_NFORCE_MCP89_A3 0x0d8710de
431 #define ATA_NFORCE_MCP89_A4 0x0d8810de
432 #define ATA_NFORCE_MCP89_A5 0x0d8910de
433 #define ATA_NFORCE_MCP89_A6 0x0d8a10de
434 #define ATA_NFORCE_MCP89_A7 0x0d8b10de
435 #define ATA_NFORCE_MCP89_A8 0x0d8c10de
436 #define ATA_NFORCE_MCP89_A9 0x0d8d10de
437 #define ATA_NFORCE_MCP89_AA 0x0d8e10de
438 #define ATA_NFORCE_MCP89_AB 0x0d8f10de
439
440 #define ATA_PROMISE_ID 0x105a
441 #define ATA_PDC20246 0x4d33105a
442 #define ATA_PDC20262 0x4d38105a
443 #define ATA_PDC20263 0x0d38105a
444 #define ATA_PDC20265 0x0d30105a
445 #define ATA_PDC20267 0x4d30105a
446 #define ATA_PDC20268 0x4d68105a
447 #define ATA_PDC20269 0x4d69105a
448 #define ATA_PDC20270 0x6268105a
449 #define ATA_PDC20271 0x6269105a
450 #define ATA_PDC20275 0x1275105a
451 #define ATA_PDC20276 0x5275105a
452 #define ATA_PDC20277 0x7275105a
453 #define ATA_PDC20318 0x3318105a
454 #define ATA_PDC20319 0x3319105a
455 #define ATA_PDC20371 0x3371105a
456 #define ATA_PDC20375 0x3375105a
457 #define ATA_PDC20376 0x3376105a
458 #define ATA_PDC20377 0x3377105a
459 #define ATA_PDC20378 0x3373105a
460 #define ATA_PDC20379 0x3372105a
461 #define ATA_PDC20571 0x3571105a
462 #define ATA_PDC20575 0x3d75105a
463 #define ATA_PDC20579 0x3574105a
464 #define ATA_PDC20771 0x3570105a
465 #define ATA_PDC40518 0x3d18105a
466 #define ATA_PDC40519 0x3519105a
467 #define ATA_PDC40718 0x3d17105a
468 #define ATA_PDC40719 0x3515105a
469 #define ATA_PDC40775 0x3d73105a
470 #define ATA_PDC40779 0x3577105a
471 #define ATA_PDC20617 0x6617105a
472 #define ATA_PDC20618 0x6626105a
473 #define ATA_PDC20619 0x6629105a
474 #define ATA_PDC20620 0x6620105a
475 #define ATA_PDC20621 0x6621105a
476 #define ATA_PDC20622 0x6622105a
477 #define ATA_PDC20624 0x6624105a
478 #define ATA_PDC81518 0x8002105a
479
480 #define ATA_SERVERWORKS_ID 0x1166
481 #define ATA_ROSB4_ISA 0x02001166
482 #define ATA_ROSB4 0x02111166
483 #define ATA_CSB5 0x02121166
484 #define ATA_CSB6 0x02131166
485 #define ATA_CSB6_1 0x02171166
486 #define ATA_HT1000 0x02141166
487 #define ATA_HT1000_S1 0x024b1166
488 #define ATA_HT1000_S2 0x024a1166
489 #define ATA_K2 0x02401166
490 #define ATA_FRODO4 0x02411166
491 #define ATA_FRODO8 0x02421166
492
493 #define ATA_SILICON_IMAGE_ID 0x1095
494 #define ATA_SII3114 0x31141095
495 #define ATA_SII3512 0x35121095
496 #define ATA_SII3112 0x31121095
497 #define ATA_SII3112_1 0x02401095
498 #define ATA_SII3124 0x31241095
499 #define ATA_SII3132 0x31321095
500 #define ATA_SII3132_1 0x02421095
501 #define ATA_SII3132_2 0x02441095
502 #define ATA_SII0680 0x06801095
503 #define ATA_CMD646 0x06461095
504 #define ATA_CMD648 0x06481095
505 #define ATA_CMD649 0x06491095
506
507 #define ATA_SIS_ID 0x1039
508 #define ATA_SISSOUTH 0x00081039
509 #define ATA_SIS5511 0x55111039
510 #define ATA_SIS5513 0x55131039
511 #define ATA_SIS5517 0x55171039
512 #define ATA_SIS5518 0x55181039
513 #define ATA_SIS5571 0x55711039
514 #define ATA_SIS5591 0x55911039
515 #define ATA_SIS5596 0x55961039
516 #define ATA_SIS5597 0x55971039
517 #define ATA_SIS5598 0x55981039
518 #define ATA_SIS5600 0x56001039
519 #define ATA_SIS530 0x05301039
520 #define ATA_SIS540 0x05401039
521 #define ATA_SIS550 0x05501039
522 #define ATA_SIS620 0x06201039
523 #define ATA_SIS630 0x06301039
524 #define ATA_SIS635 0x06351039
525 #define ATA_SIS633 0x06331039
526 #define ATA_SIS640 0x06401039
527 #define ATA_SIS645 0x06451039
528 #define ATA_SIS646 0x06461039
529 #define ATA_SIS648 0x06481039
530 #define ATA_SIS650 0x06501039
531 #define ATA_SIS651 0x06511039
532 #define ATA_SIS652 0x06521039
533 #define ATA_SIS655 0x06551039
534 #define ATA_SIS658 0x06581039
535 #define ATA_SIS661 0x06611039
536 #define ATA_SIS730 0x07301039
537 #define ATA_SIS733 0x07331039
538 #define ATA_SIS735 0x07351039
539 #define ATA_SIS740 0x07401039
540 #define ATA_SIS745 0x07451039
541 #define ATA_SIS746 0x07461039
542 #define ATA_SIS748 0x07481039
543 #define ATA_SIS750 0x07501039
544 #define ATA_SIS751 0x07511039
545 #define ATA_SIS752 0x07521039
546 #define ATA_SIS755 0x07551039
547 #define ATA_SIS961 0x09611039
548 #define ATA_SIS962 0x09621039
549 #define ATA_SIS963 0x09631039
550 #define ATA_SIS964 0x09641039
551 #define ATA_SIS965 0x09651039
552 #define ATA_SIS964_1 0x01801039
553 #define ATA_SIS180 0x01801039
554 #define ATA_SIS181 0x01811039
555 #define ATA_SIS182 0x01821039
556
557 #define ATA_VIA_ID 0x1106
558 #define ATA_VIA82C571 0x05711106
559 #define ATA_VIA82C586 0x05861106
560 #define ATA_VIA82C596 0x05961106
561 #define ATA_VIA82C686 0x06861106
562 #define ATA_VIA8231 0x82311106
563 #define ATA_VIA8233 0x30741106
564 #define ATA_VIA8233A 0x31471106
565 #define ATA_VIA8233C 0x31091106
566 #define ATA_VIA8235 0x31771106
567 #define ATA_VIA8237 0x32271106
568 #define ATA_VIA8237A 0x05911106
569 #define ATA_VIA8237S 0x53371106
570 #define ATA_VIA8237_5372 0x53721106
571 #define ATA_VIA8237_7372 0x73721106
572 #define ATA_VIA8251 0x33491106
573 #define ATA_VIA8361 0x31121106
574 #define ATA_VIA8363 0x03051106
575 #define ATA_VIA8371 0x03911106
576 #define ATA_VIA8662 0x31021106
577 #define ATA_VIA6410 0x31641106
578 #define ATA_VIA6420 0x31491106
579 #define ATA_VIA6421 0x32491106
580
581 #define ATA_VIACX700IDE 0x05811106
582 #define ATA_VIACX700 0x83241106
583 #define ATA_VIASATAIDE 0x53241106
584 #define ATA_VIAVX800 0x83531106
585 #define ATA_VIASATAIDE2 0xc4091106
586 #define ATA_VIAVX855 0x84091106
587 #define ATA_VIASATAIDE3 0x90011106
588 #define ATA_VIAVX900 0x84101106
589
590 #define ATA_ITE_ID 0x1283
591 #define ATA_IT8172G 0x81721283
592 #define ATA_IT8211F 0x82111283
593 #define ATA_IT8212F 0x82121283
594 #define ATA_IT8213F 0x82131283
595
596 #define ATA_OPTI_ID 0x1045
597 #define ATA_OPTI82C621 0xc6211045
598 #define ATA_OPTI82C625 0xd5681045
599
600 #define ATA_HINT_ID 0x3388
601 #define ATA_HINTEIDE_ID 0x80133388
602
603 /* chipset setup related defines */
604 /* Used in HW_DEVICE_EXTENSION.InitMethod */
605
606 #define CHIPTYPE_MASK 0x000000ff
607 #define CHIPFLAG_MASK 0xffffff00
608
609 #define UNIATA_RAID_CONTROLLER 0x80000000
610 #define UNIATA_SIMPLEX_ONLY 0x40000000
611 #define UNIATA_NO_SLAVE 0x20000000
612 #define UNIATA_SATA 0x10000000
613 #define UNIATA_NO_DPC 0x08000000
614 #define UNIATA_NO_DPC_ATAPI 0x04000000
615 #define UNIATA_AHCI 0x02000000
616 #define UNIATA_NO80CHK 0x01000000
617
618 #define ATPOLD 0x0100
619
620 #define ALIOLD 0x0100
621 #define ALINEW 0x0200
622
623 #define HPT366 0
624 #define HPT370 1
625 #define HPT372 2
626 #define HPT374 3
627 #define HPTOLD 0x0100
628
629 #define PROLD 0
630 #define PRNEW 1
631 #define PRTX 2
632 #define PRMIO 3
633 #define PRTX4 0x0100
634 #define PRSX4K 0x0200
635 #define PRSX6K 0x0400
636 #define PRSATA 0x0800
637 #define PRCMBO 0x1000
638 #define PRG2 0x2000
639 #define PRCMBO2 (PRCMBO | PRG2)
640 #define PRSATA2 (PRSATA | PRG2)
641
642 #define SWKS33 0
643 #define SWKS66 1
644 #define SWKS100 2
645 #define SWKSMIO 3
646
647 #define SIIOLD 0
648 #define SIICMD 1
649 #define SIIMIO 2
650 #define ATI700 3
651
652 #define SIIINTR 0x0100
653 #define SIIENINTR 0x0200
654 #define SII4CH 0x0400
655 #define SIISETCLK 0x0800
656 #define SIIBUG 0x1000
657 #define SIINOSATAIRQ 0x2000
658
659 //#define SIS_SOUTH 1
660 #define SISSATA 2
661 #define SIS133NEW 3
662 #define SIS133OLD 4
663 #define SIS100NEW 5
664 #define SIS100OLD 6
665 #define SIS66 7
666 #define SIS33 8
667
668 #define SIS_BASE 0x0100
669 #define SIS_SOUTH 0x0200
670
671 #define INTEL_STD 0
672 #define INTEL_IDX 1
673
674 #define ICH4_FIX 0x0100
675 #define ICH5 0x0200
676 #define I6CH 0x0400
677 #define I6CH2 0x0800
678 //#define I1CH 0x1000 // obsolete
679 #define ICH7 0x1000
680
681 #define NV4OFF 0x0100
682 #define NVQ 0x0200
683
684 #define VIA33 4
685 #define VIA66 1
686 #define VIA100 2
687 #define VIA133 3
688 #define AMDNVIDIA 0
689 #define AMDCABLE 0x0100
690 #define AMDBUG 0x0200
691 #define VIABAR 0x0400
692 #define VIACLK 0x0800
693 #define VIABUG 0x1000
694 #define VIASOUTH 0x2000
695 #define VIAAST 0x4000
696 #define VIAPRQ 0x8000
697 #define VIASATA 0x10000
698
699 #define ITE_33 0
700 #define ITE_133 1
701 #define ITE_133_NEW 2
702
703 #ifdef USER_MODE
704 #define PCI_DEV_HW_SPEC_BM(idhi, idlo, rev, mode, name, flags) \
705 { (PVEN_STR) #idlo, 4, 0x##idlo, (PVEN_STR) #idhi, 4, 0x##idhi, rev, mode, (PVEN_STR)name, flags}
706 #else
707 #define PCI_DEV_HW_SPEC_BM(idhi, idlo, rev, mode, name, flags) \
708 { (PVEN_STR) #idlo, 4, 0x##idlo, (PVEN_STR) #idhi, 4, 0x##idhi, rev, mode, NULL, flags}
709 #endif
710
711 #define BMLIST_TERMINATOR (0xffffffffL)
712
713 BUSMASTER_CONTROLLER_INFORMATION const BusMasterAdapters[] = {
714
715 PCI_DEV_HW_SPEC_BM( 0005, 1191, 0x00, ATA_UDMA2, "Acard ATP850" , ATPOLD | UNIATA_SIMPLEX_ONLY ),
716 PCI_DEV_HW_SPEC_BM( 0006, 1191, 0x00, ATA_UDMA4, "Acard ATP860A" , UNIATA_NO80CHK ),
717 PCI_DEV_HW_SPEC_BM( 0007, 1191, 0x00, ATA_UDMA4, "Acard ATP860R" , UNIATA_NO80CHK ),
718 PCI_DEV_HW_SPEC_BM( 0008, 1191, 0x00, ATA_UDMA6, "Acard ATP865A" , UNIATA_NO80CHK ),
719 PCI_DEV_HW_SPEC_BM( 0009, 1191, 0x00, ATA_UDMA6, "Acard ATP865R" , UNIATA_NO80CHK ),
720
721 PCI_DEV_HW_SPEC_BM( 5289, 10b9, 0x00, ATA_SA150, "ALI M5289" , UNIATA_SATA | UNIATA_NO_SLAVE ),
722 PCI_DEV_HW_SPEC_BM( 5288, 10b9, 0x00, ATA_SA300, "ALI M5288" , UNIATA_SATA | UNIATA_NO_SLAVE ),
723 PCI_DEV_HW_SPEC_BM( 5287, 10b9, 0x00, ATA_SA150, "ALI M5287" , UNIATA_SATA | UNIATA_NO_SLAVE ),
724 PCI_DEV_HW_SPEC_BM( 5281, 10b9, 0x00, ATA_SA150, "ALI M5281" , UNIATA_SATA | UNIATA_NO_SLAVE ),
725 PCI_DEV_HW_SPEC_BM( 5228, 10b9, 0xc5, ATA_UDMA6, "ALI M5228 UDMA6" , ALINEW ),
726 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0xc5, ATA_UDMA6, "ALI M5229 UDMA6" , ALINEW ),
727 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0xc4, ATA_UDMA5, "ALI M5229 UDMA5" , ALINEW ),
728 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0xc2, ATA_UDMA4, "ALI M5229 UDMA4" , ALINEW ),
729 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0x20, ATA_UDMA2, "ALI M5229 UDMA2" , ALIOLD ),
730 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0x00, ATA_WDMA2, "ALI M5229 WDMA2" , ALIOLD ),
731
732 PCI_DEV_HW_SPEC_BM( 7401, 1022, 0x00, ATA_UDMA2, "AMD 755" , 0 | 0x00 ),
733 PCI_DEV_HW_SPEC_BM( 7409, 1022, 0x00, ATA_UDMA4, "AMD 756" , 0 | UNIATA_NO80CHK ),
734 PCI_DEV_HW_SPEC_BM( 7411, 1022, 0x00, ATA_UDMA5, "AMD 766" , 0 | AMDBUG ),
735 PCI_DEV_HW_SPEC_BM( 7441, 1022, 0x00, ATA_UDMA5, "AMD 768" , 0 ),
736 PCI_DEV_HW_SPEC_BM( 7469, 1022, 0x00, ATA_UDMA6, "AMD 8111" , 0 ),
737 PCI_DEV_HW_SPEC_BM( 209a, 1022, 0x00, ATA_UDMA5, "AMD CS5536" , 0 ),
738
739 PCI_DEV_HW_SPEC_BM( 4349, 1002, 0x00, ATA_UDMA5, "ATI IXP200" , 0 ),
740 PCI_DEV_HW_SPEC_BM( 4369, 1002, 0x00, ATA_UDMA6, "ATI IXP300" , 0 ),
741 PCI_DEV_HW_SPEC_BM( 4376, 1002, 0x00, ATA_UDMA6, "ATI IXP400" , 0 ),
742 PCI_DEV_HW_SPEC_BM( 436e, 1002, 0x00, ATA_SA150, "ATI IXP300" , SIIMIO | SIIBUG | UNIATA_SATA ),
743 PCI_DEV_HW_SPEC_BM( 4379, 1002, 0x00, ATA_SA150, "ATI IXP400" , SIIMIO | SIIBUG | SIINOSATAIRQ | UNIATA_SATA ),
744 PCI_DEV_HW_SPEC_BM( 437a, 1002, 0x00, ATA_SA300, "ATI IXP400" , SIIMIO | SIIBUG | SIINOSATAIRQ | UNIATA_SATA ),
745 PCI_DEV_HW_SPEC_BM( 438c, 1002, 0x00, ATA_UDMA6, "ATI IXP600" , 0 ),
746 PCI_DEV_HW_SPEC_BM( 4380, 1002, 0x00, ATA_SA300, "ATI IXP600" , UNIATA_SATA | UNIATA_AHCI ),
747 PCI_DEV_HW_SPEC_BM( 439c, 1002, 0x00, ATA_UDMA6, "ATI IXP700" , 0 ),
748 PCI_DEV_HW_SPEC_BM( 4390, 1002, 0x00, ATA_SA300, "ATI IXP700" , ATI700 | UNIATA_SATA | UNIATA_AHCI ),
749 PCI_DEV_HW_SPEC_BM( 4391, 1002, 0x00, ATA_SA300, "ATI IXP700" , UNIATA_SATA | UNIATA_AHCI ),
750 PCI_DEV_HW_SPEC_BM( 4392, 1002, 0x00, ATA_SA300, "ATI IXP700" , UNIATA_SATA | UNIATA_AHCI ),
751 PCI_DEV_HW_SPEC_BM( 4393, 1002, 0x00, ATA_SA300, "ATI IXP700" , UNIATA_SATA | UNIATA_AHCI ),
752 PCI_DEV_HW_SPEC_BM( 4394, 1002, 0x00, ATA_SA300, "ATI IXP700/800" , UNIATA_SATA | UNIATA_AHCI ),
753 PCI_DEV_HW_SPEC_BM( 4395, 1002, 0x00, ATA_SA300, "ATI IXP700/800" , UNIATA_SATA | UNIATA_AHCI ),
754
755 PCI_DEV_HW_SPEC_BM( 780c, 1002, 0x00, ATA_UDMA6, "ATI Hudson-2" , 0 ),
756 PCI_DEV_HW_SPEC_BM( 7800, 1002, 0x00, ATA_SA300, "ATI Hudson-2" , UNIATA_SATA | UNIATA_AHCI ),
757 PCI_DEV_HW_SPEC_BM( 7801, 1002, 0x00, ATA_SA300, "ATI Hudson-2" , UNIATA_SATA | UNIATA_AHCI ),
758 PCI_DEV_HW_SPEC_BM( 7802, 1002, 0x00, ATA_SA300, "ATI Hudson-2" , UNIATA_SATA | UNIATA_AHCI ),
759 PCI_DEV_HW_SPEC_BM( 7803, 1002, 0x00, ATA_SA300, "ATI Hudson-2" , UNIATA_SATA | UNIATA_AHCI ),
760 PCI_DEV_HW_SPEC_BM( 7804, 1002, 0x00, ATA_SA300, "ATI Hudson-2" , UNIATA_SATA | UNIATA_AHCI ),
761
762 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0x05, ATA_UDMA6, "HighPoint HPT372" , HPT372 | 0x00 | UNIATA_RAID_CONTROLLER),
763 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0x03, ATA_UDMA5, "HighPoint HPT370" , HPT370 | 0x00 | UNIATA_RAID_CONTROLLER),
764 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0x02, ATA_UDMA4, "HighPoint HPT368" , HPT366 | 0x00 | UNIATA_RAID_CONTROLLER),
765 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0x00, ATA_UDMA4, "HighPoint HPT366" , HPT366 | HPTOLD | UNIATA_RAID_CONTROLLER),
766 PCI_DEV_HW_SPEC_BM( 0005, 1103, 0x01, ATA_UDMA6, "HighPoint HPT372" , HPT372 | 0x00 | UNIATA_RAID_CONTROLLER),
767 PCI_DEV_HW_SPEC_BM( 0005, 1103, 0x00, ATA_UDMA4, "HighPoint HPT372" , HPT372 | HPTOLD | UNIATA_RAID_CONTROLLER),
768 PCI_DEV_HW_SPEC_BM( 0006, 1103, 0x01, ATA_UDMA6, "HighPoint HPT302" , HPT372 | 0x00 | UNIATA_RAID_CONTROLLER),
769 PCI_DEV_HW_SPEC_BM( 0007, 1103, 0x01, ATA_UDMA6, "HighPoint HPT371" , HPT372 | 0x00 | UNIATA_RAID_CONTROLLER),
770 PCI_DEV_HW_SPEC_BM( 0008, 1103, 0x07, ATA_UDMA6, "HighPoint HPT374" , HPT374 | 0x00 | UNIATA_RAID_CONTROLLER),
771
772 PCI_DEV_HW_SPEC_BM( 1230, 8086, 0x00, ATA_WDMA2, "Intel PIIX" , 0 ),
773 PCI_DEV_HW_SPEC_BM( 7010, 8086, 0x00, ATA_WDMA2, "Intel PIIX3" , 0 ),
774 PCI_DEV_HW_SPEC_BM( 7111, 8086, 0x00, ATA_UDMA2, "Intel PIIX3" , 0 ),
775 PCI_DEV_HW_SPEC_BM( 7199, 8086, 0x00, ATA_UDMA2, "Intel PIIX4" , 0 ),
776 PCI_DEV_HW_SPEC_BM( 84ca, 8086, 0x00, ATA_UDMA2, "Intel PIIX4" , 0 ),
777 PCI_DEV_HW_SPEC_BM( 7601, 8086, 0x00, ATA_UDMA2, "Intel ICH0" , 0 ),
778
779 PCI_DEV_HW_SPEC_BM( 2421, 8086, 0x00, ATA_UDMA4, "Intel ICH" , 0 ),
780 PCI_DEV_HW_SPEC_BM( 2411, 8086, 0x00, ATA_UDMA4, "Intel ICH" , 0 ),
781
782 PCI_DEV_HW_SPEC_BM( 244a, 8086, 0x00, ATA_UDMA5, "Intel ICH2" , 0 ),
783 PCI_DEV_HW_SPEC_BM( 244b, 8086, 0x00, ATA_UDMA5, "Intel ICH2" , 0 ),
784
785 PCI_DEV_HW_SPEC_BM( 248a, 8086, 0x00, ATA_UDMA5, "Intel ICH3" , 0 ),
786 PCI_DEV_HW_SPEC_BM( 248b, 8086, 0x00, ATA_UDMA5, "Intel ICH3" , 0 ),
787
788 PCI_DEV_HW_SPEC_BM( 24cb, 8086, 0x00, ATA_UDMA5, "Intel ICH4" , ICH4_FIX | UNIATA_NO_DPC ),
789 PCI_DEV_HW_SPEC_BM( 24ca, 8086, 0x00, ATA_UDMA5, "Intel ICH4" , ICH4_FIX | UNIATA_NO_DPC ),
790
791 PCI_DEV_HW_SPEC_BM( 24db, 8086, 0x00, ATA_UDMA5, "Intel ICH5 EB" , 0 ),
792 PCI_DEV_HW_SPEC_BM( 24d1, 8086, 0x00, ATA_SA150, "Intel ICH5 EB1" , ICH5 | UNIATA_SATA ),
793 PCI_DEV_HW_SPEC_BM( 24df, 8086, 0x00, ATA_SA150, "Intel ICH5 EB2" , ICH5 | UNIATA_SATA ),
794
795 PCI_DEV_HW_SPEC_BM( 25a2, 8086, 0x00, ATA_UDMA5, "Intel 6300ESB" , 0 ),
796 PCI_DEV_HW_SPEC_BM( 25a3, 8086, 0x00, ATA_SA150, "Intel 6300ESB1" , ICH5 | UNIATA_SATA ),
797 PCI_DEV_HW_SPEC_BM( 25b0, 8086, 0x00, ATA_SA150, "Intel 6300ESB2" , ICH5 | UNIATA_SATA ),
798
799 PCI_DEV_HW_SPEC_BM( 266f, 8086, 0x00, ATA_UDMA5, "Intel ICH6" , 0 ),
800 PCI_DEV_HW_SPEC_BM( 2651, 8086, 0x00, ATA_SA150, "Intel ICH6" , UNIATA_SATA | UNIATA_AHCI ),
801 PCI_DEV_HW_SPEC_BM( 2652, 8086, 0x00, ATA_SA150, "Intel ICH6" , UNIATA_SATA | UNIATA_AHCI ),
802 PCI_DEV_HW_SPEC_BM( 2653, 8086, 0x00, ATA_SA150, "Intel ICH6M" , UNIATA_SATA | UNIATA_AHCI ),
803
804 PCI_DEV_HW_SPEC_BM( 27df, 8086, 0x00, ATA_UDMA5, "Intel ICH7" , 0 ),
805 PCI_DEV_HW_SPEC_BM( 27c0, 8086, 0x00, ATA_SA300, "Intel ICH7 S1" , ICH7 | UNIATA_SATA ),
806 PCI_DEV_HW_SPEC_BM( 27c1, 8086, 0x00, ATA_SA300, "Intel ICH7" , UNIATA_SATA | UNIATA_AHCI ),
807 PCI_DEV_HW_SPEC_BM( 27c3, 8086, 0x00, ATA_SA300, "Intel ICH7" , UNIATA_SATA ),
808 PCI_DEV_HW_SPEC_BM( 27c4, 8086, 0x00, ATA_SA150, "Intel ICH7M R1" , ICH7 | UNIATA_SATA ),
809 PCI_DEV_HW_SPEC_BM( 27c5, 8086, 0x00, ATA_SA150, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
810 PCI_DEV_HW_SPEC_BM( 27c6, 8086, 0x00, ATA_SA150, "Intel ICH7M" , UNIATA_SATA ),
811
812 PCI_DEV_HW_SPEC_BM( 269e, 8086, 0x00, ATA_UDMA5, "Intel 63XXESB2" , 0 ),
813 PCI_DEV_HW_SPEC_BM( 2680, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA ),
814 PCI_DEV_HW_SPEC_BM( 2681, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
815 PCI_DEV_HW_SPEC_BM( 2682, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
816 PCI_DEV_HW_SPEC_BM( 2683, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
817
818 PCI_DEV_HW_SPEC_BM( 2820, 8086, 0x00, ATA_SA300, "Intel ICH8" , I6CH ),
819 PCI_DEV_HW_SPEC_BM( 2821, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
820 PCI_DEV_HW_SPEC_BM( 2822, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
821 PCI_DEV_HW_SPEC_BM( 2824, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
822 PCI_DEV_HW_SPEC_BM( 2825, 8086, 0x00, ATA_SA300, "Intel ICH8" , I6CH2 | UNIATA_SATA ),
823 PCI_DEV_HW_SPEC_BM( 2828, 8086, 0x00, ATA_SA300, "Intel ICH8M" , I6CH | UNIATA_SATA ),
824 PCI_DEV_HW_SPEC_BM( 2829, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA | UNIATA_AHCI ),
825 PCI_DEV_HW_SPEC_BM( 282a, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA | UNIATA_AHCI ),
826 PCI_DEV_HW_SPEC_BM( 2850, 8086, 0x00, ATA_UDMA5, "Intel ICH8M" , 0 ),
827
828 PCI_DEV_HW_SPEC_BM( 2920, 8086, 0x00, ATA_SA300, "Intel ICH9" , I6CH | UNIATA_SATA ),
829 PCI_DEV_HW_SPEC_BM( 2926, 8086, 0x00, ATA_SA300, "Intel ICH9" , I6CH2 | UNIATA_SATA ),
830 PCI_DEV_HW_SPEC_BM( 2921, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),/* ??? */
831 PCI_DEV_HW_SPEC_BM( 2922, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
832 PCI_DEV_HW_SPEC_BM( 2923, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
833 PCI_DEV_HW_SPEC_BM( 2925, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
834
835 PCI_DEV_HW_SPEC_BM( 2928, 8086, 0x00, ATA_SA300, "Intel ICH9M" , I6CH2 | UNIATA_SATA ),
836 PCI_DEV_HW_SPEC_BM( 2929, 8086, 0x00, ATA_SA300, "Intel ICH9M" , UNIATA_SATA | UNIATA_AHCI ),
837 PCI_DEV_HW_SPEC_BM( 292a, 8086, 0x00, ATA_SA300, "Intel ICH9M" , UNIATA_SATA | UNIATA_AHCI ),
838 PCI_DEV_HW_SPEC_BM( 292d, 8086, 0x00, ATA_SA300, "Intel ICH9M" , I6CH2 | UNIATA_SATA ),
839
840 PCI_DEV_HW_SPEC_BM( 3a20, 8086, 0x00, ATA_SA300, "Intel ICH10" , I6CH | UNIATA_SATA ),
841 PCI_DEV_HW_SPEC_BM( 3a26, 8086, 0x00, ATA_SA300, "Intel ICH10" , I6CH2 | UNIATA_SATA ),
842 PCI_DEV_HW_SPEC_BM( 3a22, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
843 PCI_DEV_HW_SPEC_BM( 3a25, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
844
845 PCI_DEV_HW_SPEC_BM( 3a00, 8086, 0x00, ATA_SA300, "Intel ICH10" , I6CH | UNIATA_SATA ),
846 PCI_DEV_HW_SPEC_BM( 3a06, 8086, 0x00, ATA_SA300, "Intel ICH10" , I6CH2 | UNIATA_SATA ),
847 PCI_DEV_HW_SPEC_BM( 3a02, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
848 PCI_DEV_HW_SPEC_BM( 3a05, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
849 /*
850 PCI_DEV_HW_SPEC_BM( ????, 8086, 0x00, ATA_SA300, "Intel ICH10" , I6CH | UNIATA_SATA ),
851 PCI_DEV_HW_SPEC_BM( ????, 8086, 0x00, ATA_SA300, "Intel ICH10" , I6CH2 | UNIATA_SATA ),
852 PCI_DEV_HW_SPEC_BM( ????, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
853 PCI_DEV_HW_SPEC_BM( ????, 8086, 0x00, ATA_SA300, "Intel ICH10" , UNIATA_SATA | UNIATA_AHCI ),
854 */
855 PCI_DEV_HW_SPEC_BM( 3b20, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , I6CH | UNIATA_SATA ),
856 PCI_DEV_HW_SPEC_BM( 3b21, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , I6CH2 | UNIATA_SATA ),
857 PCI_DEV_HW_SPEC_BM( 3b22, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , UNIATA_SATA | UNIATA_AHCI ),
858 PCI_DEV_HW_SPEC_BM( 3b23, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , UNIATA_SATA | UNIATA_AHCI ),
859 PCI_DEV_HW_SPEC_BM( 3b25, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , UNIATA_SATA | UNIATA_AHCI ),
860 PCI_DEV_HW_SPEC_BM( 3b26, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , I6CH2 | UNIATA_SATA ),
861 PCI_DEV_HW_SPEC_BM( 3b28, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , I6CH | UNIATA_SATA ),
862 PCI_DEV_HW_SPEC_BM( 3b29, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , UNIATA_SATA | UNIATA_AHCI ),
863 PCI_DEV_HW_SPEC_BM( 3b2c, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , UNIATA_SATA | UNIATA_AHCI ),
864 PCI_DEV_HW_SPEC_BM( 3b2d, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , I6CH2 | UNIATA_SATA ),
865 PCI_DEV_HW_SPEC_BM( 3b2e, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , I6CH | UNIATA_SATA ),
866 PCI_DEV_HW_SPEC_BM( 3b2f, 8086, 0x00, ATA_SA300, "Intel 5 Series/3400" , UNIATA_SATA | UNIATA_AHCI ),
867
868 PCI_DEV_HW_SPEC_BM( 1c00, 8086, 0x00, ATA_SA300, "Intel Cougar Point" , I6CH | UNIATA_SATA ),
869 PCI_DEV_HW_SPEC_BM( 1c01, 8086, 0x00, ATA_SA300, "Intel Cougar Point" , I6CH | UNIATA_SATA ),
870 PCI_DEV_HW_SPEC_BM( 1c02, 8086, 0x00, ATA_SA300, "Intel Cougar Point" , UNIATA_SATA | UNIATA_AHCI ),
871 PCI_DEV_HW_SPEC_BM( 1c03, 8086, 0x00, ATA_SA300, "Intel Cougar Point" , UNIATA_SATA | UNIATA_AHCI ),
872 PCI_DEV_HW_SPEC_BM( 1c04, 8086, 0x00, ATA_SA300, "Intel Cougar Point" , UNIATA_SATA | UNIATA_AHCI ),
873 PCI_DEV_HW_SPEC_BM( 1c05, 8086, 0x00, ATA_SA300, "Intel Cougar Point" , UNIATA_SATA | UNIATA_AHCI ),
874 PCI_DEV_HW_SPEC_BM( 1c08, 8086, 0x00, ATA_SA300, "Intel Cougar Point" , I6CH2 | UNIATA_SATA ),
875 PCI_DEV_HW_SPEC_BM( 1c09, 8086, 0x00, ATA_SA300, "Intel Cougar Point" , I6CH2 | UNIATA_SATA ),
876
877 PCI_DEV_HW_SPEC_BM( 1d00, 8086, 0x00, ATA_SA300, "Intel Patsburg" , I6CH | UNIATA_SATA ),
878 PCI_DEV_HW_SPEC_BM( 1d02, 8086, 0x00, ATA_SA300, "Intel Patsburg" , UNIATA_SATA | UNIATA_AHCI ),
879 PCI_DEV_HW_SPEC_BM( 1d04, 8086, 0x00, ATA_SA300, "Intel Patsburg" , UNIATA_SATA | UNIATA_AHCI ),
880 PCI_DEV_HW_SPEC_BM( 1d06, 8086, 0x00, ATA_SA300, "Intel Patsburg" , UNIATA_SATA | UNIATA_AHCI ),
881 PCI_DEV_HW_SPEC_BM( 2826, 8086, 0x00, ATA_SA300, "Intel Patsburg" , UNIATA_SATA | UNIATA_AHCI ),
882 PCI_DEV_HW_SPEC_BM( 1d08, 8086, 0x00, ATA_SA300, "Intel Patsburg" , I6CH2 | UNIATA_SATA ),
883
884 PCI_DEV_HW_SPEC_BM( 1e00, 8086, 0x00, ATA_SA300, "Intel Panther Point" , I6CH | UNIATA_SATA ),
885 PCI_DEV_HW_SPEC_BM( 1e01, 8086, 0x00, ATA_SA300, "Intel Panther Point" , I6CH | UNIATA_SATA ),
886 PCI_DEV_HW_SPEC_BM( 1e02, 8086, 0x00, ATA_SA300, "Intel Panther Point" , UNIATA_SATA | UNIATA_AHCI ),
887 PCI_DEV_HW_SPEC_BM( 1e03, 8086, 0x00, ATA_SA300, "Intel Panther Point" , UNIATA_SATA | UNIATA_AHCI ),
888 PCI_DEV_HW_SPEC_BM( 1e04, 8086, 0x00, ATA_SA300, "Intel Panther Point" , UNIATA_SATA | UNIATA_AHCI ),
889 PCI_DEV_HW_SPEC_BM( 1e05, 8086, 0x00, ATA_SA300, "Intel Panther Point" , UNIATA_SATA | UNIATA_AHCI ),
890 PCI_DEV_HW_SPEC_BM( 1e06, 8086, 0x00, ATA_SA300, "Intel Panther Point" , UNIATA_SATA | UNIATA_AHCI ),
891 PCI_DEV_HW_SPEC_BM( 1e07, 8086, 0x00, ATA_SA300, "Intel Panther Point" , UNIATA_SATA | UNIATA_AHCI ),
892 PCI_DEV_HW_SPEC_BM( 1e08, 8086, 0x00, ATA_SA300, "Intel Panther Point" , I6CH2 | UNIATA_SATA ),
893 PCI_DEV_HW_SPEC_BM( 1e09, 8086, 0x00, ATA_SA300, "Intel Panther Point" , I6CH2 | UNIATA_SATA ),
894 PCI_DEV_HW_SPEC_BM( 1e0e, 8086, 0x00, ATA_SA300, "Intel Panther Point" , UNIATA_SATA | UNIATA_AHCI ),
895 PCI_DEV_HW_SPEC_BM( 1e0f, 8086, 0x00, ATA_SA300, "Intel Panther Point" , UNIATA_SATA | UNIATA_AHCI ),
896
897 PCI_DEV_HW_SPEC_BM( 8c00, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , I6CH | UNIATA_SATA ),
898 PCI_DEV_HW_SPEC_BM( 8c01, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , I6CH | UNIATA_SATA ),
899 PCI_DEV_HW_SPEC_BM( 8c02, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , UNIATA_SATA | UNIATA_AHCI ),
900 PCI_DEV_HW_SPEC_BM( 8c03, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , UNIATA_SATA | UNIATA_AHCI ),
901 PCI_DEV_HW_SPEC_BM( 8c04, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , UNIATA_SATA | UNIATA_AHCI ),
902 PCI_DEV_HW_SPEC_BM( 8c05, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , UNIATA_SATA | UNIATA_AHCI ),
903 PCI_DEV_HW_SPEC_BM( 8c06, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , UNIATA_SATA | UNIATA_AHCI ),
904 PCI_DEV_HW_SPEC_BM( 8c07, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , UNIATA_SATA | UNIATA_AHCI ),
905 PCI_DEV_HW_SPEC_BM( 8c08, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , I6CH2 | UNIATA_SATA ),
906 PCI_DEV_HW_SPEC_BM( 8c09, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , I6CH2 | UNIATA_SATA ),
907 PCI_DEV_HW_SPEC_BM( 8c0e, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , UNIATA_SATA | UNIATA_AHCI ),
908 PCI_DEV_HW_SPEC_BM( 8c0f, 8086, 0x00, ATA_SA300, "Intel Lynx Point" , UNIATA_SATA | UNIATA_AHCI ),
909
910 // PCI_DEV_HW_SPEC_BM( 3200, 8086, 0x00, ATA_SA150, "Intel 31244" , UNIATA_SATA ),
911 PCI_DEV_HW_SPEC_BM( 811a, 8086, 0x00, ATA_UDMA5, "Intel SCH" , 0 ),
912 PCI_DEV_HW_SPEC_BM( 2323, 8086, 0x00, ATA_SA300, "Intel DH98xxCC" , UNIATA_SATA | UNIATA_AHCI ),
913
914 PCI_DEV_HW_SPEC_BM( 23a3, 8086, 0x00, ATA_SA300, "COLETOCRK" , I6CH2 | UNIATA_SATA ),
915 PCI_DEV_HW_SPEC_BM( 23a1, 8086, 0x00, ATA_SA300, "COLETOCRK" , I6CH2 | UNIATA_SATA ),
916 PCI_DEV_HW_SPEC_BM( 23a6, 8086, 0x00, ATA_SA300, "COLETOCRK" , UNIATA_SATA | UNIATA_AHCI ),
917
918 PCI_DEV_HW_SPEC_BM( 2360, 197b, 0x00, ATA_SA300, "JMB360" , UNIATA_SATA | UNIATA_AHCI ),
919 PCI_DEV_HW_SPEC_BM( 2361, 197b, 0x00, ATA_UDMA6, "JMB361" , 0 ),
920 PCI_DEV_HW_SPEC_BM( 2362, 197b, 0x00, ATA_SA300, "JMB362" , UNIATA_SATA | UNIATA_AHCI ),
921 PCI_DEV_HW_SPEC_BM( 2363, 197b, 0x00, ATA_UDMA6, "JMB363" , 0 ),
922 PCI_DEV_HW_SPEC_BM( 2365, 197b, 0x00, ATA_UDMA6, "JMB365" , 0 ),
923 PCI_DEV_HW_SPEC_BM( 2366, 197b, 0x00, ATA_UDMA6, "JMB366" , 0 ),
924 PCI_DEV_HW_SPEC_BM( 2368, 197b, 0x00, ATA_UDMA6, "JMB368" , 0 ),
925 /*
926 PCI_DEV_HW_SPEC_BM( 5040, 11ab, 0x00, ATA_SA150, "Marvell 88SX5040" , UNIATA_SATA ),
927 PCI_DEV_HW_SPEC_BM( 5041, 11ab, 0x00, ATA_SA150, "Marvell 88SX5041" , UNIATA_SATA ),
928 PCI_DEV_HW_SPEC_BM( 5080, 11ab, 0x00, ATA_SA150, "Marvell 88SX5080" , UNIATA_SATA ),
929 PCI_DEV_HW_SPEC_BM( 5081, 11ab, 0x00, ATA_SA150, "Marvell 88SX5081" , UNIATA_SATA ),
930 PCI_DEV_HW_SPEC_BM( 6041, 11ab, 0x00, ATA_SA300, "Marvell 88SX6041" , UNIATA_SATA ),
931 PCI_DEV_HW_SPEC_BM( 6081, 11ab, 0x00, ATA_SA300, "Marvell 88SX6081" , UNIATA_SATA ),*/
932 PCI_DEV_HW_SPEC_BM( 6101, 11ab, 0x00, ATA_UDMA6, "Marvell 88SX6101" , 0 ),
933 PCI_DEV_HW_SPEC_BM( 6102, 11ab, 0x00, ATA_UDMA6, "Marvell 88SX6102" , UNIATA_SATA | UNIATA_AHCI ),
934 PCI_DEV_HW_SPEC_BM( 6111, 11ab, 0x00, ATA_UDMA6, "Marvell 88SX6111" , UNIATA_SATA | UNIATA_AHCI ),
935 PCI_DEV_HW_SPEC_BM( 6121, 11ab, 0x00, ATA_UDMA6, "Marvell 88SX6121" , UNIATA_SATA | UNIATA_AHCI ),
936 PCI_DEV_HW_SPEC_BM( 6141, 11ab, 0x00, ATA_UDMA6, "Marvell 88SX6141" , UNIATA_SATA | UNIATA_AHCI ),
937 PCI_DEV_HW_SPEC_BM( 6145, 11ab, 0x00, ATA_UDMA6, "Marvell 88SX6145" , UNIATA_SATA | UNIATA_AHCI ),
938 PCI_DEV_HW_SPEC_BM( 9123, 1b4b, 0x00, ATA_UDMA6, "Marvell 88SX9123" , UNIATA_SATA | UNIATA_AHCI ),
939 /* PCI_DEV_HW_SPEC_BM( 91a4, 1b4b, 0x00, ATA_UDMA6, "Marvell 88SE912x" , 0 ),*/
940
941 PCI_DEV_HW_SPEC_BM( 01bc, 10de, 0x00, ATA_UDMA5, "nVidia nForce" , 0 ),
942 PCI_DEV_HW_SPEC_BM( 0065, 10de, 0x00, ATA_UDMA6, "nVidia nForce2" , 0 ),
943 PCI_DEV_HW_SPEC_BM( 0085, 10de, 0x00, ATA_UDMA6, "nVidia nForce2 Pro",0 ),
944 PCI_DEV_HW_SPEC_BM( 008e, 10de, 0x00, ATA_SA150, "nVidia nForce2 Pro S1",UNIATA_SATA ),
945 PCI_DEV_HW_SPEC_BM( 00d5, 10de, 0x00, ATA_UDMA6, "nVidia nForce3" , 0 ),
946 PCI_DEV_HW_SPEC_BM( 00e5, 10de, 0x00, ATA_UDMA6, "nVidia nForce3 Pro",0 ),
947 PCI_DEV_HW_SPEC_BM( 00e3, 10de, 0x00, ATA_SA150, "nVidia nForce3 Pro S1",UNIATA_SATA ),
948 PCI_DEV_HW_SPEC_BM( 00ee, 10de, 0x00, ATA_SA150, "nVidia nForce3 Pro S2",UNIATA_SATA ),
949 PCI_DEV_HW_SPEC_BM( 0035, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP", 0 ),
950 PCI_DEV_HW_SPEC_BM( 0036, 10de, 0x00, ATA_SA150, "nVidia nForce MCP S1",NV4OFF | UNIATA_SATA ),
951 PCI_DEV_HW_SPEC_BM( 003e, 10de, 0x00, ATA_SA150, "nVidia nForce MCP S2",NV4OFF | UNIATA_SATA ),
952 PCI_DEV_HW_SPEC_BM( 0053, 10de, 0x00, ATA_UDMA6, "nVidia nForce CK804", 0 ),
953 PCI_DEV_HW_SPEC_BM( 0054, 10de, 0x00, ATA_SA300, "nVidia nForce CK804 S1",NV4OFF | UNIATA_SATA ),
954 PCI_DEV_HW_SPEC_BM( 0055, 10de, 0x00, ATA_SA300, "nVidia nForce CK804 S2",NV4OFF | UNIATA_SATA ),
955 PCI_DEV_HW_SPEC_BM( 0265, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP51", 0 ),
956 PCI_DEV_HW_SPEC_BM( 0266, 10de, 0x00, ATA_SA300, "nVidia nForce MCP51 S1",NV4OFF | NVQ | UNIATA_SATA ),
957 PCI_DEV_HW_SPEC_BM( 0267, 10de, 0x00, ATA_SA300, "nVidia nForce MCP51 S2",NV4OFF | NVQ | UNIATA_SATA ),
958 PCI_DEV_HW_SPEC_BM( 036e, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP55", 0 ),
959 PCI_DEV_HW_SPEC_BM( 037e, 10de, 0x00, ATA_SA300, "nVidia nForce MCP55 S1",NV4OFF | NVQ | UNIATA_SATA ),
960 PCI_DEV_HW_SPEC_BM( 037f, 10de, 0x00, ATA_SA300, "nVidia nForce MCP55 S2",NV4OFF | NVQ | UNIATA_SATA ),
961 PCI_DEV_HW_SPEC_BM( 03ec, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP61", 0 ),
962 PCI_DEV_HW_SPEC_BM( 03e7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S1",NV4OFF | NVQ | UNIATA_SATA ),
963 PCI_DEV_HW_SPEC_BM( 03f6, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S2",NV4OFF | NVQ | UNIATA_SATA ),
964 PCI_DEV_HW_SPEC_BM( 03f7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S3",NV4OFF | NVQ | UNIATA_SATA ),
965 PCI_DEV_HW_SPEC_BM( 0448, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP65", 0 ),
966 PCI_DEV_HW_SPEC_BM( 044c, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A0", UNIATA_SATA | UNIATA_AHCI ),
967 PCI_DEV_HW_SPEC_BM( 044d, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A1", UNIATA_SATA | UNIATA_AHCI ),
968 PCI_DEV_HW_SPEC_BM( 044e, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A2", UNIATA_SATA | UNIATA_AHCI ),
969 PCI_DEV_HW_SPEC_BM( 044f, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A3", UNIATA_SATA | UNIATA_AHCI ),
970 PCI_DEV_HW_SPEC_BM( 045c, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A4", UNIATA_SATA | UNIATA_AHCI ),
971 PCI_DEV_HW_SPEC_BM( 045d, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A5", UNIATA_SATA | UNIATA_AHCI ),
972 PCI_DEV_HW_SPEC_BM( 045e, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A6", UNIATA_SATA | UNIATA_AHCI ),
973 PCI_DEV_HW_SPEC_BM( 045f, 10de, 0x00, ATA_SA300, "nVidia nForce MCP65 A7", UNIATA_SATA | UNIATA_AHCI ),
974 PCI_DEV_HW_SPEC_BM( 0560, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP67", 0 ),
975 PCI_DEV_HW_SPEC_BM( 0550, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A0", UNIATA_SATA | UNIATA_AHCI ),
976 PCI_DEV_HW_SPEC_BM( 0551, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A1", UNIATA_SATA | UNIATA_AHCI ),
977 PCI_DEV_HW_SPEC_BM( 0552, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A2", UNIATA_SATA | UNIATA_AHCI ),
978 PCI_DEV_HW_SPEC_BM( 0553, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A3", UNIATA_SATA | UNIATA_AHCI ),
979 PCI_DEV_HW_SPEC_BM( 0554, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A4", UNIATA_SATA | UNIATA_AHCI ),
980 PCI_DEV_HW_SPEC_BM( 0555, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A5", UNIATA_SATA | UNIATA_AHCI ),
981 PCI_DEV_HW_SPEC_BM( 0556, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A6", UNIATA_SATA | UNIATA_AHCI ),
982 PCI_DEV_HW_SPEC_BM( 0557, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A7", UNIATA_SATA | UNIATA_AHCI ),
983 PCI_DEV_HW_SPEC_BM( 0558, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A8", UNIATA_SATA | UNIATA_AHCI ),
984 PCI_DEV_HW_SPEC_BM( 0559, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 A9", UNIATA_SATA | UNIATA_AHCI ),
985 PCI_DEV_HW_SPEC_BM( 055A, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 AA", UNIATA_SATA | UNIATA_AHCI ),
986 PCI_DEV_HW_SPEC_BM( 055B, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 AB", UNIATA_SATA | UNIATA_AHCI ),
987 PCI_DEV_HW_SPEC_BM( 0584, 10de, 0x00, ATA_SA300, "nVidia nForce MCP67 AC", UNIATA_SATA | UNIATA_AHCI ),
988
989 PCI_DEV_HW_SPEC_BM( 056c, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP73", 0 ),
990 PCI_DEV_HW_SPEC_BM( 07f0, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A0", UNIATA_SATA | UNIATA_AHCI ),
991 PCI_DEV_HW_SPEC_BM( 07f1, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A1", UNIATA_SATA | UNIATA_AHCI ),
992 PCI_DEV_HW_SPEC_BM( 07f2, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A2", UNIATA_SATA | UNIATA_AHCI ),
993 PCI_DEV_HW_SPEC_BM( 07f3, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A3", UNIATA_SATA | UNIATA_AHCI ),
994 PCI_DEV_HW_SPEC_BM( 07f4, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A4", UNIATA_SATA | UNIATA_AHCI ),
995 PCI_DEV_HW_SPEC_BM( 07f5, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A5", UNIATA_SATA | UNIATA_AHCI ),
996 PCI_DEV_HW_SPEC_BM( 07f6, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A6", UNIATA_SATA | UNIATA_AHCI ),
997 PCI_DEV_HW_SPEC_BM( 07f7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A7", UNIATA_SATA | UNIATA_AHCI ),
998 PCI_DEV_HW_SPEC_BM( 07f8, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A8", UNIATA_SATA | UNIATA_AHCI ),
999 PCI_DEV_HW_SPEC_BM( 07f9, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 A9", UNIATA_SATA | UNIATA_AHCI ),
1000 PCI_DEV_HW_SPEC_BM( 07fa, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 AA", UNIATA_SATA | UNIATA_AHCI ),
1001
1002 PCI_DEV_HW_SPEC_BM( 07fb, 10de, 0x00, ATA_SA300, "nVidia nForce MCP73 AB", UNIATA_SATA | UNIATA_AHCI ),
1003 PCI_DEV_HW_SPEC_BM( 0759, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP77", 0 ),
1004 PCI_DEV_HW_SPEC_BM( 0ad0, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A0", UNIATA_SATA | UNIATA_AHCI ),
1005 PCI_DEV_HW_SPEC_BM( 0ad1, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A1", UNIATA_SATA | UNIATA_AHCI ),
1006 PCI_DEV_HW_SPEC_BM( 0ad2, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A2", UNIATA_SATA | UNIATA_AHCI ),
1007 PCI_DEV_HW_SPEC_BM( 0ad3, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A3", UNIATA_SATA | UNIATA_AHCI ),
1008 PCI_DEV_HW_SPEC_BM( 0ad4, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A4", UNIATA_SATA | UNIATA_AHCI ),
1009 PCI_DEV_HW_SPEC_BM( 0ad5, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A5", UNIATA_SATA | UNIATA_AHCI ),
1010 PCI_DEV_HW_SPEC_BM( 0ad6, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A6", UNIATA_SATA | UNIATA_AHCI ),
1011 PCI_DEV_HW_SPEC_BM( 0ad7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A7", UNIATA_SATA | UNIATA_AHCI ),
1012 PCI_DEV_HW_SPEC_BM( 0ad8, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A8", UNIATA_SATA | UNIATA_AHCI ),
1013 PCI_DEV_HW_SPEC_BM( 0ad9, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 A9", UNIATA_SATA | UNIATA_AHCI ),
1014 PCI_DEV_HW_SPEC_BM( 0ada, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 AA", UNIATA_SATA | UNIATA_AHCI ),
1015 PCI_DEV_HW_SPEC_BM( 0adb, 10de, 0x00, ATA_SA300, "nVidia nForce MCP77 AB", UNIATA_SATA | UNIATA_AHCI ),
1016
1017 PCI_DEV_HW_SPEC_BM( 0ab4, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A0", UNIATA_SATA | UNIATA_AHCI ),
1018 PCI_DEV_HW_SPEC_BM( 0ab5, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A1", UNIATA_SATA | UNIATA_AHCI ),
1019 PCI_DEV_HW_SPEC_BM( 0ab6, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A2", UNIATA_SATA | UNIATA_AHCI ),
1020 PCI_DEV_HW_SPEC_BM( 0ab7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A3", UNIATA_SATA | UNIATA_AHCI ),
1021 PCI_DEV_HW_SPEC_BM( 0ab8, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A4", UNIATA_SATA | UNIATA_AHCI ),
1022 PCI_DEV_HW_SPEC_BM( 0ab9, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A5", UNIATA_SATA | UNIATA_AHCI ),
1023 PCI_DEV_HW_SPEC_BM( 0aba, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A6", UNIATA_SATA | UNIATA_AHCI ),
1024 PCI_DEV_HW_SPEC_BM( 0abb, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A7", UNIATA_SATA | UNIATA_AHCI ),
1025 PCI_DEV_HW_SPEC_BM( 0abc, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A8", UNIATA_SATA | UNIATA_AHCI ),
1026 PCI_DEV_HW_SPEC_BM( 0abd, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 A9", UNIATA_SATA | UNIATA_AHCI ),
1027 PCI_DEV_HW_SPEC_BM( 0abe, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 AA", UNIATA_SATA | UNIATA_AHCI ),
1028 PCI_DEV_HW_SPEC_BM( 0abf, 10de, 0x00, ATA_SA300, "nVidia nForce MCP79 AB", UNIATA_SATA | UNIATA_AHCI ),
1029
1030 PCI_DEV_HW_SPEC_BM( 0d84, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A0", UNIATA_SATA | UNIATA_AHCI ),
1031 PCI_DEV_HW_SPEC_BM( 0d85, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A1", UNIATA_SATA | UNIATA_AHCI ),
1032 PCI_DEV_HW_SPEC_BM( 0d86, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A2", UNIATA_SATA | UNIATA_AHCI ),
1033 PCI_DEV_HW_SPEC_BM( 0d87, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A3", UNIATA_SATA | UNIATA_AHCI ),
1034 PCI_DEV_HW_SPEC_BM( 0d88, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A4", UNIATA_SATA | UNIATA_AHCI ),
1035 PCI_DEV_HW_SPEC_BM( 0d89, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A5", UNIATA_SATA | UNIATA_AHCI ),
1036 PCI_DEV_HW_SPEC_BM( 0d8a, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A6", UNIATA_SATA | UNIATA_AHCI ),
1037 PCI_DEV_HW_SPEC_BM( 0d8b, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A7", UNIATA_SATA | UNIATA_AHCI ),
1038 PCI_DEV_HW_SPEC_BM( 0d8c, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A8", UNIATA_SATA | UNIATA_AHCI ),
1039 PCI_DEV_HW_SPEC_BM( 0d8d, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 A9", UNIATA_SATA | UNIATA_AHCI ),
1040 PCI_DEV_HW_SPEC_BM( 0d8e, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 AA", UNIATA_SATA | UNIATA_AHCI ),
1041 PCI_DEV_HW_SPEC_BM( 0d8f, 10de, 0x00, ATA_SA300, "nVidia nForce MCP89 AB", UNIATA_SATA | UNIATA_AHCI ),
1042
1043 PCI_DEV_HW_SPEC_BM( 0502, 100b, 0x00, ATA_UDMA2, "National Geode SC1100", 0 ),
1044
1045 PCI_DEV_HW_SPEC_BM( 4d33, 105a, 0x00, ATA_UDMA2, "Promise PDC20246" , PROLD | 0x00 ),
1046 PCI_DEV_HW_SPEC_BM( 4d38, 105a, 0x00, ATA_UDMA4, "Promise PDC20262" , PRNEW | 0x00 ),
1047 PCI_DEV_HW_SPEC_BM( 0d38, 105a, 0x00, ATA_UDMA4, "Promise PDC20263" , PRNEW | 0x00 | UNIATA_RAID_CONTROLLER),
1048 PCI_DEV_HW_SPEC_BM( 0d30, 105a, 0x00, ATA_UDMA5, "Promise PDC20265" , PRNEW | 0x00 | UNIATA_RAID_CONTROLLER),
1049 PCI_DEV_HW_SPEC_BM( 4d30, 105a, 0x00, ATA_UDMA5, "Promise PDC20267" , PRNEW | 0x00 | UNIATA_RAID_CONTROLLER),
1050 PCI_DEV_HW_SPEC_BM( 4d68, 105a, 0x00, ATA_UDMA5, "Promise PDC20268" , PRTX | PRTX4 | UNIATA_RAID_CONTROLLER),
1051 PCI_DEV_HW_SPEC_BM( 4d69, 105a, 0x00, ATA_UDMA6, "Promise PDC20269" , PRTX | 0x00 | UNIATA_RAID_CONTROLLER),
1052 PCI_DEV_HW_SPEC_BM( 6268, 105a, 0x00, ATA_UDMA5, "Promise PDC20270" , PRTX | PRTX4 | UNIATA_RAID_CONTROLLER),
1053 PCI_DEV_HW_SPEC_BM( 6269, 105a, 0x00, ATA_UDMA6, "Promise PDC20271" , PRTX | 0x00 | UNIATA_RAID_CONTROLLER),
1054 PCI_DEV_HW_SPEC_BM( 1275, 105a, 0x00, ATA_UDMA6, "Promise PDC20275" , PRTX | 0x00 | UNIATA_RAID_CONTROLLER),
1055 PCI_DEV_HW_SPEC_BM( 5275, 105a, 0x00, ATA_UDMA6, "Promise PDC20276" , PRTX | PRSX6K | UNIATA_RAID_CONTROLLER),
1056 PCI_DEV_HW_SPEC_BM( 7275, 105a, 0x00, ATA_UDMA6, "Promise PDC20277" , PRTX | 0x00 | UNIATA_RAID_CONTROLLER),
1057 PCI_DEV_HW_SPEC_BM( 3318, 105a, 0x00, ATA_SA150, "Promise PDC20318" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1058 PCI_DEV_HW_SPEC_BM( 3319, 105a, 0x00, ATA_SA150, "Promise PDC20319" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1059 PCI_DEV_HW_SPEC_BM( 3371, 105a, 0x00, ATA_SA150, "Promise PDC20371" , PRMIO | PRCMBO | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1060 PCI_DEV_HW_SPEC_BM( 3375, 105a, 0x00, ATA_SA150, "Promise PDC20375" , PRMIO | PRCMBO | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1061 PCI_DEV_HW_SPEC_BM( 3376, 105a, 0x00, ATA_SA150, "Promise PDC20376" , PRMIO | PRCMBO | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1062 PCI_DEV_HW_SPEC_BM( 3377, 105a, 0x00, ATA_SA150, "Promise PDC20377" , PRMIO | PRCMBO | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1063 PCI_DEV_HW_SPEC_BM( 3373, 105a, 0x00, ATA_SA150, "Promise PDC20378" , PRMIO | PRCMBO | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1064 PCI_DEV_HW_SPEC_BM( 3372, 105a, 0x00, ATA_SA150, "Promise PDC20379" , PRMIO | PRCMBO | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1065 PCI_DEV_HW_SPEC_BM( 3571, 105a, 0x00, ATA_SA150, "Promise PDC20571" , PRMIO | PRCMBO2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1066 PCI_DEV_HW_SPEC_BM( 3d75, 105a, 0x00, ATA_SA150, "Promise PDC20575" , PRMIO | PRCMBO2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1067 PCI_DEV_HW_SPEC_BM( 3574, 105a, 0x00, ATA_SA150, "Promise PDC20579" , PRMIO | PRCMBO2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1068 PCI_DEV_HW_SPEC_BM( 3570, 105a, 0x00, ATA_SA300, "Promise PDC20771" , PRMIO | PRCMBO2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1069 PCI_DEV_HW_SPEC_BM( 3d73, 105a, 0x00, ATA_SA300, "Promise PDC40775" , PRMIO | PRCMBO2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1070 PCI_DEV_HW_SPEC_BM( 6617, 105a, 0x00, ATA_UDMA6, "Promise PDC20617" , PRMIO | 0x00 | UNIATA_RAID_CONTROLLER),
1071 PCI_DEV_HW_SPEC_BM( 6626, 105a, 0x00, ATA_UDMA6, "Promise PDC20618" , PRMIO | 0x00 | UNIATA_RAID_CONTROLLER),
1072 PCI_DEV_HW_SPEC_BM( 6629, 105a, 0x00, ATA_UDMA6, "Promise PDC20619" , PRMIO | 0x00 | UNIATA_RAID_CONTROLLER),
1073 PCI_DEV_HW_SPEC_BM( 6620, 105a, 0x00, ATA_UDMA6, "Promise PDC20620" , PRMIO | 0x00 | UNIATA_RAID_CONTROLLER),
1074 /* PCI_DEV_HW_SPEC_BM( 6621, 105a, 0x00, ATA_UDMA6, "Promise PDC20621" , PRMIO | PRSX4X | UNIATA_RAID_CONTROLLER),
1075 PCI_DEV_HW_SPEC_BM( 6622, 105a, 0x00, ATA_UDMA6, "Promise PDC20622" , PRMIO | PRSX4X | UNIATA_RAID_CONTROLLER),*/
1076 PCI_DEV_HW_SPEC_BM( 3571, 105a, 0x00, ATA_SA150, "Promise PDC40518" , PRMIO | PRSATA2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1077 PCI_DEV_HW_SPEC_BM( 3d75, 105a, 0x00, ATA_SA150, "Promise PDC40519" , PRMIO | PRSATA2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1078 PCI_DEV_HW_SPEC_BM( 3574, 105a, 0x00, ATA_SA150, "Promise PDC40718" , PRMIO | PRSATA2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1079 PCI_DEV_HW_SPEC_BM( 3570, 105a, 0x00, ATA_SA300, "Promise PDC40719" , PRMIO | PRSATA2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1080 PCI_DEV_HW_SPEC_BM( 3d73, 105a, 0x00, ATA_SA300, "Promise PDC40779" , PRMIO | PRSATA2 | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
1081
1082 PCI_DEV_HW_SPEC_BM( 0211, 1166, 0x00, ATA_UDMA2, "ServerWorks ROSB4", SWKS33 | UNIATA_NO_DPC ),
1083 PCI_DEV_HW_SPEC_BM( 0212, 1166, 0x92, ATA_UDMA5, "ServerWorks CSB5" , SWKS100 ),
1084 PCI_DEV_HW_SPEC_BM( 0212, 1166, 0x00, ATA_UDMA4, "ServerWorks CSB5" , SWKS66 ),
1085 PCI_DEV_HW_SPEC_BM( 0213, 1166, 0x00, ATA_UDMA5, "ServerWorks CSB6" , SWKS100 ),
1086 PCI_DEV_HW_SPEC_BM( 0217, 1166, 0x00, ATA_UDMA4, "ServerWorks CSB6" , SWKS66 ),
1087 PCI_DEV_HW_SPEC_BM( 0214, 1166, 0x00, ATA_UDMA5, "ServerWorks HT1000" , SWKS100 ),
1088 PCI_DEV_HW_SPEC_BM( 024b, 1166, 0x00, ATA_SA150, "ServerWorks HT1000" , SWKS100 ),
1089 PCI_DEV_HW_SPEC_BM( 024a, 1166, 0x00, ATA_SA150, "ServerWorks HT1000" , SWKSMIO ),
1090 PCI_DEV_HW_SPEC_BM( 0240, 1166, 0x00, ATA_SA150, "ServerWorks K2" , SWKSMIO ),
1091 PCI_DEV_HW_SPEC_BM( 0241, 1166, 0x00, ATA_SA150, "ServerWorks Frodo4" , SWKSMIO ),
1092 PCI_DEV_HW_SPEC_BM( 0242, 1166, 0x00, ATA_SA150, "ServerWorks Frodo8" , SWKSMIO ),
1093
1094 PCI_DEV_HW_SPEC_BM( 3114, 1095, 0x00, ATA_SA150, "SiI 3114" , SIIMIO | SII4CH | UNIATA_SATA ),
1095 PCI_DEV_HW_SPEC_BM( 3512, 1095, 0x02, ATA_SA150, "SiI 3512" , SIIMIO | UNIATA_SATA ),
1096 PCI_DEV_HW_SPEC_BM( 3112, 1095, 0x02, ATA_SA150, "SiI 3112" , SIIMIO | UNIATA_SATA ),
1097 PCI_DEV_HW_SPEC_BM( 0240, 1095, 0x02, ATA_SA150, "SiI 3112" , SIIMIO | UNIATA_SATA ),
1098 PCI_DEV_HW_SPEC_BM( 3512, 1095, 0x00, ATA_SA150, "SiI 3512" , SIIMIO | SIIBUG | UNIATA_SATA ),
1099 PCI_DEV_HW_SPEC_BM( 3112, 1095, 0x00, ATA_SA150, "SiI 3112" , SIIMIO | SIIBUG | UNIATA_SATA ),
1100 PCI_DEV_HW_SPEC_BM( 0240, 1095, 0x00, ATA_SA150, "SiI 3112" , SIIMIO | SIIBUG | UNIATA_SATA ),
1101 PCI_DEV_HW_SPEC_BM( 0680, 1095, 0x00, ATA_UDMA6, "SiI 0680" , SIIMIO | SIISETCLK ),
1102 PCI_DEV_HW_SPEC_BM( 0649, 1095, 0x00, ATA_UDMA5, "CMD 649" , SIICMD | SIIINTR | UNIATA_NO_DPC_ATAPI ),
1103 PCI_DEV_HW_SPEC_BM( 0648, 1095, 0x00, ATA_UDMA4, "CMD 648" , SIICMD | SIIINTR ),
1104 PCI_DEV_HW_SPEC_BM( 0646, 1095, 0x07, ATA_UDMA2, "CMD 646U2" , SIICMD | 0 ),
1105 PCI_DEV_HW_SPEC_BM( 0646, 1095, 0x00, ATA_WDMA2, "CMD 646" , SIICMD | 0 ),
1106 PCI_DEV_HW_SPEC_BM( 0640, 1095, 0x00, ATA_PIO4 , "CMD 640" , SIIOLD | SIIENINTR | UNIATA_SIMPLEX_ONLY),
1107
1108 /** PCI_DEV_HW_SPEC_BM( 0963, 1039, 0x00, ATA_UDMA6, "SiS 963" , SIS133NEW ),
1109 PCI_DEV_HW_SPEC_BM( 0962, 1039, 0x00, ATA_UDMA6, "SiS 962" , SIS133NEW ),
1110
1111 PCI_DEV_HW_SPEC_BM( 0755, 1039, 0x00, ATA_UDMA6, "SiS 755" , SIS_SOUTH ),
1112 PCI_DEV_HW_SPEC_BM( 0752, 1039, 0x00, ATA_UDMA6, "SiS 752" , SIS_SOUTH ),
1113 PCI_DEV_HW_SPEC_BM( 0751, 1039, 0x00, ATA_UDMA6, "SiS 751" , SIS_SOUTH ),
1114 PCI_DEV_HW_SPEC_BM( 0750, 1039, 0x00, ATA_UDMA6, "SiS 750" , SIS_SOUTH ),
1115 PCI_DEV_HW_SPEC_BM( 0748, 1039, 0x00, ATA_UDMA6, "SiS 748" , SIS_SOUTH ),
1116 PCI_DEV_HW_SPEC_BM( 0746, 1039, 0x00, ATA_UDMA6, "SiS 746" , SIS_SOUTH ),
1117 PCI_DEV_HW_SPEC_BM( 0745, 1039, 0x00, ATA_UDMA5, "SiS 745" , SIS100NEW ),
1118 PCI_DEV_HW_SPEC_BM( 0740, 1039, 0x00, ATA_UDMA5, "SiS 740" , SIS_SOUTH ),
1119 PCI_DEV_HW_SPEC_BM( 0735, 1039, 0x00, ATA_UDMA5, "SiS 735" , SIS100NEW ),
1120 PCI_DEV_HW_SPEC_BM( 0733, 1039, 0x00, ATA_UDMA5, "SiS 733" , SIS100NEW ),
1121 PCI_DEV_HW_SPEC_BM( 0730, 1039, 0x00, ATA_UDMA5, "SiS 730" , SIS100OLD ),
1122
1123 PCI_DEV_HW_SPEC_BM( 0658, 1039, 0x00, ATA_UDMA6, "SiS 658" , SIS_SOUTH ),
1124 PCI_DEV_HW_SPEC_BM( 0655, 1039, 0x00, ATA_UDMA6, "SiS 655" , SIS_SOUTH ),
1125 PCI_DEV_HW_SPEC_BM( 0652, 1039, 0x00, ATA_UDMA6, "SiS 652" , SIS_SOUTH ),
1126 PCI_DEV_HW_SPEC_BM( 0651, 1039, 0x00, ATA_UDMA6, "SiS 651" , SIS_SOUTH ),
1127 PCI_DEV_HW_SPEC_BM( 0650, 1039, 0x00, ATA_UDMA6, "SiS 650" , SIS_SOUTH ),
1128 PCI_DEV_HW_SPEC_BM( 0648, 1039, 0x00, ATA_UDMA6, "SiS 648" , SIS_SOUTH ),
1129 PCI_DEV_HW_SPEC_BM( 0646, 1039, 0x00, ATA_UDMA6, "SiS 645DX" , SIS_SOUTH ),
1130 PCI_DEV_HW_SPEC_BM( 0645, 1039, 0x00, ATA_UDMA6, "SiS 645" , SIS_SOUTH ),
1131 PCI_DEV_HW_SPEC_BM( 0640, 1039, 0x00, ATA_UDMA4, "SiS 640" , SIS_SOUTH ),
1132 PCI_DEV_HW_SPEC_BM( 0635, 1039, 0x00, ATA_UDMA5, "SiS 635" , SIS100NEW ),
1133 PCI_DEV_HW_SPEC_BM( 0633, 1039, 0x00, ATA_UDMA5, "SiS 633" , SIS100NEW ),
1134 PCI_DEV_HW_SPEC_BM( 0630, 1039, 0x00, ATA_UDMA5, "SiS 630S" , SIS100OLD ),
1135 PCI_DEV_HW_SPEC_BM( 0630, 1039, 0x00, ATA_UDMA4, "SiS 630" , SIS66, ),
1136 PCI_DEV_HW_SPEC_BM( 0620, 1039, 0x00, ATA_UDMA4, "SiS 620" , SIS66, ),
1137
1138 PCI_DEV_HW_SPEC_BM( 0550, 1039, 0x00, ATA_UDMA5, "SiS 550" , SIS66, ),
1139 PCI_DEV_HW_SPEC_BM( 0540, 1039, 0x00, ATA_UDMA4, "SiS 540" , SIS66, ),
1140 PCI_DEV_HW_SPEC_BM( 0530, 1039, 0x00, ATA_UDMA4, "SiS 530" , SIS66, ),
1141 */
1142 PCI_DEV_HW_SPEC_BM( 5513, 1039, 0xc2, ATA_UDMA2, "SiS ATA-xxx" , 0 ),
1143 PCI_DEV_HW_SPEC_BM( 5513, 1039, 0x00, ATA_WDMA2, "SiS ATA-xxx" , 0 ),
1144 PCI_DEV_HW_SPEC_BM( 5518, 1039, 0x00, ATA_UDMA6, "SiS 962/3" , SIS133NEW | SIS_BASE ),
1145 PCI_DEV_HW_SPEC_BM( 0601, 1039, 0x00, ATA_WDMA2, "SiS ATA-xxx" , 0 ),
1146
1147 PCI_DEV_HW_SPEC_BM( 1183, 1039, 0x00, ATA_SA150, "SiS 1183 SATA" , SISSATA),
1148 PCI_DEV_HW_SPEC_BM( 1182, 1039, 0x00, ATA_SA150, "SiS 1182" , SISSATA | UNIATA_SATA),
1149 PCI_DEV_HW_SPEC_BM( 0183, 1039, 0x00, ATA_SA150, "SiS 183 RAID" , SISSATA | UNIATA_SATA),
1150 PCI_DEV_HW_SPEC_BM( 0182, 1039, 0x00, ATA_SA150, "SiS SATA 182" , SISSATA | UNIATA_SATA),
1151 PCI_DEV_HW_SPEC_BM( 0181, 1039, 0x00, ATA_SA150, "SiS SATA 181" , SISSATA | UNIATA_SATA),
1152 PCI_DEV_HW_SPEC_BM( 0180, 1039, 0x00, ATA_SA150, "SiS SATA 180" , SISSATA | UNIATA_SATA),
1153
1154 /* PCI_DEV_HW_SPEC_BM( 0586, 1106, 0x41, ATA_UDMA2, "VIA 82C586B" , VIA33 | 0x00 ),
1155 PCI_DEV_HW_SPEC_BM( 0586, 1106, 0x40, ATA_UDMA2, "VIA 82C586B" , VIA33 | VIAPRQ ),
1156 PCI_DEV_HW_SPEC_BM( 0586, 1106, 0x02, ATA_UDMA2, "VIA 82C586B" , VIA33 | 0x00 ),
1157 PCI_DEV_HW_SPEC_BM( 0586, 1106, 0x00, ATA_WDMA2, "VIA 82C586" , VIA33 | 0x00 ),
1158 PCI_DEV_HW_SPEC_BM( 0596, 1106, 0x12, ATA_UDMA4, "VIA 82C596B" , VIA66 | VIACLK ),
1159 PCI_DEV_HW_SPEC_BM( 0596, 1106, 0x00, ATA_UDMA2, "VIA 82C596" , VIA33 | 0x00 ),
1160 PCI_DEV_HW_SPEC_BM( 0686, 1106, 0x40, ATA_UDMA5, "VIA 82C686B" , VIA100 | VIABUG ),
1161 PCI_DEV_HW_SPEC_BM( 0686, 1106, 0x10, ATA_UDMA4, "VIA 82C686A" , VIA66 | VIACLK ),
1162 PCI_DEV_HW_SPEC_BM( 0686, 1106, 0x00, ATA_UDMA2, "VIA 82C686" , VIA33 | 0x00 ),
1163 PCI_DEV_HW_SPEC_BM( 8231, 1106, 0x00, ATA_UDMA5, "VIA 8231" , VIA100 | VIABUG ),
1164 PCI_DEV_HW_SPEC_BM( 3074, 1106, 0x00, ATA_UDMA5, "VIA 8233" , VIA100 | 0x00 ),
1165 PCI_DEV_HW_SPEC_BM( 3109, 1106, 0x00, ATA_UDMA5, "VIA 8233C" , VIA100 | 0x00 ),
1166 PCI_DEV_HW_SPEC_BM( 3147, 1106, 0x00, ATA_UDMA6, "VIA 8233A" , VIA133 | VIAAST ),
1167 PCI_DEV_HW_SPEC_BM( 3177, 1106, 0x00, ATA_UDMA6, "VIA 8235" , VIA133 | VIAAST ),
1168 */
1169 PCI_DEV_HW_SPEC_BM( 0571, 1106, 0x00, ATA_UDMA2, "VIA ATA-xxx" , 0 ),
1170 PCI_DEV_HW_SPEC_BM( 0581, 1106, 0x00, ATA_UDMA6, "VIA UATA-xxx" , 0 ),
1171 /* has no SATA registers, all mapped to PATA-style regs */
1172 PCI_DEV_HW_SPEC_BM( 5324, 1106, 0x00, ATA_SA150, "VIA SATA-xxx" , 0 ),
1173 PCI_DEV_HW_SPEC_BM( 3164, 1106, 0x00, ATA_UDMA6, "VIA 6410" , 0 ),
1174 PCI_DEV_HW_SPEC_BM( 3149, 1106, 0x00, ATA_SA150, "VIA 6420" , 0 | UNIATA_SATA ),
1175 PCI_DEV_HW_SPEC_BM( 3249, 1106, 0x00, ATA_SA150, "VIA 6421" , VIABAR | UNIATA_SATA ),
1176 PCI_DEV_HW_SPEC_BM( 0591, 1106, 0x00, ATA_SA150, "VIA 8237A" , 0 | UNIATA_SATA ),
1177 PCI_DEV_HW_SPEC_BM( 5337, 1106, 0x00, ATA_SA150, "VIA 8237S" , 0 | UNIATA_SATA ),
1178 PCI_DEV_HW_SPEC_BM( 5372, 1106, 0x00, ATA_SA300, "VIA 8237" , 0 | UNIATA_SATA ),
1179 PCI_DEV_HW_SPEC_BM( 7372, 1106, 0x00, ATA_SA300, "VIA 8237" , 0 | UNIATA_SATA ),
1180 PCI_DEV_HW_SPEC_BM( 3349, 1106, 0x00, ATA_SA150, "VIA 8251" , 0 | UNIATA_SATA | UNIATA_AHCI ),
1181
1182 PCI_DEV_HW_SPEC_BM( c693, 1080, 0x00, ATA_WDMA2, "Cypress 82C693" ,0 ),
1183
1184 /*
1185 PCI_DEV_HW_SPEC_BM( 4d68, 105a, 0, 0, "Promise TX2 ATA-100 controller", UNIATA_RAID_CONTROLLER),
1186 PCI_DEV_HW_SPEC_BM( 6268, 105a, 0, 0, "Promise TX2 ATA-100 controller", UNIATA_RAID_CONTROLLER),
1187
1188 PCI_DEV_HW_SPEC_BM( 4d69, 105a, 0, 0, "Promise TX2 ATA-133 controller", UNIATA_RAID_CONTROLLER),
1189 PCI_DEV_HW_SPEC_BM( 5275, 105a, 0, 0, "Promise TX2 ATA-133 controller", UNIATA_RAID_CONTROLLER),
1190 PCI_DEV_HW_SPEC_BM( 6269, 105a, 0, 0, "Promise TX2 ATA-133 controller", UNIATA_RAID_CONTROLLER),
1191 PCI_DEV_HW_SPEC_BM( 7275, 105a, 0, 0, "Promise TX2 ATA-133 controller", UNIATA_RAID_CONTROLLER),
1192
1193 PCI_DEV_HW_SPEC_BM( 4d33, 105a, 0, 0, "Promise Ultra/FastTrak-33 controller", UNIATA_RAID_CONTROLLER),
1194
1195 PCI_DEV_HW_SPEC_BM( 0d38, 105a, 0, 0, "Promise FastTrak 66 controller", 0),
1196 PCI_DEV_HW_SPEC_BM( 4d38, 105a, 0, 0, "Promise Ultra/FastTrak-66 controller", UNIATA_RAID_CONTROLLER),
1197
1198 PCI_DEV_HW_SPEC_BM( 4d30, 105a, 0, 0, "Promise Ultra/FastTrak-100 controller", UNIATA_RAID_CONTROLLER),
1199 PCI_DEV_HW_SPEC_BM( 0d30, 105a, 0, 0, "Promise OEM ATA-100 controllers", UNIATA_RAID_CONTROLLER),
1200
1201 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0, 0, "HighPoint HPT366/368/370/372 controller", UNIATA_RAID_CONTROLLER),
1202 PCI_DEV_HW_SPEC_BM( 0005, 1103, 0, 0, "HighPoint HPT372 controller", UNIATA_RAID_CONTROLLER),
1203 PCI_DEV_HW_SPEC_BM( 0008, 1103, 0, 0, "HighPoint HPT374 controller", UNIATA_RAID_CONTROLLER),
1204 */
1205 PCI_DEV_HW_SPEC_BM( 0001, 16ca, 0x00, ATA_WDMA2, "Cenatek Rocket Drive",0 ),
1206
1207 PCI_DEV_HW_SPEC_BM( 0102, 1078, 0x00, ATA_UDMA2, "Cyrix 5530" , 0 ),
1208
1209 PCI_DEV_HW_SPEC_BM( 1000, 1042, 0x00, ATA_PIO4, "RZ 100x" , 0 ),
1210 PCI_DEV_HW_SPEC_BM( 1001, 1042, 0x00, ATA_PIO4, "RZ 100x" , 0 ),
1211
1212 PCI_DEV_HW_SPEC_BM( 8172, 1283, 0x00, ATA_UDMA2, "IT8172" , 0 ),
1213 PCI_DEV_HW_SPEC_BM( 8213, 1283, 0x00, ATA_UDMA6, "IT8213F" , ITE_133_NEW ),
1214 PCI_DEV_HW_SPEC_BM( 8212, 1283, 0x00, ATA_UDMA6, "IT8212F" , ITE_133 ),
1215 PCI_DEV_HW_SPEC_BM( 8211, 1283, 0x00, ATA_UDMA6, "IT8211F" , ITE_133 ),
1216
1217 PCI_DEV_HW_SPEC_BM( 0044, 169c, 0x00, ATA_UDMA2, "Netcell SR3000/5000", 0 ),
1218
1219 PCI_DEV_HW_SPEC_BM( 8013, 3388, 0x00, ATA_DMA, "HiNT VXII EIDE" , 0 ),
1220
1221 // Terminator
1222 PCI_DEV_HW_SPEC_BM( ffff, ffff, 0xff, BMLIST_TERMINATOR, NULL , BMLIST_TERMINATOR )
1223 };
1224
1225 #define NUM_BUSMASTER_ADAPTERS (sizeof(BusMasterAdapters) / sizeof(BUSMASTER_CONTROLLER_INFORMATION))
1226
1227 /*
1228 Looks for device with specified Device/Vendor and Revision
1229 in specified device list and returnts its index.
1230 If no matching record found, -1 is returned
1231 */
1232 __inline
1233 ULONG
1234 Ata_is_dev_listed(
1235 PBUSMASTER_CONTROLLER_INFORMATION BusMasterAdapters,
1236 ULONG VendorId,
1237 ULONG DeviceId,
1238 ULONG RevId, // min suitable revision
1239 ULONG lim
1240 )
1241 {
1242 for(ULONG k=0; k<lim; k++) {
1243 if(BusMasterAdapters[k].nVendorId == 0xffff &&
1244 BusMasterAdapters[k].nDeviceId == 0xffff &&
1245 BusMasterAdapters[k].nRevId == 0xff) {
1246 if(lim != BMLIST_TERMINATOR)
1247 continue;
1248 return BMLIST_TERMINATOR;
1249 }
1250 if(BusMasterAdapters[k].nVendorId == VendorId &&
1251 (BusMasterAdapters[k].nDeviceId == DeviceId || DeviceId == 0xffff) &&
1252 (!RevId || BusMasterAdapters[k].nRevId <= RevId) )
1253 return k;
1254 }
1255 return BMLIST_TERMINATOR;
1256 }
1257
1258 #define Ata_is_supported_dev(pciData) \
1259 ((pciData)->BaseClass == PCI_DEV_CLASS_STORAGE && \
1260 (pciData)->SubClass == PCI_DEV_SUBCLASS_IDE)
1261
1262 #define Ata_is_ahci_dev(pciData) \
1263 ((pciData)->BaseClass == PCI_DEV_CLASS_STORAGE && \
1264 (pciData)->SubClass == PCI_DEV_SUBCLASS_SATA && \
1265 (pciData)->ProgIf == PCI_DEV_PROGIF_AHCI_1_0 && \
1266 ((pciData)->u.type0.BaseAddresses[5] & ~0x7))
1267
1268
1269 #endif //__IDE_BUSMASTER_H__