Update UniATA to Version 0.39j Credits go to Samuel Serapion
[reactos.git] / reactos / drivers / storage / ide / uniata / bm_devs.h
1 /*++
2
3 Copyright (c) 2002-2005 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 8
35 // Thanks to SATA Port Multipliers:
36 #define IDE_MAX_LUN_PER_CHAN 16
37 #define IDE_MAX_LUN (AHCI_MAX_PORT*IDE_MAX_LUN_PER_CHAN)
38
39 #define MAX_QUEUE_STAT 8
40
41 //
42 // values for TransferMode
43 //
44 #define ATA_PIO 0x00
45 #define ATA_PIO_NRDY 0x01
46
47 #define ATA_PIO0 0x08
48 #define ATA_PIO1 0x09
49 #define ATA_PIO2 0x0a
50 #define ATA_PIO3 0x0b
51 #define ATA_PIO4 0x0c
52 #define ATA_PIO5 0x0d
53
54 #define ATA_DMA 0x10
55 #define ATA_SDMA 0x10
56 #define ATA_SDMA0 0x10
57 #define ATA_SDMA1 0x11
58 #define ATA_SDMA2 0x12
59
60 #define ATA_WDMA 0x20
61 #define ATA_WDMA0 0x20
62 #define ATA_WDMA1 0x21
63 #define ATA_WDMA2 0x22
64
65 #define ATA_UDMA 0x40
66 #define ATA_UDMA0 0x40 // ATA-16
67 #define ATA_UDMA1 0x41 // ATA-25
68 #define ATA_UDMA2 0x42 // ATA-33
69 #define ATA_UDMA3 0x43 // ATA-44
70 #define ATA_UDMA4 0x44 // ATA-66
71 #define ATA_UDMA5 0x45 // ATA-100
72 #define ATA_UDMA6 0x46 // ATA-133
73 //#define ATA_UDMA7 0x47 // ATA-166
74
75 #define ATA_SA150 0x47 /*0x80*/
76 #define ATA_SA300 0x48 /*0x81*/
77
78 // define PIO timings in nanoseconds
79 #define PIO0_TIMING 600
80
81 //#define UniataGetPioTiming(LunExt) ((LunExt->TransferMode <= ATA_PIO0) ? PIO0_TIMING : 0)
82 #define UniataGetPioTiming(LunExt) 0 //ktp
83
84 #ifndef __IDE_BUSMASTER_DEVICES_H__
85 #define __IDE_BUSMASTER_DEVICES_H__
86
87 typedef struct _BUSMASTER_CONTROLLER_INFORMATION {
88 PCHAR VendorId;
89 ULONG VendorIdLength;
90 ULONG nVendorId;
91 PCHAR DeviceId;
92 ULONG DeviceIdLength;
93 ULONG nDeviceId;
94 ULONG nRevId;
95 ULONG MaxTransferMode;
96 PCHAR FullDevName;
97 ULONG RaidFlags;
98 CHAR VendorIdStr[4];
99 CHAR DeviceIdStr[4];
100 ULONG slotNumber;
101 ULONG busNumber;
102 CHAR channel;
103 // CHAR numOfChannes;
104 CHAR MasterDev;
105 BOOLEAN Known;
106 #ifndef USER_MODE
107 CHAR ChanInitOk; // 0x01 - primary, 0x02 - secondary
108 BOOLEAN Isr2Enable;
109 PDEVICE_OBJECT Isr2DevObj;
110 KIRQL Isr2Irql;
111 KAFFINITY Isr2Affinity;
112 ULONG Isr2Vector;
113 PKINTERRUPT Isr2InterruptObject;
114 CHAR AltInitMasterDev; // 0xff - uninitialized, 0x00 - normal, 0x01 - change ISA to PCI
115 #endif
116
117 }BUSMASTER_CONTROLLER_INFORMATION, *PBUSMASTER_CONTROLLER_INFORMATION;
118
119 /* defines for known chipset PCI id's */
120 #define ATA_ACARD_ID 0x1191
121 #define ATA_ATP850 0x00021191
122 #define ATA_ATP850A 0x00041191
123 #define ATA_ATP850R 0x00051191
124 #define ATA_ATP860A 0x00061191
125 #define ATA_ATP860R 0x00071191
126 #define ATA_ATP865A 0x00081191
127 #define ATA_ATP865R 0x00091191
128
129 #define ATA_AMD_ID 0x1022
130 #define ATA_AMD755 0x74011022
131 #define ATA_AMD756 0x74091022
132 #define ATA_AMD766 0x74111022
133 #define ATA_AMD768 0x74411022
134 #define ATA_AMD8111 0x74691022
135 #define ATA_AMD5536 0x209a1022
136
137 #define ATA_ACER_LABS_ID 0x10b9
138 #define ATA_ALI_1533 0x153310b9
139 #define ATA_ALI_5229 0x522910b9
140 #define ATA_ALI_5281 0x528110b9
141 #define ATA_ALI_5287 0x528710b9
142 #define ATA_ALI_5288 0x528810b9
143 #define ATA_ALI_5289 0x528910b9
144
145 #define ATA_ATI_ID 0x1002
146 #define ATA_ATI_IXP200 0x43491002
147 #define ATA_ATI_IXP300 0x43691002
148 #define ATA_ATI_IXP300_S1 0x436e1002
149 #define ATA_ATI_IXP400 0x43761002
150 #define ATA_ATI_IXP400_S1 0x43791002
151 #define ATA_ATI_IXP400_S2 0x437a1002
152 #define ATA_ATI_IXP600 0x438c1002
153 #define ATA_ATI_IXP600_S1 0x43801002
154 #define ATA_ATI_IXP700 0x439c1002
155 #define ATA_ATI_IXP700_S1 0x43901002
156
157 #define ATA_CENATEK_ID 0x16ca
158 #define ATA_CENATEK_ROCKET 0x000116ca
159
160 #define ATA_CYRIX_ID 0x1078
161 #define ATA_CYRIX_5530 0x01021078
162
163 #define ATA_CYPRESS_ID 0x1080
164 #define ATA_CYPRESS_82C693 0xc6931080
165
166 #define ATA_DEC_21150 0x00221011
167 #define ATA_DEC_21150_1 0x00231011
168
169 #define ATA_HIGHPOINT_ID 0x1103
170 #define ATA_HPT366 0x00041103
171 #define ATA_HPT372 0x00051103
172 #define ATA_HPT302 0x00061103
173 #define ATA_HPT371 0x00071103
174 #define ATA_HPT374 0x00081103
175
176 #define ATA_INTEL_ID 0x8086
177 #define ATA_I960RM 0x09628086
178 #define ATA_I82371FB 0x12308086
179 #define ATA_I82371SB 0x70108086
180 #define ATA_I82371AB 0x71118086
181 #define ATA_I82443MX 0x71998086
182 #define ATA_I82451NX 0x84ca8086
183 #define ATA_I82372FB 0x76018086
184 #define ATA_I82801AB 0x24218086
185 #define ATA_I82801AA 0x24118086
186 #define ATA_I82801BA 0x244a8086
187 #define ATA_I82801BA_1 0x244b8086
188 #define ATA_I82801CA 0x248a8086
189 #define ATA_I82801CA_1 0x248b8086
190 #define ATA_I82801DB 0x24cb8086
191 #define ATA_I82801DB_1 0x24ca8086
192 #define ATA_I82801EB 0x24db8086
193 #define ATA_I82801EB_1 0x24d18086
194 #define ATA_I82801EB_2 0x24df8086
195 #define ATA_I6300ESB 0x25a28086
196 #define ATA_I6300ESB_1 0x25a38086
197 #define ATA_I6300ESB_2 0x25b08086
198 #define ATA_I63XXESB2 0x269e8086
199 #define ATA_I63XXESB2_S1 0x26808086
200 #define ATA_I63XXESB2_S2 0x26818086
201 #define ATA_I63XXESB2_R1 0x26828086
202 #define ATA_I63XXESB2_R2 0x26838086
203 #define ATA_I82801FB 0x266f8086
204 #define ATA_I82801FB_S1 0x26518086
205 #define ATA_I82801FB_R1 0x26528086
206 #define ATA_I82801FB_M 0x26538086
207 #define ATA_I82801GB 0x27df8086
208 #define ATA_I82801GB_S1 0x27c08086
209 #define ATA_I82801GB_R1 0x27c38086
210 #define ATA_I82801GB_AH 0x27c18086
211 #define ATA_I82801GB_M 0x27c58086
212
213 #define ATA_MARVELL_ID 0x11ab
214 #define ATA_M88SX5040 0x504011ab
215 #define ATA_M88SX5041 0x504111ab
216 #define ATA_M88SX5080 0x508011ab
217 #define ATA_M88SX5081 0x508111ab
218 #define ATA_M88SX6041 0x604111ab
219 #define ATA_M88SX6081 0x608111ab
220 #define ATA_M88SX6101 0x610111ab
221 #define ATA_M88SX6145 0x614511ab
222
223 #define ATA_MICRON_ID 0x1042
224 #define ATA_MICRON_RZ1000 0x10001042
225 #define ATA_MICRON_RZ1001 0x10011042
226
227 #define ATA_NATIONAL_ID 0x100b
228 #define ATA_SC1100 0x0502100b
229
230 #define ATA_NETCELL_ID 0x169c
231 #define ATA_NETCELL_SR 0x0044169c
232
233 #define ATA_NVIDIA_ID 0x10de
234 #define ATA_NFORCE1 0x01bc10de
235 #define ATA_NFORCE2 0x006510de
236 #define ATA_NFORCE2_PRO 0x008510de
237 #define ATA_NFORCE2_PRO_S1 0x008e10de
238 #define ATA_NFORCE3 0x00d510de
239 #define ATA_NFORCE3_PRO 0x00e510de
240 #define ATA_NFORCE3_PRO_S1 0x00e310de
241 #define ATA_NFORCE3_PRO_S2 0x00ee10de
242 #define ATA_NFORCE_MCP04 0x003510de
243 #define ATA_NFORCE_MCP04_S1 0x003610de
244 #define ATA_NFORCE_MCP04_S2 0x003e10de
245 #define ATA_NFORCE_CK804 0x005310de
246 #define ATA_NFORCE_CK804_S1 0x005410de
247 #define ATA_NFORCE_CK804_S2 0x005510de
248 #define ATA_NFORCE_MCP51 0x026510de
249 #define ATA_NFORCE_MCP51_S1 0x026610de
250 #define ATA_NFORCE_MCP51_S2 0x026710de
251 #define ATA_NFORCE_MCP55 0x036e10de
252 #define ATA_NFORCE_MCP55_S1 0x037e10de
253 #define ATA_NFORCE_MCP55_S2 0x037f10de
254 #define ATA_NFORCE_MCP61 0x03ec10de
255 #define ATA_NFORCE_MCP61_S1 0x03e710de
256 #define ATA_NFORCE_MCP61_S2 0x03f610de
257 #define ATA_NFORCE_MCP61_S3 0x03f710de
258 #define ATA_NFORCE_MCP65 0x044810de
259 #define ATA_NFORCE_MCP67 0x056010de
260 #define ATA_NFORCE_MCP73 0x056c10de
261 #define ATA_NFORCE_MCP77 0x075910de
262
263 #define ATA_PROMISE_ID 0x105a
264 #define ATA_PDC20246 0x4d33105a
265 #define ATA_PDC20262 0x4d38105a
266 #define ATA_PDC20263 0x0d38105a
267 #define ATA_PDC20265 0x0d30105a
268 #define ATA_PDC20267 0x4d30105a
269 #define ATA_PDC20268 0x4d68105a
270 #define ATA_PDC20269 0x4d69105a
271 #define ATA_PDC20270 0x6268105a
272 #define ATA_PDC20271 0x6269105a
273 #define ATA_PDC20275 0x1275105a
274 #define ATA_PDC20276 0x5275105a
275 #define ATA_PDC20277 0x7275105a
276 #define ATA_PDC20318 0x3318105a
277 #define ATA_PDC20319 0x3319105a
278 #define ATA_PDC20371 0x3371105a
279 #define ATA_PDC20375 0x3375105a
280 #define ATA_PDC20376 0x3376105a
281 #define ATA_PDC20377 0x3377105a
282 #define ATA_PDC20378 0x3373105a
283 #define ATA_PDC20379 0x3372105a
284 #define ATA_PDC20617 0x6617105a
285 #define ATA_PDC20618 0x6626105a
286 #define ATA_PDC20619 0x6629105a
287 #define ATA_PDC20620 0x6620105a
288 #define ATA_PDC20621 0x6621105a
289 #define ATA_PDC20622 0x6622105a
290
291 #define ATA_SERVERWORKS_ID 0x1166
292 #define ATA_ROSB4_ISA 0x02001166
293 #define ATA_ROSB4 0x02111166
294 #define ATA_CSB5 0x02121166
295 #define ATA_CSB6 0x02131166
296 #define ATA_CSB6_1 0x02171166
297 #define ATA_HT1000 0x02141166
298 #define ATA_HT1000_S1 0x024b1166
299 #define ATA_HT1000_S2 0x024a1166
300 #define ATA_K2 0x02401166
301 #define ATA_FRODO4 0x02411166
302 #define ATA_FRODO8 0x02421166
303
304 #define ATA_SILICON_IMAGE_ID 0x1095
305 #define ATA_SII3114 0x31141095
306 #define ATA_SII3512 0x35121095
307 #define ATA_SII3112 0x31121095
308 #define ATA_SII3112_1 0x02401095
309 #define ATA_SII0680 0x06801095
310 #define ATA_CMD646 0x06461095
311 #define ATA_CMD648 0x06481095
312 #define ATA_CMD649 0x06491095
313
314 #define ATA_SIS_ID 0x1039
315 #define ATA_SISSOUTH 0x00081039
316 #define ATA_SIS5511 0x55111039
317 #define ATA_SIS5513 0x55131039
318 #define ATA_SIS5517 0x55171039
319 #define ATA_SIS5518 0x55181039
320 #define ATA_SIS5571 0x55711039
321 #define ATA_SIS5591 0x55911039
322 #define ATA_SIS5596 0x55961039
323 #define ATA_SIS5597 0x55971039
324 #define ATA_SIS5598 0x55981039
325 #define ATA_SIS5600 0x56001039
326 #define ATA_SIS530 0x05301039
327 #define ATA_SIS540 0x05401039
328 #define ATA_SIS550 0x05501039
329 #define ATA_SIS620 0x06201039
330 #define ATA_SIS630 0x06301039
331 #define ATA_SIS635 0x06351039
332 #define ATA_SIS633 0x06331039
333 #define ATA_SIS640 0x06401039
334 #define ATA_SIS645 0x06451039
335 #define ATA_SIS646 0x06461039
336 #define ATA_SIS648 0x06481039
337 #define ATA_SIS650 0x06501039
338 #define ATA_SIS651 0x06511039
339 #define ATA_SIS652 0x06521039
340 #define ATA_SIS655 0x06551039
341 #define ATA_SIS658 0x06581039
342 #define ATA_SIS661 0x06611039
343 #define ATA_SIS730 0x07301039
344 #define ATA_SIS733 0x07331039
345 #define ATA_SIS735 0x07351039
346 #define ATA_SIS740 0x07401039
347 #define ATA_SIS745 0x07451039
348 #define ATA_SIS746 0x07461039
349 #define ATA_SIS748 0x07481039
350 #define ATA_SIS750 0x07501039
351 #define ATA_SIS751 0x07511039
352 #define ATA_SIS752 0x07521039
353 #define ATA_SIS755 0x07551039
354 #define ATA_SIS961 0x09611039
355 #define ATA_SIS962 0x09621039
356 #define ATA_SIS963 0x09631039
357 #define ATA_SIS964 0x09641039
358 #define ATA_SIS964_1 0x01801039
359
360 #define ATA_VIA_ID 0x1106
361 #define ATA_VIA82C571 0x05711106
362 #define ATA_VIA82C586 0x05861106
363 #define ATA_VIA82C596 0x05961106
364 #define ATA_VIA82C686 0x06861106
365 #define ATA_VIA8231 0x82311106
366 #define ATA_VIA8233 0x30741106
367 #define ATA_VIA8233A 0x31471106
368 #define ATA_VIA8233C 0x31091106
369 #define ATA_VIA8235 0x31771106
370 #define ATA_VIA8237 0x32271106
371 #define ATA_VIA8237A 0x05911106
372 #define ATA_VIA8237S 0x53371106
373 #define ATA_VIA8251 0x33491106
374 #define ATA_VIA8361 0x31121106
375 #define ATA_VIA8363 0x03051106
376 #define ATA_VIA8371 0x03911106
377 #define ATA_VIA8662 0x31021106
378 #define ATA_VIA6410 0x31641106
379 #define ATA_VIA6420 0x31491106
380 #define ATA_VIA6421 0x32491106
381
382 #define ATA_ITE_ID 0x1283
383 #define ATA_IT8172G 0x81721283
384 #define ATA_IT8212F 0x82121283
385
386 #define ATA_OPTI_ID 0x1045
387 #define ATA_OPTI82C621 0xc6211045
388 #define ATA_OPTI82C625 0xd5681045
389
390 #define ATA_HINT_ID 0x3388
391 #define ATA_HINTEIDE_ID 0x80133388
392
393 /* chipset setup related defines */
394 /* Used in HW_DEVICE_EXTENSION.InitMethod */
395
396 #define CHIPTYPE_MASK 0x000000ff
397 #define CHIPFLAG_MASK 0xffffff00
398
399 #define UNIATA_RAID_CONTROLLER 0x80000000
400 #define UNIATA_SIMPLEX_ONLY 0x40000000
401 #define UNIATA_NO_SLAVE 0x20000000
402 #define UNIATA_SATA 0x10000000
403 #define UNIATA_NO_DPC 0x08000000
404 #define UNIATA_NO_DPC_ATAPI 0x04000000
405 #define UNIATA_AHCI 0x02000000
406 #define UNIATA_NO80CHK 0x01000000
407
408 #define ATPOLD 0x0100
409
410 #define ALIOLD 0x0100
411 #define ALINEW 0x0200
412
413 #define HPT366 0
414 #define HPT370 1
415 #define HPT372 2
416 #define HPT374 3
417 #define HPTOLD 0x0100
418
419 #define PROLD 0
420 #define PRNEW 1
421 #define PRTX 2
422 #define PRMIO 3
423 #define PRIDX 4
424 #define PRTX4 0x0100
425 #define PRSX4K 0x0200
426 #define PRSX6K 0x0400
427 #define PRSATA 0x0800
428 #define PRDUAL 0x1000
429
430 #define SWKS33 0
431 #define SWKS66 1
432 #define SWKS100 2
433 #define SWKSMIO 3
434
435 #define SIIOLD 0
436 #define SIICMD 1
437 #define SIIMIO 2
438
439 #define SIIINTR 0x0100
440 #define SIIENINTR 0x0200
441 #define SII4CH 0x0400
442 #define SIISETCLK 0x0800
443 #define SIIBUG 0x1000
444 #define SIINOSATAIRQ 0x2000
445
446 //#define SIS_SOUTH 1
447 #define SISSATA 2
448 #define SIS133NEW 3
449 #define SIS133OLD 4
450 #define SIS100NEW 5
451 #define SIS100OLD 6
452 #define SIS66 7
453 #define SIS33 8
454
455 #define SIS_BASE 0x0100
456 #define SIS_SOUTH 0x0200
457
458 #define ICH4_FIX 0x0100
459
460 #define NV4OFF 0x0100
461 #define NVQ 0x0200
462
463 #define VIA33 0
464 #define VIA66 1
465 #define VIA100 2
466 #define VIA133 3
467 #define AMDNVIDIA 4
468 #define AMDCABLE 0x0100
469 #define AMDBUG 0x0200
470 #define VIABAR 0x0400
471 #define VIACLK 0x0800
472 #define VIABUG 0x1000
473 #define VIASOUTH 0x2000
474 #define VIAAST 0x4000
475 #define VIAPRQ 0x8000
476
477 #define ITE_33 0
478 #define ITE_133 1
479
480 #ifdef USER_MODE
481 #define PCI_DEV_HW_SPEC_BM(idhi, idlo, rev, mode, name, flags) \
482 { #idlo, 4, 0x##idlo, #idhi, 4, 0x##idhi, rev, mode, name, flags}
483 #else
484 #define PCI_DEV_HW_SPEC_BM(idhi, idlo, rev, mode, name, flags) \
485 { #idlo, 4, 0x##idlo, #idhi, 4, 0x##idhi, rev, mode, NULL, flags}
486 #endif
487
488 #define BMLIST_TERMINATOR (0xffffffffL)
489
490 BUSMASTER_CONTROLLER_INFORMATION const BusMasterAdapters[] = {
491
492 PCI_DEV_HW_SPEC_BM( 0005, 1191, 0x00, ATA_UDMA2, "Acard ATP850" , ATPOLD | UNIATA_SIMPLEX_ONLY ),
493 PCI_DEV_HW_SPEC_BM( 0006, 1191, 0x00, ATA_UDMA4, "Acard ATP860A" , UNIATA_NO80CHK ),
494 PCI_DEV_HW_SPEC_BM( 0007, 1191, 0x00, ATA_UDMA4, "Acard ATP860R" , UNIATA_NO80CHK ),
495 PCI_DEV_HW_SPEC_BM( 0008, 1191, 0x00, ATA_UDMA6, "Acard ATP865A" , UNIATA_NO80CHK ),
496 PCI_DEV_HW_SPEC_BM( 0009, 1191, 0x00, ATA_UDMA6, "Acard ATP865R" , UNIATA_NO80CHK ),
497
498 PCI_DEV_HW_SPEC_BM( 5289, 10b9, 0x00, ATA_SA150, "ALI M5289" , UNIATA_SATA | UNIATA_NO_SLAVE ),
499 PCI_DEV_HW_SPEC_BM( 5288, 10b9, 0x00, ATA_SA300, "ALI M5288" , UNIATA_SATA | UNIATA_NO_SLAVE ),
500 PCI_DEV_HW_SPEC_BM( 5287, 10b9, 0x00, ATA_SA150, "ALI M5287" , UNIATA_SATA | UNIATA_NO_SLAVE ),
501 PCI_DEV_HW_SPEC_BM( 5281, 10b9, 0x00, ATA_SA150, "ALI M5281" , UNIATA_SATA | UNIATA_NO_SLAVE ),
502 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0xc5, ATA_UDMA6, "ALI M5229 UDMA6" , ALINEW ),
503 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0xc4, ATA_UDMA5, "ALI M5229 UDMA5" , ALINEW ),
504 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0xc2, ATA_UDMA4, "ALI M5229 UDMA4" , ALINEW ),
505 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0x20, ATA_UDMA2, "ALI M5229 UDMA2" , ALIOLD ),
506 PCI_DEV_HW_SPEC_BM( 5229, 10b9, 0x00, ATA_WDMA2, "ALI M5229 WDMA2" , ALIOLD ),
507
508 PCI_DEV_HW_SPEC_BM( 7401, 1022, 0x00, ATA_UDMA2, "AMD 755" , AMDNVIDIA | 0x00 ),
509 PCI_DEV_HW_SPEC_BM( 7409, 1022, 0x00, ATA_UDMA4, "AMD 756" , AMDNVIDIA | UNIATA_NO80CHK ),
510 PCI_DEV_HW_SPEC_BM( 7411, 1022, 0x00, ATA_UDMA5, "AMD 766" , AMDNVIDIA | AMDBUG ),
511 PCI_DEV_HW_SPEC_BM( 7441, 1022, 0x00, ATA_UDMA5, "AMD 768" , AMDNVIDIA ),
512 PCI_DEV_HW_SPEC_BM( 7469, 1022, 0x00, ATA_UDMA6, "AMD 8111" , AMDNVIDIA ),
513 PCI_DEV_HW_SPEC_BM( 209a, 1022, 0x00, ATA_UDMA5, "AMD CS5536" , AMDNVIDIA ),
514
515 PCI_DEV_HW_SPEC_BM( 4349, 1002, 0x00, ATA_UDMA5, "ATI IXP200" , 0 ),
516 PCI_DEV_HW_SPEC_BM( 4369, 1002, 0x00, ATA_UDMA6, "ATI IXP300" , 0 ),
517 PCI_DEV_HW_SPEC_BM( 4376, 1002, 0x00, ATA_UDMA6, "ATI IXP400" , 0 ),
518 PCI_DEV_HW_SPEC_BM( 436e, 1002, 0x00, ATA_SA150, "ATI IXP300" , SIIMIO | UNIATA_SATA ),
519 PCI_DEV_HW_SPEC_BM( 4379, 1002, 0x00, ATA_SA150, "ATI IXP400" , SIIMIO | SIINOSATAIRQ | UNIATA_SATA ),
520 PCI_DEV_HW_SPEC_BM( 437a, 1002, 0x00, ATA_SA300, "ATI IXP400" , SIIMIO | SIINOSATAIRQ | UNIATA_SATA ),
521 PCI_DEV_HW_SPEC_BM( 438c, 1002, 0x00, ATA_UDMA6, "ATI IXP600" , 0 ),
522 PCI_DEV_HW_SPEC_BM( 4380, 1002, 0x00, ATA_SA150, "ATI IXP600" , UNIATA_SATA | UNIATA_AHCI ),
523 PCI_DEV_HW_SPEC_BM( 439c, 1002, 0x00, ATA_UDMA6, "ATI IXP700" , 0 ),
524 PCI_DEV_HW_SPEC_BM( 4390, 1002, 0x00, ATA_SA150, "ATI IXP700" , UNIATA_SATA | UNIATA_AHCI ),
525
526 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0x05, ATA_UDMA6, "HighPoint HPT372" , HPT372 | 0x00 | UNIATA_RAID_CONTROLLER),
527 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0x03, ATA_UDMA5, "HighPoint HPT370" , HPT370 | 0x00 | UNIATA_RAID_CONTROLLER),
528 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0x02, ATA_UDMA4, "HighPoint HPT368" , HPT366 | 0x00 | UNIATA_RAID_CONTROLLER),
529 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0x00, ATA_UDMA4, "HighPoint HPT366" , HPT366 | HPTOLD | UNIATA_RAID_CONTROLLER),
530 PCI_DEV_HW_SPEC_BM( 0005, 1103, 0x01, ATA_UDMA6, "HighPoint HPT372" , HPT372 | 0x00 | UNIATA_RAID_CONTROLLER),
531 PCI_DEV_HW_SPEC_BM( 0005, 1103, 0x00, ATA_UDMA4, "HighPoint HPT372" , HPT372 | HPTOLD | UNIATA_RAID_CONTROLLER),
532 PCI_DEV_HW_SPEC_BM( 0006, 1103, 0x01, ATA_UDMA6, "HighPoint HPT302" , HPT372 | 0x00 | UNIATA_RAID_CONTROLLER),
533 PCI_DEV_HW_SPEC_BM( 0007, 1103, 0x01, ATA_UDMA6, "HighPoint HPT371" , HPT372 | 0x00 | UNIATA_RAID_CONTROLLER),
534 PCI_DEV_HW_SPEC_BM( 0008, 1103, 0x07, ATA_UDMA6, "HighPoint HPT374" , HPT374 | 0x00 | UNIATA_RAID_CONTROLLER),
535
536 PCI_DEV_HW_SPEC_BM( 1230, 8086, 0x00, ATA_WDMA2, "Intel PIIX" , 0 ),
537 PCI_DEV_HW_SPEC_BM( 7010, 8086, 0x00, ATA_WDMA2, "Intel PIIX3" , 0 ),
538 PCI_DEV_HW_SPEC_BM( 7111, 8086, 0x00, ATA_UDMA3, "Intel PIIX4" , 0 ),
539 PCI_DEV_HW_SPEC_BM( 7199, 8086, 0x00, ATA_UDMA2, "Intel PIIX4" , 0 ),
540 PCI_DEV_HW_SPEC_BM( 84ca, 8086, 0x00, ATA_UDMA2, "Intel PIIX4" , 0 ),
541 PCI_DEV_HW_SPEC_BM( 7601, 8086, 0x00, ATA_UDMA2, "Intel ICH0" , 0 ),
542 PCI_DEV_HW_SPEC_BM( 2421, 8086, 0x00, ATA_UDMA4, "Intel ICH" , 0 ),
543 PCI_DEV_HW_SPEC_BM( 2411, 8086, 0x00, ATA_UDMA4, "Intel ICH" , 0 ),
544 PCI_DEV_HW_SPEC_BM( 244a, 8086, 0x00, ATA_UDMA5, "Intel ICH2" , 0 ),
545 PCI_DEV_HW_SPEC_BM( 244b, 8086, 0x00, ATA_UDMA5, "Intel ICH2" , 0 ),
546 PCI_DEV_HW_SPEC_BM( 248a, 8086, 0x00, ATA_UDMA5, "Intel ICH3" , 0 ),
547 PCI_DEV_HW_SPEC_BM( 248b, 8086, 0x00, ATA_UDMA5, "Intel ICH3" , 0 ),
548 PCI_DEV_HW_SPEC_BM( 24cb, 8086, 0x00, ATA_UDMA5, "Intel ICH4" , ICH4_FIX | UNIATA_NO_DPC ),
549 PCI_DEV_HW_SPEC_BM( 24ca, 8086, 0x00, ATA_UDMA5, "Intel ICH4" , ICH4_FIX | UNIATA_NO_DPC ),
550 PCI_DEV_HW_SPEC_BM( 24db, 8086, 0x00, ATA_UDMA5, "Intel ICH5 EB" , 0 ),
551 PCI_DEV_HW_SPEC_BM( 24d1, 8086, 0x00, ATA_SA150, "Intel ICH5 EB1" , UNIATA_SATA ),
552 PCI_DEV_HW_SPEC_BM( 24df, 8086, 0x00, ATA_SA150, "Intel ICH5 EB2" , UNIATA_SATA ),
553 PCI_DEV_HW_SPEC_BM( 25a2, 8086, 0x00, ATA_UDMA5, "Intel 6300ESB" , 0 ),
554 PCI_DEV_HW_SPEC_BM( 25a3, 8086, 0x00, ATA_SA150, "Intel 6300ESB1" , UNIATA_SATA ),
555 PCI_DEV_HW_SPEC_BM( 25b0, 8086, 0x00, ATA_SA150, "Intel 6300ESB2" , UNIATA_SATA ),
556 PCI_DEV_HW_SPEC_BM( 266f, 8086, 0x00, ATA_UDMA5, "Intel ICH6" , 0 ),
557 PCI_DEV_HW_SPEC_BM( 2651, 8086, 0x00, ATA_SA150, "Intel ICH6" , UNIATA_SATA | UNIATA_AHCI ),
558 PCI_DEV_HW_SPEC_BM( 2652, 8086, 0x00, ATA_SA150, "Intel ICH6" , UNIATA_SATA | UNIATA_AHCI ),
559 PCI_DEV_HW_SPEC_BM( 2653, 8086, 0x00, ATA_SA150, "Intel ICH6M" , UNIATA_SATA | UNIATA_AHCI ),
560 PCI_DEV_HW_SPEC_BM( 27df, 8086, 0x00, ATA_UDMA5, "Intel ICH7" , 0 ),
561 PCI_DEV_HW_SPEC_BM( 27c0, 8086, 0x00, ATA_SA300, "Intel ICH7" , UNIATA_SATA | UNIATA_AHCI ),
562 PCI_DEV_HW_SPEC_BM( 27c1, 8086, 0x00, ATA_SA300, "Intel ICH7" , UNIATA_SATA | UNIATA_AHCI ),
563 PCI_DEV_HW_SPEC_BM( 27c3, 8086, 0x00, ATA_SA300, "Intel ICH7" , UNIATA_SATA | UNIATA_AHCI ),
564 PCI_DEV_HW_SPEC_BM( 27c4, 8086, 0x00, ATA_SA300, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
565 PCI_DEV_HW_SPEC_BM( 27c5, 8086, 0x00, ATA_SA300, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
566 PCI_DEV_HW_SPEC_BM( 27c6, 8086, 0x00, ATA_SA300, "Intel ICH7M" , UNIATA_SATA | UNIATA_AHCI ),
567 PCI_DEV_HW_SPEC_BM( 269e, 8086, 0x00, ATA_UDMA5, "Intel 63XXESB2" , 0 ),
568 PCI_DEV_HW_SPEC_BM( 2680, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
569 PCI_DEV_HW_SPEC_BM( 2681, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
570 PCI_DEV_HW_SPEC_BM( 2682, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
571 PCI_DEV_HW_SPEC_BM( 2683, 8086, 0x00, ATA_SA300, "Intel 63XXESB2" , UNIATA_SATA | UNIATA_AHCI ),
572 PCI_DEV_HW_SPEC_BM( 2820, 8086, 0x00, ATA_SA300, "Intel ICH8" , 0 ),
573 PCI_DEV_HW_SPEC_BM( 2821, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
574 PCI_DEV_HW_SPEC_BM( 2822, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
575 PCI_DEV_HW_SPEC_BM( 2824, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
576 PCI_DEV_HW_SPEC_BM( 2825, 8086, 0x00, ATA_SA300, "Intel ICH8" , UNIATA_SATA | UNIATA_AHCI ),
577 // PCI_DEV_HW_SPEC_BM( 2828, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA | UNIATA_AHCI ),
578 PCI_DEV_HW_SPEC_BM( 2829, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA | UNIATA_AHCI ),
579 PCI_DEV_HW_SPEC_BM( 282a, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA | UNIATA_AHCI ),
580 // PCI_DEV_HW_SPEC_BM( 2850, 8086, 0x00, ATA_SA300, "Intel ICH8M" , UNIATA_SATA ),
581 PCI_DEV_HW_SPEC_BM( 2920, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
582 PCI_DEV_HW_SPEC_BM( 2926, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
583 PCI_DEV_HW_SPEC_BM( 2923, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
584 PCI_DEV_HW_SPEC_BM( 2922, 8086, 0x00, ATA_SA300, "Intel ICH9" , UNIATA_SATA | UNIATA_AHCI ),
585 // PCI_DEV_HW_SPEC_BM( 3200, 8086, 0x00, ATA_SA150, "Intel 31244" , UNIATA_SATA ),
586 /*
587 PCI_DEV_HW_SPEC_BM( 5040, 11ab, 0x00, ATA_SA150, "Marvell 88SX5040" , UNIATA_SATA ),
588 PCI_DEV_HW_SPEC_BM( 5041, 11ab, 0x00, ATA_SA150, "Marvell 88SX5041" , UNIATA_SATA ),
589 PCI_DEV_HW_SPEC_BM( 5080, 11ab, 0x00, ATA_SA150, "Marvell 88SX5080" , UNIATA_SATA ),
590 PCI_DEV_HW_SPEC_BM( 5081, 11ab, 0x00, ATA_SA150, "Marvell 88SX5081" , UNIATA_SATA ),
591 PCI_DEV_HW_SPEC_BM( 6041, 11ab, 0x00, ATA_SA300, "Marvell 88SX6041" , UNIATA_SATA ),
592 PCI_DEV_HW_SPEC_BM( 6081, 11ab, 0x00, ATA_SA300, "Marvell 88SX6081" , UNIATA_SATA ),*/
593 PCI_DEV_HW_SPEC_BM( 6101, 11ab, 0x00, ATA_UDMA6, "Marvell 88SX6101" , 0 ),
594 PCI_DEV_HW_SPEC_BM( 6145, 11ab, 0x00, ATA_UDMA6, "Marvell 88SX6145" , 0 ),
595
596 PCI_DEV_HW_SPEC_BM( 01bc, 10de, 0x00, ATA_UDMA5, "nVidia nForce" , AMDNVIDIA ),
597 PCI_DEV_HW_SPEC_BM( 0065, 10de, 0x00, ATA_UDMA6, "nVidia nForce2" , AMDNVIDIA ),
598 PCI_DEV_HW_SPEC_BM( 0085, 10de, 0x00, ATA_UDMA6, "nVidia nForce2 Pro",AMDNVIDIA ),
599 PCI_DEV_HW_SPEC_BM( 008e, 10de, 0x00, ATA_SA150, "nVidia nForce2 Pro S1",UNIATA_SATA ),
600 PCI_DEV_HW_SPEC_BM( 00d5, 10de, 0x00, ATA_UDMA6, "nVidia nForce3" , AMDNVIDIA ),
601 PCI_DEV_HW_SPEC_BM( 00e5, 10de, 0x00, ATA_UDMA6, "nVidia nForce3 Pro",AMDNVIDIA ),
602 PCI_DEV_HW_SPEC_BM( 00e3, 10de, 0x00, ATA_SA150, "nVidia nForce3 Pro S1",UNIATA_SATA ),
603 PCI_DEV_HW_SPEC_BM( 00ee, 10de, 0x00, ATA_SA150, "nVidia nForce3 Pro S2",UNIATA_SATA ),
604 PCI_DEV_HW_SPEC_BM( 0035, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP", AMDNVIDIA ),
605 PCI_DEV_HW_SPEC_BM( 0036, 10de, 0x00, ATA_SA150, "nVidia nForce MCP S1",NV4OFF | UNIATA_SATA ),
606 PCI_DEV_HW_SPEC_BM( 003e, 10de, 0x00, ATA_SA150, "nVidia nForce MCP S2",NV4OFF | UNIATA_SATA ),
607 PCI_DEV_HW_SPEC_BM( 0053, 10de, 0x00, ATA_UDMA6, "nVidia nForce CK804", AMDNVIDIA ),
608 PCI_DEV_HW_SPEC_BM( 0054, 10de, 0x00, ATA_SA300, "nVidia nForce CK804 S1",NV4OFF | UNIATA_SATA ),
609 PCI_DEV_HW_SPEC_BM( 0055, 10de, 0x00, ATA_SA300, "nVidia nForce CK804 S2",NV4OFF | UNIATA_SATA ),
610 PCI_DEV_HW_SPEC_BM( 0265, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP51", AMDNVIDIA ),
611 PCI_DEV_HW_SPEC_BM( 0266, 10de, 0x00, ATA_SA300, "nVidia nForce MCP51 S1",NV4OFF | NVQ | UNIATA_SATA ),
612 PCI_DEV_HW_SPEC_BM( 0267, 10de, 0x00, ATA_SA300, "nVidia nForce MCP51 S2",NV4OFF | NVQ | UNIATA_SATA ),
613 PCI_DEV_HW_SPEC_BM( 036e, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP55", AMDNVIDIA ),
614 PCI_DEV_HW_SPEC_BM( 037e, 10de, 0x00, ATA_SA300, "nVidia nForce MCP55 S1",NV4OFF | NVQ | UNIATA_SATA ),
615 PCI_DEV_HW_SPEC_BM( 037f, 10de, 0x00, ATA_SA300, "nVidia nForce MCP55 S2",NV4OFF | NVQ | UNIATA_SATA ),
616 PCI_DEV_HW_SPEC_BM( 03ec, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP61", AMDNVIDIA ),
617 PCI_DEV_HW_SPEC_BM( 03e7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S1",NV4OFF | NVQ | UNIATA_SATA ),
618 PCI_DEV_HW_SPEC_BM( 03f6, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S2",NV4OFF | NVQ | UNIATA_SATA ),
619 PCI_DEV_HW_SPEC_BM( 03f7, 10de, 0x00, ATA_SA300, "nVidia nForce MCP61 S3",NV4OFF | NVQ | UNIATA_SATA ),
620 PCI_DEV_HW_SPEC_BM( 0448, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP65", AMDNVIDIA ),
621 PCI_DEV_HW_SPEC_BM( 0560, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP67", AMDNVIDIA ),
622 PCI_DEV_HW_SPEC_BM( 056c, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP73", AMDNVIDIA ),
623 PCI_DEV_HW_SPEC_BM( 0759, 10de, 0x00, ATA_UDMA6, "nVidia nForce MCP77", AMDNVIDIA ),
624
625 PCI_DEV_HW_SPEC_BM( 0502, 100b, 0x00, ATA_UDMA2, "National Geode SC1100", 0 ),
626
627 PCI_DEV_HW_SPEC_BM( 4d33, 105a, 0x00, ATA_UDMA2, "Promise PDC20246" , PROLD | 0x00 ),
628 PCI_DEV_HW_SPEC_BM( 4d38, 105a, 0x00, ATA_UDMA4, "Promise PDC20262" , PRNEW | 0x00 ),
629 PCI_DEV_HW_SPEC_BM( 0d38, 105a, 0x00, ATA_UDMA4, "Promise PDC20263" , PRNEW | 0x00 | UNIATA_RAID_CONTROLLER),
630 PCI_DEV_HW_SPEC_BM( 0d30, 105a, 0x00, ATA_UDMA5, "Promise PDC20265" , PRNEW | 0x00 | UNIATA_RAID_CONTROLLER),
631 PCI_DEV_HW_SPEC_BM( 4d30, 105a, 0x00, ATA_UDMA5, "Promise PDC20267" , PRNEW | 0x00 | UNIATA_RAID_CONTROLLER),
632 PCI_DEV_HW_SPEC_BM( 4d68, 105a, 0x00, ATA_UDMA5, "Promise PDC20268" , PRTX | PRTX4 | UNIATA_RAID_CONTROLLER),
633 PCI_DEV_HW_SPEC_BM( 4d69, 105a, 0x00, ATA_UDMA6, "Promise PDC20269" , PRTX | 0x00 | UNIATA_RAID_CONTROLLER),
634 PCI_DEV_HW_SPEC_BM( 6268, 105a, 0x00, ATA_UDMA5, "Promise PDC20270" , PRTX | PRTX4 | UNIATA_RAID_CONTROLLER),
635 PCI_DEV_HW_SPEC_BM( 6269, 105a, 0x00, ATA_UDMA6, "Promise PDC20271" , PRTX | 0x00 | UNIATA_RAID_CONTROLLER),
636 PCI_DEV_HW_SPEC_BM( 1275, 105a, 0x00, ATA_UDMA6, "Promise PDC20275" , PRTX | 0x00 | UNIATA_RAID_CONTROLLER),
637 PCI_DEV_HW_SPEC_BM( 5275, 105a, 0x00, ATA_UDMA6, "Promise PDC20276" , PRTX | PRSX6K | UNIATA_RAID_CONTROLLER),
638 PCI_DEV_HW_SPEC_BM( 7275, 105a, 0x00, ATA_UDMA6, "Promise PDC20277" , PRTX | 0x00 | UNIATA_RAID_CONTROLLER),
639 PCI_DEV_HW_SPEC_BM( 3318, 105a, 0x00, ATA_SA150, "Promise PDC20318" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
640 PCI_DEV_HW_SPEC_BM( 3319, 105a, 0x00, ATA_SA150, "Promise PDC20319" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
641 PCI_DEV_HW_SPEC_BM( 3371, 105a, 0x00, ATA_SA150, "Promise PDC20371" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
642 PCI_DEV_HW_SPEC_BM( 3375, 105a, 0x00, ATA_SA150, "Promise PDC20375" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
643 PCI_DEV_HW_SPEC_BM( 3376, 105a, 0x00, ATA_SA150, "Promise PDC20376" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
644 PCI_DEV_HW_SPEC_BM( 3377, 105a, 0x00, ATA_SA150, "Promise PDC20377" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
645 PCI_DEV_HW_SPEC_BM( 3373, 105a, 0x00, ATA_SA150, "Promise PDC20378" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
646 PCI_DEV_HW_SPEC_BM( 3372, 105a, 0x00, ATA_SA150, "Promise PDC20379" , PRMIO | PRSATA | UNIATA_RAID_CONTROLLER | UNIATA_SATA),
647 PCI_DEV_HW_SPEC_BM( 6617, 105a, 0x00, ATA_UDMA6, "Promise PDC20617" , PRMIO | PRDUAL | UNIATA_RAID_CONTROLLER),
648 PCI_DEV_HW_SPEC_BM( 6626, 105a, 0x00, ATA_UDMA6, "Promise PDC20618" , PRMIO | PRDUAL | UNIATA_RAID_CONTROLLER),
649 PCI_DEV_HW_SPEC_BM( 6629, 105a, 0x00, ATA_UDMA6, "Promise PDC20619" , PRMIO | PRDUAL | UNIATA_RAID_CONTROLLER),
650 PCI_DEV_HW_SPEC_BM( 6620, 105a, 0x00, ATA_UDMA6, "Promise PDC20620" , PRMIO | PRDUAL | UNIATA_RAID_CONTROLLER),
651 /* PCI_DEV_HW_SPEC_BM( 6621, 105a, 0x00, ATA_UDMA6, "Promise PDC20621" , PRMIO | PRSX4X | UNIATA_RAID_CONTROLLER),
652 PCI_DEV_HW_SPEC_BM( 6622, 105a, 0x00, ATA_UDMA6, "Promise PDC20622" , PRMIO | PRSX4X | UNIATA_RAID_CONTROLLER),*/
653
654 PCI_DEV_HW_SPEC_BM( 0211, 1166, 0x00, ATA_UDMA2, "ServerWorks ROSB4", SWKS33 | UNIATA_NO_DPC ),
655 PCI_DEV_HW_SPEC_BM( 0212, 1166, 0x92, ATA_UDMA5, "ServerWorks CSB5" , SWKS100 ),
656 PCI_DEV_HW_SPEC_BM( 0212, 1166, 0x00, ATA_UDMA4, "ServerWorks CSB5" , SWKS66 ),
657 PCI_DEV_HW_SPEC_BM( 0213, 1166, 0x00, ATA_UDMA5, "ServerWorks CSB6" , SWKS100 ),
658 PCI_DEV_HW_SPEC_BM( 0217, 1166, 0x00, ATA_UDMA4, "ServerWorks CSB6" , SWKS66 ),
659 PCI_DEV_HW_SPEC_BM( 0214, 1166, 0x00, ATA_UDMA5, "ServerWorks HT1000" , SWKS100 ),
660 PCI_DEV_HW_SPEC_BM( 024b, 1166, 0x00, ATA_SA150, "ServerWorks HT1000" , SWKS100 ),
661 PCI_DEV_HW_SPEC_BM( 024a, 1166, 0x00, ATA_SA150, "ServerWorks HT1000" , SWKSMIO ),
662 PCI_DEV_HW_SPEC_BM( 0240, 1166, 0x00, ATA_SA150, "ServerWorks K2" , SWKSMIO ),
663 PCI_DEV_HW_SPEC_BM( 0241, 1166, 0x00, ATA_SA150, "ServerWorks Frodo4" , SWKSMIO ),
664 PCI_DEV_HW_SPEC_BM( 0242, 1166, 0x00, ATA_SA150, "ServerWorks Frodo8" , SWKSMIO ),
665
666 PCI_DEV_HW_SPEC_BM( 3114, 1095, 0x00, ATA_SA150, "SiI 3114" , SIIMIO | SII4CH | UNIATA_SATA ),
667 PCI_DEV_HW_SPEC_BM( 3512, 1095, 0x02, ATA_SA150, "SiI 3512" , SIIMIO | UNIATA_SATA ),
668 PCI_DEV_HW_SPEC_BM( 3112, 1095, 0x02, ATA_SA150, "SiI 3112" , SIIMIO | UNIATA_SATA ),
669 PCI_DEV_HW_SPEC_BM( 0240, 1095, 0x02, ATA_SA150, "SiI 3112" , SIIMIO | UNIATA_SATA ),
670 PCI_DEV_HW_SPEC_BM( 3512, 1095, 0x00, ATA_SA150, "SiI 3512" , SIIMIO | SIIBUG | UNIATA_SATA ),
671 PCI_DEV_HW_SPEC_BM( 3112, 1095, 0x00, ATA_SA150, "SiI 3112" , SIIMIO | SIIBUG | UNIATA_SATA ),
672 PCI_DEV_HW_SPEC_BM( 0240, 1095, 0x00, ATA_SA150, "SiI 3112" , SIIMIO | SIIBUG | UNIATA_SATA ),
673 PCI_DEV_HW_SPEC_BM( 0680, 1095, 0x00, ATA_UDMA6, "SiI 0680" , SIIMIO | SIISETCLK ),
674 PCI_DEV_HW_SPEC_BM( 0649, 1095, 0x00, ATA_UDMA5, "CMD 649" , SIICMD | SIIINTR | UNIATA_NO_DPC_ATAPI ),
675 PCI_DEV_HW_SPEC_BM( 0648, 1095, 0x00, ATA_UDMA4, "CMD 648" , SIICMD | SIIINTR ),
676 PCI_DEV_HW_SPEC_BM( 0646, 1095, 0x07, ATA_UDMA2, "CMD 646U2" , SIICMD | 0 ),
677 PCI_DEV_HW_SPEC_BM( 0646, 1095, 0x00, ATA_WDMA2, "CMD 646" , SIICMD | 0 ),
678 PCI_DEV_HW_SPEC_BM( 0640, 1095, 0x00, ATA_PIO4 , "CMD 640" , SIIOLD | SIIENINTR | UNIATA_SIMPLEX_ONLY),
679
680 /** PCI_DEV_HW_SPEC_BM( 0963, 1039, 0x00, ATA_UDMA6, "SiS 963" , SIS133NEW ),
681 PCI_DEV_HW_SPEC_BM( 0962, 1039, 0x00, ATA_UDMA6, "SiS 962" , SIS133NEW ),
682
683 PCI_DEV_HW_SPEC_BM( 0755, 1039, 0x00, ATA_UDMA6, "SiS 755" , SIS_SOUTH ),
684 PCI_DEV_HW_SPEC_BM( 0752, 1039, 0x00, ATA_UDMA6, "SiS 752" , SIS_SOUTH ),
685 PCI_DEV_HW_SPEC_BM( 0751, 1039, 0x00, ATA_UDMA6, "SiS 751" , SIS_SOUTH ),
686 PCI_DEV_HW_SPEC_BM( 0750, 1039, 0x00, ATA_UDMA6, "SiS 750" , SIS_SOUTH ),
687 PCI_DEV_HW_SPEC_BM( 0748, 1039, 0x00, ATA_UDMA6, "SiS 748" , SIS_SOUTH ),
688 PCI_DEV_HW_SPEC_BM( 0746, 1039, 0x00, ATA_UDMA6, "SiS 746" , SIS_SOUTH ),
689 PCI_DEV_HW_SPEC_BM( 0745, 1039, 0x00, ATA_UDMA5, "SiS 745" , SIS100NEW ),
690 PCI_DEV_HW_SPEC_BM( 0740, 1039, 0x00, ATA_UDMA5, "SiS 740" , SIS_SOUTH ),
691 PCI_DEV_HW_SPEC_BM( 0735, 1039, 0x00, ATA_UDMA5, "SiS 735" , SIS100NEW ),
692 PCI_DEV_HW_SPEC_BM( 0733, 1039, 0x00, ATA_UDMA5, "SiS 733" , SIS100NEW ),
693 PCI_DEV_HW_SPEC_BM( 0730, 1039, 0x00, ATA_UDMA5, "SiS 730" , SIS100OLD ),
694
695 PCI_DEV_HW_SPEC_BM( 0658, 1039, 0x00, ATA_UDMA6, "SiS 658" , SIS_SOUTH ),
696 PCI_DEV_HW_SPEC_BM( 0655, 1039, 0x00, ATA_UDMA6, "SiS 655" , SIS_SOUTH ),
697 PCI_DEV_HW_SPEC_BM( 0652, 1039, 0x00, ATA_UDMA6, "SiS 652" , SIS_SOUTH ),
698 PCI_DEV_HW_SPEC_BM( 0651, 1039, 0x00, ATA_UDMA6, "SiS 651" , SIS_SOUTH ),
699 PCI_DEV_HW_SPEC_BM( 0650, 1039, 0x00, ATA_UDMA6, "SiS 650" , SIS_SOUTH ),
700 PCI_DEV_HW_SPEC_BM( 0648, 1039, 0x00, ATA_UDMA6, "SiS 648" , SIS_SOUTH ),
701 PCI_DEV_HW_SPEC_BM( 0646, 1039, 0x00, ATA_UDMA6, "SiS 645DX" , SIS_SOUTH ),
702 PCI_DEV_HW_SPEC_BM( 0645, 1039, 0x00, ATA_UDMA6, "SiS 645" , SIS_SOUTH ),
703 PCI_DEV_HW_SPEC_BM( 0640, 1039, 0x00, ATA_UDMA4, "SiS 640" , SIS_SOUTH ),
704 PCI_DEV_HW_SPEC_BM( 0635, 1039, 0x00, ATA_UDMA5, "SiS 635" , SIS100NEW ),
705 PCI_DEV_HW_SPEC_BM( 0633, 1039, 0x00, ATA_UDMA5, "SiS 633" , SIS100NEW ),
706 PCI_DEV_HW_SPEC_BM( 0630, 1039, 0x00, ATA_UDMA5, "SiS 630S" , SIS100OLD ),
707 PCI_DEV_HW_SPEC_BM( 0630, 1039, 0x00, ATA_UDMA4, "SiS 630" , SIS66, ),
708 PCI_DEV_HW_SPEC_BM( 0620, 1039, 0x00, ATA_UDMA4, "SiS 620" , SIS66, ),
709
710 PCI_DEV_HW_SPEC_BM( 0550, 1039, 0x00, ATA_UDMA5, "SiS 550" , SIS66, ),
711 PCI_DEV_HW_SPEC_BM( 0540, 1039, 0x00, ATA_UDMA4, "SiS 540" , SIS66, ),
712 PCI_DEV_HW_SPEC_BM( 0530, 1039, 0x00, ATA_UDMA4, "SiS 530" , SIS66, ),
713 */
714 PCI_DEV_HW_SPEC_BM( 5513, 1039, 0xc2, ATA_UDMA2, "SiS ATA-xxx" , 0 ),
715 PCI_DEV_HW_SPEC_BM( 5513, 1039, 0x00, ATA_WDMA2, "SiS ATA-xxx" , 0 ),
716 PCI_DEV_HW_SPEC_BM( 0601, 1039, 0x00, ATA_WDMA2, "SiS ATA-xxx" , 0 ),
717
718 /* PCI_DEV_HW_SPEC_BM( 0586, 1106, 0x41, ATA_UDMA2, "VIA 82C586B" , VIA33 | 0x00 ),
719 PCI_DEV_HW_SPEC_BM( 0586, 1106, 0x40, ATA_UDMA2, "VIA 82C586B" , VIA33 | VIAPRQ ),
720 PCI_DEV_HW_SPEC_BM( 0586, 1106, 0x02, ATA_UDMA2, "VIA 82C586B" , VIA33 | 0x00 ),
721 PCI_DEV_HW_SPEC_BM( 0586, 1106, 0x00, ATA_WDMA2, "VIA 82C586" , VIA33 | 0x00 ),
722 PCI_DEV_HW_SPEC_BM( 0596, 1106, 0x12, ATA_UDMA4, "VIA 82C596B" , VIA66 | VIACLK ),
723 PCI_DEV_HW_SPEC_BM( 0596, 1106, 0x00, ATA_UDMA2, "VIA 82C596" , VIA33 | 0x00 ),
724 PCI_DEV_HW_SPEC_BM( 0686, 1106, 0x40, ATA_UDMA5, "VIA 82C686B" , VIA100 | VIABUG ),
725 PCI_DEV_HW_SPEC_BM( 0686, 1106, 0x10, ATA_UDMA4, "VIA 82C686A" , VIA66 | VIACLK ),
726 PCI_DEV_HW_SPEC_BM( 0686, 1106, 0x00, ATA_UDMA2, "VIA 82C686" , VIA33 | 0x00 ),
727 PCI_DEV_HW_SPEC_BM( 8231, 1106, 0x00, ATA_UDMA5, "VIA 8231" , VIA100 | VIABUG ),
728 PCI_DEV_HW_SPEC_BM( 3074, 1106, 0x00, ATA_UDMA5, "VIA 8233" , VIA100 | 0x00 ),
729 PCI_DEV_HW_SPEC_BM( 3109, 1106, 0x00, ATA_UDMA5, "VIA 8233C" , VIA100 | 0x00 ),
730 PCI_DEV_HW_SPEC_BM( 3147, 1106, 0x00, ATA_UDMA6, "VIA 8233A" , VIA133 | VIAAST ),
731 PCI_DEV_HW_SPEC_BM( 3177, 1106, 0x00, ATA_UDMA6, "VIA 8235" , VIA133 | VIAAST ),
732 */
733 PCI_DEV_HW_SPEC_BM( 0571, 1106, 0x00, ATA_UDMA2, "VIA ATA-xxx" , 0 ),
734 PCI_DEV_HW_SPEC_BM( 3164, 1106, 0x00, ATA_UDMA6, "VIA 6410" , 0 ),
735 PCI_DEV_HW_SPEC_BM( 3149, 1106, 0x00, ATA_SA150, "VIA 6420" , 0 | UNIATA_SATA ),
736 PCI_DEV_HW_SPEC_BM( 3249, 1106, 0x00, ATA_SA150, "VIA 6421" , VIABAR | UNIATA_SATA ),
737 PCI_DEV_HW_SPEC_BM( 0591, 1106, 0x00, ATA_SA150, "VIA 8237A" , 0 | UNIATA_SATA ),
738 PCI_DEV_HW_SPEC_BM( 5337, 1106, 0x00, ATA_SA150, "VIA 8237S" , 0 | UNIATA_SATA ),
739 //PCI_DEV_HW_SPEC_BM( 3349, 1106, 0x00, ATA_SA150, "VIA 8251" , VIAAHCI| UNIATA_SATA ),
740
741 PCI_DEV_HW_SPEC_BM( c693, 1080, 0x00, ATA_WDMA2, "Cypress 82C693" ,0 ),
742
743 /*
744 PCI_DEV_HW_SPEC_BM( 4d68, 105a, 0, 0, "Promise TX2 ATA-100 controller", UNIATA_RAID_CONTROLLER),
745 PCI_DEV_HW_SPEC_BM( 6268, 105a, 0, 0, "Promise TX2 ATA-100 controller", UNIATA_RAID_CONTROLLER),
746
747 PCI_DEV_HW_SPEC_BM( 4d69, 105a, 0, 0, "Promise TX2 ATA-133 controller", UNIATA_RAID_CONTROLLER),
748 PCI_DEV_HW_SPEC_BM( 5275, 105a, 0, 0, "Promise TX2 ATA-133 controller", UNIATA_RAID_CONTROLLER),
749 PCI_DEV_HW_SPEC_BM( 6269, 105a, 0, 0, "Promise TX2 ATA-133 controller", UNIATA_RAID_CONTROLLER),
750 PCI_DEV_HW_SPEC_BM( 7275, 105a, 0, 0, "Promise TX2 ATA-133 controller", UNIATA_RAID_CONTROLLER),
751
752 PCI_DEV_HW_SPEC_BM( 4d33, 105a, 0, 0, "Promise Ultra/FastTrak-33 controller", UNIATA_RAID_CONTROLLER),
753
754 PCI_DEV_HW_SPEC_BM( 0d38, 105a, 0, 0, "Promise FastTrak 66 controller", 0),
755 PCI_DEV_HW_SPEC_BM( 4d38, 105a, 0, 0, "Promise Ultra/FastTrak-66 controller", UNIATA_RAID_CONTROLLER),
756
757 PCI_DEV_HW_SPEC_BM( 4d30, 105a, 0, 0, "Promise Ultra/FastTrak-100 controller", UNIATA_RAID_CONTROLLER),
758 PCI_DEV_HW_SPEC_BM( 0d30, 105a, 0, 0, "Promise OEM ATA-100 controllers", UNIATA_RAID_CONTROLLER),
759
760 PCI_DEV_HW_SPEC_BM( 0004, 1103, 0, 0, "HighPoint HPT366/368/370/372 controller", UNIATA_RAID_CONTROLLER),
761 PCI_DEV_HW_SPEC_BM( 0005, 1103, 0, 0, "HighPoint HPT372 controller", UNIATA_RAID_CONTROLLER),
762 PCI_DEV_HW_SPEC_BM( 0008, 1103, 0, 0, "HighPoint HPT374 controller", UNIATA_RAID_CONTROLLER),
763 */
764 PCI_DEV_HW_SPEC_BM( 0001, 16ca, 0x00, ATA_WDMA2, "Cenatek Rocket Drive",0 ),
765
766 PCI_DEV_HW_SPEC_BM( 0102, 1078, 0x00, ATA_UDMA2, "Cyrix 5530" , 0 ),
767
768 PCI_DEV_HW_SPEC_BM( 0102, 1042, 0x00, ATA_PIO4, "RZ 100x" , 0 ),
769
770 PCI_DEV_HW_SPEC_BM( 8172, 1283, 0x00, ATA_UDMA2, "IT8172" , 0 ),
771 PCI_DEV_HW_SPEC_BM( 8212, 1283, 0x00, ATA_UDMA6, "IT8212F" , ITE_133 ),
772
773 PCI_DEV_HW_SPEC_BM( 0044, 169c, 0x00, ATA_UDMA2, "Netcell SR3000/5000", 0 ),
774
775 PCI_DEV_HW_SPEC_BM( 8013, 3388, 0x00, ATA_DMA, "HiNT VXII EIDE" , 0 ),
776
777 // Terminator
778 PCI_DEV_HW_SPEC_BM( ffff, ffff, 0xff, BMLIST_TERMINATOR, NULL , BMLIST_TERMINATOR )
779 };
780
781 #define NUM_BUSMASTER_ADAPTERS (sizeof(BusMasterAdapters) / sizeof(BUSMASTER_CONTROLLER_INFORMATION))
782
783 /*
784 Looks for device with specified Device/Vendor and Revision
785 in specified device list and returnts its index.
786 If no matching record found, -1 is returned
787 */
788 __inline
789 ULONG
790 Ata_is_dev_listed(
791 PBUSMASTER_CONTROLLER_INFORMATION BusMasterAdapters,
792 ULONG VendorId,
793 ULONG DeviceId,
794 ULONG RevId, // min suitable revision
795 ULONG lim
796 )
797 {
798 for(ULONG k=0; k<lim; k++) {
799 if(BusMasterAdapters[k].nVendorId == 0xffff &&
800 BusMasterAdapters[k].nDeviceId == 0xffff &&
801 BusMasterAdapters[k].nRevId == 0xff) {
802 if(lim != BMLIST_TERMINATOR)
803 continue;
804 return BMLIST_TERMINATOR;
805 }
806 if(BusMasterAdapters[k].nVendorId == VendorId &&
807 (BusMasterAdapters[k].nDeviceId == DeviceId || DeviceId == 0xffff) &&
808 (!RevId || BusMasterAdapters[k].nRevId <= RevId) )
809 return k;
810 }
811 return BMLIST_TERMINATOR;
812 }
813
814 #define Ata_is_supported_dev(pciData) \
815 ((pciData)->BaseClass == PCI_DEV_CLASS_STORAGE && \
816 (pciData)->SubClass == PCI_DEV_SUBCLASS_IDE)
817
818
819 #endif //__IDE_BUSMASTER_H__