[UNIATA]
[reactos.git] / reactos / drivers / storage / ide / uniata / bm_devs.h
index 2af61db..b4d0923 100644 (file)
@@ -1,18 +1,19 @@
 /*++
 
-Copyright (c) 2002-2014 Alexandr A. Telyatnikov (Alter)
+Copyright (c) 2002-2016 Alexandr A. Telyatnikov (Alter)
 
 Module Name:
     bm_devs.h
 
 Abstract:
-    This file contains list of 'well known' PCI IDE controllers
+    This file contains actual list of 'well known' PCI IDE controllers
+    and must be included only in stub bm_devs.cpp
 
 Author:
     Alexander A. Telyatnikov (Alter)
 
 Environment:
-    kernel mode only
+    kernel and user mode
 
 Notes:
 
@@ -29,695 +30,14 @@ Notes:
 
 Revision History:
 
+Licence:
+    GPLv2
+
 --*/
 
-#ifndef __IDE_BUSMASTER_DEVICES_H__
-#define __IDE_BUSMASTER_DEVICES_H__
-
-#pragma pack(push, 8)
-
-#define IDE_MAX_CHAN          16
-#define IDE_DEFAULT_MAX_CHAN  2
-// Thanks to SATA Port Multipliers:
-//#define IDE_MAX_LUN_PER_CHAN  SATA_MAX_PM_UNITS
-#define IDE_MAX_LUN_PER_CHAN  2
-
-#define IDE_MAX_LUN           (AHCI_MAX_PORT*IDE_MAX_LUN_PER_CHAN)
-
-#define MAX_QUEUE_STAT        8
-
-// define PIO timings in nanoseconds
-#define         PIO0_TIMING             600
-
-//#define UniataGetPioTiming(LunExt)      ((LunExt->TransferMode <= ATA_PIO0) ? PIO0_TIMING : 0)
-#define UniataGetPioTiming(LunExt)      0 //ktp
-
-/*#ifdef USER_MODE
-#define PVEN_STR    PCSTR
-#else // USER_MODE
-#define PVEN_STR    PCHAR
-#endif // USER_MODE*/
-#define PVEN_STR    PCSTR
-
-typedef struct _BUSMASTER_CONTROLLER_INFORMATION {
-    PVEN_STR VendorId;
-    ULONG   VendorIdLength;
-    ULONG   nVendorId;
-    PVEN_STR DeviceId;
-    ULONG   DeviceIdLength;
-    ULONG   nDeviceId;
-    ULONG   nRevId;
-    ULONG   MaxTransferMode;
-    PVEN_STR FullDevName;
-    ULONG   RaidFlags;
-    CHAR    VendorIdStr[4];
-    CHAR    DeviceIdStr[4];
-    ULONG   slotNumber;
-    ULONG   busNumber;
-    CHAR    channel;
-//    CHAR    numOfChannes;
-    CHAR    MasterDev;
-    BOOLEAN Known;
-#ifndef USER_MODE
-    UCHAR   ChanInitOk;             // 0x01 - primary,  0x02 - secondary, 0x80 - PciIde claimed
-    BOOLEAN Isr2Enable;
-    union {
-        PDEVICE_OBJECT Isr2DevObj;
-        PDEVICE_OBJECT PciIdeDevObj;
-    };
-    KIRQL      Isr2Irql;
-    KAFFINITY  Isr2Affinity;
-    ULONG      Isr2Vector;
-    PKINTERRUPT Isr2InterruptObject;
-    CHAR    AltInitMasterDev;       // 0xff - uninitialized,  0x00 - normal,  0x01 - change ISA to PCI
-    CHAR    NeedAltInit;            // 0x01 - try change ISA to PCI
-#endif
-
-}BUSMASTER_CONTROLLER_INFORMATION, *PBUSMASTER_CONTROLLER_INFORMATION;
-
-/* defines for known chipset PCI id's */
-#define ATA_ACARD_ID           0x1191
-#define ATA_ATP850             0x00021191
-#define ATA_ATP850A            0x00041191
-#define ATA_ATP850R            0x00051191
-#define ATA_ATP860A            0x00061191
-#define ATA_ATP860R            0x00071191
-#define ATA_ATP865A            0x00081191
-#define ATA_ATP865R            0x00091191
-
-#define ATA_ACER_LABS_ID       0x10b9
-#define ATA_ALI_1533            0x153310b9
-#define ATA_ALI_5228            0x522810b9
-#define ATA_ALI_5229            0x522910b9
-#define ATA_ALI_5281            0x528110b9
-#define ATA_ALI_5287            0x528710b9
-#define ATA_ALI_5288            0x528810b9
-#define ATA_ALI_5289            0x528910b9
-
-#define ATA_AMD_ID              0x1022
-#define ATA_AMD755              0x74011022
-#define ATA_AMD756              0x74091022
-#define ATA_AMD766              0x74111022
-#define ATA_AMD768              0x74411022
-#define ATA_AMD8111             0x74691022
-#define ATA_AMD5536             0x209a1022
-#define ATA_AMD_HUDSON2_S1     0x78001022
-#define ATA_AMD_HUDSON2_S2     0x78011022
-#define ATA_AMD_HUDSON2_S3     0x78021022
-#define ATA_AMD_HUDSON2_S4     0x78031022
-#define ATA_AMD_HUDSON2_S5     0x78041022
-#define ATA_AMD_HUDSON2                0x780c1022
-
-#define ATA_ADAPTEC_ID          0x9005
-#define ATA_ADAPTEC_1420        0x02419005
-#define ATA_ADAPTEC_1430        0x02439005
-
-#define ATA_ATI_ID              0x1002
-#define ATA_ATI_IXP200          0x43491002
-#define ATA_ATI_IXP300          0x43691002
-#define ATA_ATI_IXP300_S1       0x436e1002
-#define ATA_ATI_IXP400          0x43761002
-#define ATA_ATI_IXP400_S1       0x43791002
-#define ATA_ATI_IXP400_S2       0x437a1002
-#define ATA_ATI_IXP600          0x438c1002
-#define ATA_ATI_IXP600_S1       0x43801002
-#define ATA_ATI_IXP700          0x439c1002
-#define ATA_ATI_IXP700_S1       0x43901002
-#define        ATA_ATI_IXP700_S2       0x43911002
-#define        ATA_ATI_IXP700_S3       0x43921002
-#define        ATA_ATI_IXP700_S4       0x43931002
-#define        ATA_ATI_IXP800_S1       0x43941002
-#define        ATA_ATI_IXP800_S2       0x43951002
-#define        ATA_ATI_4385            0x43851002
-
-#define ATA_CENATEK_ID          0x16ca
-#define ATA_CENATEK_ROCKET      0x000116ca
-
-#define ATA_CYRIX_ID           0x1078
-#define ATA_CYRIX_5530         0x01021078
-
-#define ATA_CYPRESS_ID         0x1080
-#define ATA_CYPRESS_82C693     0xc6931080
-
-#define ATA_DEC_21150          0x00221011
-#define ATA_DEC_21150_1                0x00231011
-
-#define ATA_HIGHPOINT_ID       0x1103
-#define ATA_HPT366             0x00041103
-#define ATA_HPT372             0x00051103
-#define ATA_HPT302             0x00061103
-#define ATA_HPT371             0x00071103
-#define ATA_HPT374             0x00081103
-
-#define ATA_INTEL_ID           0x8086
-#define ATA_I960RM             0x09628086
-#define ATA_I82371FB           0x12308086
-#define ATA_I82371SB           0x70108086
-#define ATA_I82371AB           0x71118086
-#define ATA_I82443MX           0x71998086
-#define ATA_I82451NX           0x84ca8086
-#define ATA_I82372FB           0x76018086
-#define ATA_I82801AB           0x24218086
-#define ATA_I82801AA           0x24118086
-#define ATA_I82801BA           0x244a8086
-#define ATA_I82801BA_1         0x244b8086
-#define ATA_I82801CA           0x248a8086
-#define ATA_I82801CA_1         0x248b8086
-#define ATA_I82801DB           0x24cb8086
-#define ATA_I82801DB_1         0x24ca8086
-#define ATA_I82801EB           0x24db8086
-#define ATA_I82801EB_S1         0x24d18086
-#define ATA_I82801EB_R1         0x24df8086
-#define ATA_I6300ESB            0x25a28086
-#define ATA_I6300ESB_S1         0x25a38086
-#define ATA_I6300ESB_R1         0x25b08086
-#define ATA_I63XXESB2           0x269e8086
-#define ATA_I63XXESB2_S1        0x26808086
-#define ATA_I63XXESB2_S2        0x26818086
-#define ATA_I63XXESB2_R1        0x26828086
-#define ATA_I63XXESB2_R2        0x26838086
-#define ATA_I82801FB           0x266f8086
-#define ATA_I82801FB_S1                0x26518086
-#define ATA_I82801FB_R1                0x26528086
-#define ATA_I82801FB_M          0x26538086
-#define ATA_I82801GB            0x27df8086
-#define ATA_I82801GB_S1         0x27c08086
-#define ATA_I82801GB_AH         0x27c18086
-#define ATA_I82801GB_R1         0x27c38086
-#define ATA_I82801GBM_S1        0x27c48086
-#define ATA_I82801GBM_AH        0x27c58086
-#define ATA_I82801GBM_R1        0x27c68086
-#define ATA_I82801HB_S1         0x28208086
-#define ATA_I82801HB_AH6        0x28218086
-#define ATA_I82801HB_R1         0x28228086
-#define ATA_I82801HB_AH4        0x28248086
-#define ATA_I82801HB_S2         0x28258086
-#define ATA_I82801HBM           0x28508086
-#define ATA_I82801HBM_S1        0x28288086
-#define ATA_I82801HBM_S2        0x28298086
-#define ATA_I82801HBM_S3        0x282a8086
-#define ATA_I82801IB_S1         0x29208086
-#define ATA_I82801IB_AH2        0x29218086
-#define ATA_I82801IB_AH6        0x29228086
-#define ATA_I82801IB_AH4        0x29238086
-#define ATA_I82801IB_R1         0x29258086
-#define ATA_I82801IB_S2         0x29268086
-#define ATA_I82801IBM_S1        0x29288086
-#define ATA_I82801IBM_AH        0x29298086
-#define ATA_I82801IBM_R1        0x292a8086
-#define ATA_I82801IBM_S2        0x292d8086
-#define ATA_I82801JIB_S1        0x3a208086
-#define ATA_I82801JIB_AH        0x3a228086
-#define ATA_I82801JIB_R1        0x3a258086
-#define ATA_I82801JIB_S2        0x3a268086
-#define ATA_I82801JD_S1         0x3a008086
-#define ATA_I82801JD_AH         0x3a028086
-#define ATA_I82801JD_R1         0x3a058086
-#define ATA_I82801JD_S2         0x3a068086
-/*
-#define ATA_I82801JI_S1         0x3a208086
-#define ATA_I82801JI_AH         0x3a228086
-#define ATA_I82801JI_R1         0x3a258086
-#define ATA_I82801JI_S2         0x3a268086
-*/
-#define ATA_5Series_S1          0x3b208086
-#define ATA_5Series_S2          0x3b218086
-#define ATA_5Series_AH1         0x3b228086
-#define ATA_5Series_AH2         0x3b238086
-#define ATA_5Series_R1          0x3b258086
-#define ATA_5Series_S3          0x3b268086
-#define ATA_5Series_S4          0x3b288086
-#define ATA_5Series_AH3         0x3b298086
-#define ATA_5Series_R2          0x3b2c8086
-#define ATA_5Series_S5          0x3b2d8086
-#define ATA_5Series_S6          0x3b2e8086
-#define ATA_5Series_AH4         0x3b2f8086
-
-#define ATA_CPT_S1              0x1c008086
-#define ATA_CPT_S2              0x1c018086
-#define ATA_CPT_AH1             0x1c028086
-#define ATA_CPT_AH2             0x1c038086
-#define ATA_CPT_R1              0x1c048086
-#define ATA_CPT_R2              0x1c058086
-#define ATA_CPT_S3              0x1c088086
-#define ATA_CPT_S4              0x1c098086
-
-#define ATA_PBG_S1             0x1d008086
-#define ATA_PBG_AH1            0x1d028086
-#define ATA_PBG_R1             0x1d048086
-#define ATA_PBG_R2             0x1d068086
-#define ATA_PBG_R3             0x28268086
-#define ATA_PBG_S2             0x1d088086
-
-#define ATA_PPT_S1             0x1e008086
-#define ATA_PPT_S2             0x1e018086
-#define ATA_PPT_AH1            0x1e028086
-#define ATA_PPT_AH2            0x1e038086
-#define ATA_PPT_R1             0x1e048086
-#define ATA_PPT_R2             0x1e058086
-#define ATA_PPT_R3             0x1e068086
-#define ATA_PPT_R4             0x1e078086
-#define ATA_PPT_S3             0x1e088086
-#define ATA_PPT_S4             0x1e098086
-#define ATA_PPT_R5             0x1e0e8086
-#define ATA_PPT_R6             0x1e0f8086
-
-#define ATA_LPT_S1             0x8c008086
-#define ATA_LPT_S2             0x8c018086
-#define ATA_LPT_AH1            0x8c028086
-#define ATA_LPT_AH2            0x8c038086
-#define ATA_LPT_R1             0x8c048086
-#define ATA_LPT_R2             0x8c058086
-#define ATA_LPT_R3             0x8c068086
-#define ATA_LPT_R4             0x8c078086
-#define ATA_LPT_S3             0x8c088086
-#define ATA_LPT_S4             0x8c098086
-#define ATA_LPT_R5             0x8c0e8086
-#define ATA_LPT_R6             0x8c0f8086
-
-#define ATA_I31244              0x32008086
-#define ATA_ISCH                0x811a8086
-#define ATA_DH89XXCC            0x23238086
-
-#define ATA_COLETOCRK_AH1       0x23a38086
-#define ATA_COLETOCRK_S1        0x23a18086
-#define ATA_COLETOCRK_S2        0x23a68086
-
-#define ATA_JMICRON_ID          0x197b
-#define ATA_JMB360              0x2360197b
-#define ATA_JMB361              0x2361197b
-#define ATA_JMB362              0x2362197b
-#define ATA_JMB363              0x2363197b
-#define ATA_JMB365              0x2365197b
-#define ATA_JMB366              0x2366197b
-#define ATA_JMB368              0x2368197b
-
-#define ATA_MARVELL_ID          0x11ab
-#define ATA_M88SX5040           0x504011ab
-#define ATA_M88SX5041           0x504111ab
-#define ATA_M88SX5080           0x508011ab
-#define ATA_M88SX5081           0x508111ab
-#define ATA_M88SX6041           0x604111ab
-#define ATA_M88SX6042           0x604211ab
-#define ATA_M88SX6081           0x608111ab
-#define ATA_M88SX7042           0x704211ab
-#define ATA_M88SE6101           0x610111ab
-#define ATA_M88SE6102           0x610211ab
-#define ATA_M88SE6111           0x611111ab
-#define ATA_M88SE6121           0x612111ab
-#define ATA_M88SE6141           0x614111ab
-#define ATA_M88SE6145           0x614511ab
-#define ATA_M88SE9123           0x91231b4b
-#define ATA_MARVELL2_ID         0x1b4b
-
-#define ATA_MICRON_ID           0x1042
-#define ATA_MICRON_RZ1000       0x10001042
-#define ATA_MICRON_RZ1001       0x10011042
-
-#define ATA_NATIONAL_ID                0x100b
-#define ATA_SC1100             0x0502100b
-
-#define ATA_NETCELL_ID          0x169c
-#define ATA_NETCELL_SR          0x0044169c
-
-#define ATA_NVIDIA_ID          0x10de
-#define ATA_NFORCE1            0x01bc10de
-#define ATA_NFORCE2            0x006510de
-#define ATA_NFORCE2_PRO         0x008510de
-#define ATA_NFORCE2_PRO_S1      0x008e10de
-#define ATA_NFORCE3            0x00d510de
-#define ATA_NFORCE3_PRO                0x00e510de
-#define ATA_NFORCE3_PRO_S1     0x00e310de
-#define ATA_NFORCE3_PRO_S2     0x00ee10de
-#define ATA_NFORCE_MCP04        0x003510de
-#define ATA_NFORCE_MCP04_S1     0x003610de
-#define ATA_NFORCE_MCP04_S2     0x003e10de
-#define ATA_NFORCE_CK804        0x005310de
-#define ATA_NFORCE_CK804_S1     0x005410de
-#define ATA_NFORCE_CK804_S2     0x005510de
-#define ATA_NFORCE_MCP51        0x026510de
-#define ATA_NFORCE_MCP51_S1     0x026610de
-#define ATA_NFORCE_MCP51_S2     0x026710de
-#define ATA_NFORCE_MCP55        0x036e10de
-#define ATA_NFORCE_MCP55_S1     0x037e10de
-#define ATA_NFORCE_MCP55_S2     0x037f10de
-#define ATA_NFORCE_MCP61        0x03ec10de
-#define ATA_NFORCE_MCP61_S1     0x03e710de
-#define ATA_NFORCE_MCP61_S2     0x03f610de
-#define ATA_NFORCE_MCP61_S3     0x03f710de
-#define ATA_NFORCE_MCP65        0x044810de
-#define ATA_NFORCE_MCP65_A0     0x044c10de
-#define ATA_NFORCE_MCP65_A1     0x044d10de
-#define ATA_NFORCE_MCP65_A2     0x044e10de
-#define ATA_NFORCE_MCP65_A3     0x044f10de
-#define ATA_NFORCE_MCP65_A4     0x045c10de
-#define ATA_NFORCE_MCP65_A5     0x045d10de
-#define ATA_NFORCE_MCP65_A6     0x045e10de
-#define ATA_NFORCE_MCP65_A7     0x045f10de
-#define ATA_NFORCE_MCP67        0x056010de
-#define ATA_NFORCE_MCP67_A0     0x055010de
-#define ATA_NFORCE_MCP67_A1     0x055110de
-#define ATA_NFORCE_MCP67_A2     0x055210de
-#define ATA_NFORCE_MCP67_A3     0x055310de
-#define ATA_NFORCE_MCP67_A4     0x055410de
-#define ATA_NFORCE_MCP67_A5     0x055510de
-#define ATA_NFORCE_MCP67_A6     0x055610de
-#define ATA_NFORCE_MCP67_A7     0x055710de
-#define ATA_NFORCE_MCP67_A8     0x055810de
-#define ATA_NFORCE_MCP67_A9     0x055910de
-#define ATA_NFORCE_MCP67_AA     0x055A10de
-#define ATA_NFORCE_MCP67_AB     0x055B10de
-#define ATA_NFORCE_MCP67_AC     0x058410de
-#define ATA_NFORCE_MCP73        0x056c10de
-#define ATA_NFORCE_MCP73_A0     0x07f010de
-#define ATA_NFORCE_MCP73_A1     0x07f110de
-#define ATA_NFORCE_MCP73_A2     0x07f210de
-#define ATA_NFORCE_MCP73_A3     0x07f310de
-#define ATA_NFORCE_MCP73_A4     0x07f410de
-#define ATA_NFORCE_MCP73_A5     0x07f510de
-#define ATA_NFORCE_MCP73_A6     0x07f610de
-#define ATA_NFORCE_MCP73_A7     0x07f710de
-#define ATA_NFORCE_MCP73_A8     0x07f810de
-#define ATA_NFORCE_MCP73_A9     0x07f910de
-#define ATA_NFORCE_MCP73_AA     0x07fa10de
-#define ATA_NFORCE_MCP73_AB     0x07fb10de
-#define ATA_NFORCE_MCP77        0x075910de
-#define ATA_NFORCE_MCP77_A0     0x0ad010de
-#define ATA_NFORCE_MCP77_A1     0x0ad110de
-#define ATA_NFORCE_MCP77_A2     0x0ad210de
-#define ATA_NFORCE_MCP77_A3     0x0ad310de
-#define ATA_NFORCE_MCP77_A4     0x0ad410de
-#define ATA_NFORCE_MCP77_A5     0x0ad510de
-#define ATA_NFORCE_MCP77_A6     0x0ad610de
-#define ATA_NFORCE_MCP77_A7     0x0ad710de
-#define ATA_NFORCE_MCP77_A8     0x0ad810de
-#define ATA_NFORCE_MCP77_A9     0x0ad910de
-#define ATA_NFORCE_MCP77_AA     0x0ada10de
-#define ATA_NFORCE_MCP77_AB     0x0adb10de
-#define ATA_NFORCE_MCP79_A0     0x0ab410de
-#define ATA_NFORCE_MCP79_A1     0x0ab510de
-#define ATA_NFORCE_MCP79_A2     0x0ab610de
-#define ATA_NFORCE_MCP79_A3     0x0ab710de
-#define ATA_NFORCE_MCP79_A4     0x0ab810de
-#define ATA_NFORCE_MCP79_A5     0x0ab910de
-#define ATA_NFORCE_MCP79_A6     0x0aba10de
-#define ATA_NFORCE_MCP79_A7     0x0abb10de
-#define ATA_NFORCE_MCP79_A8     0x0abc10de
-#define ATA_NFORCE_MCP79_A9     0x0abd10de
-#define ATA_NFORCE_MCP79_AA     0x0abe10de
-#define ATA_NFORCE_MCP79_AB     0x0abf10de
-#define ATA_NFORCE_MCP89_A0     0x0d8410de
-#define ATA_NFORCE_MCP89_A1     0x0d8510de
-#define ATA_NFORCE_MCP89_A2     0x0d8610de
-#define ATA_NFORCE_MCP89_A3     0x0d8710de
-#define ATA_NFORCE_MCP89_A4     0x0d8810de
-#define ATA_NFORCE_MCP89_A5     0x0d8910de
-#define ATA_NFORCE_MCP89_A6     0x0d8a10de
-#define ATA_NFORCE_MCP89_A7     0x0d8b10de
-#define ATA_NFORCE_MCP89_A8     0x0d8c10de
-#define ATA_NFORCE_MCP89_A9     0x0d8d10de
-#define ATA_NFORCE_MCP89_AA     0x0d8e10de
-#define ATA_NFORCE_MCP89_AB     0x0d8f10de
-
-#define ATA_PROMISE_ID         0x105a
-#define ATA_PDC20246           0x4d33105a
-#define ATA_PDC20262           0x4d38105a
-#define ATA_PDC20263           0x0d38105a
-#define ATA_PDC20265           0x0d30105a
-#define ATA_PDC20267           0x4d30105a
-#define ATA_PDC20268           0x4d68105a
-#define ATA_PDC20269           0x4d69105a
-#define ATA_PDC20270           0x6268105a
-#define ATA_PDC20271           0x6269105a
-#define ATA_PDC20275           0x1275105a
-#define ATA_PDC20276           0x5275105a
-#define ATA_PDC20277           0x7275105a
-#define ATA_PDC20318           0x3318105a
-#define ATA_PDC20319           0x3319105a
-#define ATA_PDC20371           0x3371105a
-#define ATA_PDC20375           0x3375105a
-#define ATA_PDC20376           0x3376105a
-#define ATA_PDC20377           0x3377105a
-#define ATA_PDC20378           0x3373105a
-#define ATA_PDC20379           0x3372105a
-#define ATA_PDC20571            0x3571105a
-#define ATA_PDC20575            0x3d75105a
-#define ATA_PDC20579            0x3574105a
-#define ATA_PDC20771            0x3570105a
-#define ATA_PDC40518            0x3d18105a
-#define ATA_PDC40519            0x3519105a
-#define ATA_PDC40718            0x3d17105a
-#define ATA_PDC40719            0x3515105a
-#define ATA_PDC40775            0x3d73105a
-#define ATA_PDC40779            0x3577105a
-#define ATA_PDC20617           0x6617105a
-#define ATA_PDC20618           0x6626105a
-#define ATA_PDC20619           0x6629105a
-#define ATA_PDC20620           0x6620105a
-#define ATA_PDC20621           0x6621105a
-#define ATA_PDC20622           0x6622105a
-#define ATA_PDC20624            0x6624105a
-#define ATA_PDC81518            0x8002105a
-
-#define ATA_SERVERWORKS_ID     0x1166
-#define ATA_ROSB4_ISA          0x02001166
-#define ATA_ROSB4              0x02111166
-#define ATA_CSB5               0x02121166
-#define ATA_CSB6               0x02131166
-#define ATA_CSB6_1             0x02171166
-#define ATA_HT1000              0x02141166
-#define ATA_HT1000_S1           0x024b1166
-#define ATA_HT1000_S2           0x024a1166
-#define ATA_K2                 0x02401166
-#define ATA_FRODO4             0x02411166
-#define ATA_FRODO8             0x02421166
-
-#define ATA_SILICON_IMAGE_ID   0x1095
-#define ATA_SII3114            0x31141095
-#define ATA_SII3512            0x35121095
-#define ATA_SII3112            0x31121095
-#define ATA_SII3112_1          0x02401095
-#define ATA_SII3124            0x31241095
-#define ATA_SII3132            0x31321095
-#define ATA_SII3132_1          0x02421095
-#define ATA_SII3132_2          0x02441095
-#define ATA_SII0680            0x06801095
-#define ATA_CMD646             0x06461095
-#define ATA_CMD648             0x06481095
-#define ATA_CMD649             0x06491095
-
-#define ATA_SIS_ID             0x1039
-#define ATA_SISSOUTH           0x00081039
-#define ATA_SIS5511            0x55111039
-#define ATA_SIS5513            0x55131039
-#define ATA_SIS5517            0x55171039
-#define ATA_SIS5518            0x55181039
-#define ATA_SIS5571            0x55711039
-#define ATA_SIS5591            0x55911039
-#define ATA_SIS5596            0x55961039
-#define ATA_SIS5597            0x55971039
-#define ATA_SIS5598            0x55981039
-#define ATA_SIS5600            0x56001039
-#define ATA_SIS530             0x05301039
-#define ATA_SIS540             0x05401039
-#define ATA_SIS550             0x05501039
-#define ATA_SIS620             0x06201039
-#define ATA_SIS630             0x06301039
-#define ATA_SIS635             0x06351039
-#define ATA_SIS633             0x06331039
-#define ATA_SIS640             0x06401039
-#define ATA_SIS645             0x06451039
-#define ATA_SIS646             0x06461039
-#define ATA_SIS648             0x06481039
-#define ATA_SIS650             0x06501039
-#define ATA_SIS651             0x06511039
-#define ATA_SIS652             0x06521039
-#define ATA_SIS655             0x06551039
-#define ATA_SIS658             0x06581039
-#define ATA_SIS661             0x06611039
-#define ATA_SIS730             0x07301039
-#define ATA_SIS733             0x07331039
-#define ATA_SIS735             0x07351039
-#define ATA_SIS740             0x07401039
-#define ATA_SIS745             0x07451039
-#define ATA_SIS746             0x07461039
-#define ATA_SIS748             0x07481039
-#define ATA_SIS750             0x07501039
-#define ATA_SIS751             0x07511039
-#define ATA_SIS752             0x07521039
-#define ATA_SIS755             0x07551039
-#define ATA_SIS961             0x09611039
-#define ATA_SIS962             0x09621039
-#define ATA_SIS963             0x09631039
-#define ATA_SIS964             0x09641039
-#define ATA_SIS965              0x09651039
-#define ATA_SIS964_1           0x01801039
-#define ATA_SIS180              0x01801039
-#define ATA_SIS181              0x01811039
-#define ATA_SIS182              0x01821039
-
-#define ATA_VIA_ID             0x1106
-#define ATA_VIA82C571          0x05711106
-#define ATA_VIA82C586          0x05861106
-#define ATA_VIA82C596          0x05961106
-#define ATA_VIA82C686          0x06861106
-#define ATA_VIA8231            0x82311106
-#define ATA_VIA8233            0x30741106
-#define ATA_VIA8233A           0x31471106
-#define ATA_VIA8233C           0x31091106
-#define ATA_VIA8235            0x31771106
-#define ATA_VIA8237            0x32271106
-#define ATA_VIA8237A            0x05911106
-#define ATA_VIA8237S           0x53371106
-#define ATA_VIA8237_5372       0x53721106
-#define ATA_VIA8237_7372       0x73721106
-#define ATA_VIA8251             0x33491106
-#define ATA_VIA8361            0x31121106
-#define ATA_VIA8363            0x03051106
-#define ATA_VIA8371            0x03911106
-#define ATA_VIA8662            0x31021106
-#define ATA_VIA6410            0x31641106
-#define ATA_VIA6420            0x31491106
-#define ATA_VIA6421             0x32491106
-
-#define ATA_VIACX700IDE         0x05811106
-#define ATA_VIACX700            0x83241106
-#define ATA_VIASATAIDE          0x53241106
-#define ATA_VIAVX800            0x83531106
-#define ATA_VIASATAIDE2         0xc4091106
-#define ATA_VIAVX855            0x84091106
-#define ATA_VIASATAIDE3         0x90011106
-#define ATA_VIAVX900            0x84101106
-
-#define ATA_ITE_ID             0x1283
-#define ATA_IT8172G            0x81721283
-#define ATA_IT8211F             0x82111283
-#define ATA_IT8212F             0x82121283
-#define ATA_IT8213F             0x82131283
-
-#define ATA_OPTI_ID             0x1045
-#define ATA_OPTI82C621          0xc6211045
-#define ATA_OPTI82C625          0xd5681045
-
-#define ATA_HINT_ID            0x3388
-#define ATA_HINTEIDE_ID                0x80133388
-
-/* chipset setup related defines          */
-/* Used in HW_DEVICE_EXTENSION.InitMethod */
-
-#define CHIPTYPE_MASK   0x000000ff
-#define CHIPFLAG_MASK   0xffffff00
-
-#define UNIATA_RAID_CONTROLLER  0x80000000
-#define UNIATA_SIMPLEX_ONLY     0x40000000
-#define UNIATA_NO_SLAVE         0x20000000
-#define UNIATA_SATA             0x10000000
-#define UNIATA_NO_DPC           0x08000000
-#define UNIATA_NO_DPC_ATAPI     0x04000000
-#define UNIATA_AHCI             0x02000000
-#define UNIATA_NO80CHK          0x01000000
-
-#define ATPOLD         0x0100
-
-#define ALIOLD         0x0100
-#define ALINEW         0x0200
-
-#define HPT366         0
-#define HPT370         1
-#define HPT372         2
-#define HPT374         3
-#define HPTOLD         0x0100
-
-#define PROLD          0
-#define PRNEW          1
-#define PRTX           2
-#define PRMIO          3
-#define PRTX4          0x0100
-#define PRSX4K         0x0200
-#define PRSX6K         0x0400
-#define PRSATA         0x0800
-#define PRCMBO         0x1000
-#define PRG2           0x2000
-#define PRCMBO2                (PRCMBO | PRG2)
-#define PRSATA2                (PRSATA | PRG2)
-
-#define SWKS33         0
-#define SWKS66         1
-#define SWKS100                2
-#define SWKSMIO                3
-
-#define SIIOLD          0
-#define SIICMD          1
-#define SIIMIO          2
-#define ATI700          3
-
-#define SIIINTR                0x0100
-#define SIIENINTR       0x0200
-#define SII4CH          0x0400
-#define SIISETCLK       0x0800
-#define SIIBUG          0x1000
-#define SIINOSATAIRQ    0x2000
-
-//#define SIS_SOUTH    1
-#define SISSATA                2
-#define SIS133NEW      3
-#define SIS133OLD      4
-#define SIS100NEW      5
-#define SIS100OLD      6
-#define SIS66          7
-#define SIS33          8
-
-#define SIS_BASE        0x0100
-#define SIS_SOUTH       0x0200
-
-#define INTEL_STD       0
-#define INTEL_IDX       1
-
-#define ICH4_FIX        0x0100
-#define ICH5            0x0200
-#define I6CH            0x0400
-#define I6CH2           0x0800
-//#define I1CH            0x1000  // obsolete
-#define ICH7            0x1000
-
-#define NV4OFF          0x0100
-#define NVQ             0x0200
-
-#define VIA33          4
-#define VIA66          1
-#define VIA100         2
-#define VIA133         3
-#define AMDNVIDIA      0
-#define AMDCABLE       0x0100
-#define AMDBUG         0x0200
-#define VIABAR         0x0400
-#define VIACLK         0x0800
-#define VIABUG         0x1000
-#define VIASOUTH       0x2000
-#define VIAAST         0x4000
-#define VIAPRQ         0x8000
-#define VIASATA         0x10000
-
-#define CYRIX_OLD       0
-#define CYRIX_3x        1
-#define CYRIX_NEW       2
-#define CYRIX_35        3
-
-#define ITE_33          0
-#define ITE_133         1
-#define ITE_133_NEW     2
-
-#ifdef USER_MODE
-  #define PCI_DEV_HW_SPEC_BM(idhi, idlo, rev, mode, name, flags) \
-    { (PVEN_STR) #idlo, 4, 0x##idlo, (PVEN_STR) #idhi, 4, 0x##idhi, rev, mode, (PVEN_STR)name, flags}
-#else
-  #define PCI_DEV_HW_SPEC_BM(idhi, idlo, rev, mode, name, flags) \
-    { (PVEN_STR) #idlo, 4, 0x##idlo, (PVEN_STR) #idhi, 4, 0x##idhi, rev, mode, NULL, flags}
-#endif
-
-#define BMLIST_TERMINATOR   (0xffffffffL)
-
-BUSMASTER_CONTROLLER_INFORMATION const BusMasterAdapters[] = {
+#include "bm_devs_decl.h"
+
+BUSMASTER_CONTROLLER_INFORMATION_BASE const BusMasterAdapters[] = {
 
     PCI_DEV_HW_SPEC_BM( 0005, 1191, 0x00, ATA_UDMA2, "Acard ATP850"     , ATPOLD | UNIATA_SIMPLEX_ONLY            ),
     PCI_DEV_HW_SPEC_BM( 0006, 1191, 0x00, ATA_UDMA4, "Acard ATP860A"    , UNIATA_NO80CHK                          ),
@@ -777,7 +97,7 @@ BUSMASTER_CONTROLLER_INFORMATION const BusMasterAdapters[] = {
     PCI_DEV_HW_SPEC_BM( 0007, 1103, 0x01, ATA_UDMA6, "HighPoint HPT371" , HPT372 | 0x00   | UNIATA_RAID_CONTROLLER),
     PCI_DEV_HW_SPEC_BM( 0008, 1103, 0x07, ATA_UDMA6, "HighPoint HPT374" , HPT374 | 0x00   | UNIATA_RAID_CONTROLLER),
 
-    PCI_DEV_HW_SPEC_BM( 1230, 8086, 0x00, ATA_WDMA2, "Intel PIIX"       , 0                                       ),
+    PCI_DEV_HW_SPEC_BM( 1230, 8086, 0x00, ATA_WDMA2, "Intel PIIX"       , UNIATA_CHAN_TIMINGS                     ),
     PCI_DEV_HW_SPEC_BM( 7010, 8086, 0x00, ATA_WDMA2, "Intel PIIX3"      , 0                                       ),
     PCI_DEV_HW_SPEC_BM( 7111, 8086, 0x00, ATA_UDMA2, "Intel PIIX3"      , 0                                       ),
     PCI_DEV_HW_SPEC_BM( 7199, 8086, 0x00, ATA_UDMA2, "Intel PIIX4"      , 0                                       ),
@@ -1233,50 +553,4 @@ BUSMASTER_CONTROLLER_INFORMATION const BusMasterAdapters[] = {
     PCI_DEV_HW_SPEC_BM( ffff, ffff, 0xff, BMLIST_TERMINATOR, NULL       , BMLIST_TERMINATOR )
 };
 
-#define NUM_BUSMASTER_ADAPTERS (sizeof(BusMasterAdapters) / sizeof(BUSMASTER_CONTROLLER_INFORMATION))
-
-/*
-    Looks for device with specified Device/Vendor and Revision
-    in specified device list and returnts its index.
-    If no matching record found, -1 is returned
-*/
-__inline
-ULONG
-Ata_is_dev_listed(
-    PBUSMASTER_CONTROLLER_INFORMATION BusMasterAdapters,
-    ULONG VendorId,
-    ULONG DeviceId,
-    ULONG RevId, // min suitable revision
-    ULONG lim
-    )
-{
-    for(ULONG k=0; k<lim; k++) {
-        if(BusMasterAdapters[k].nVendorId == 0xffff &&
-           BusMasterAdapters[k].nDeviceId == 0xffff &&
-           BusMasterAdapters[k].nRevId    == 0xff) {
-            if(lim != BMLIST_TERMINATOR)
-                continue;
-            return BMLIST_TERMINATOR;
-        }
-        if(BusMasterAdapters[k].nVendorId == VendorId &&
-           (BusMasterAdapters[k].nDeviceId == DeviceId || DeviceId == 0xffff) &&
-           (!RevId || BusMasterAdapters[k].nRevId <= RevId) )
-            return k;
-    }
-    return BMLIST_TERMINATOR;
-}
-
-#define Ata_is_supported_dev(pciData) \
-    ((pciData)->BaseClass == PCI_DEV_CLASS_STORAGE && \
-     (pciData)->SubClass == PCI_DEV_SUBCLASS_IDE)
-
-#define Ata_is_ahci_dev(pciData) \
-    ((pciData)->BaseClass == PCI_DEV_CLASS_STORAGE && \
-     (pciData)->SubClass == PCI_DEV_SUBCLASS_SATA && \
-     (pciData)->ProgIf == PCI_DEV_PROGIF_AHCI_1_0 && \
-     ((pciData)->u.type0.BaseAddresses[5] & ~0x7))
-
-
-#pragma pack(pop)
-
-#endif //__IDE_BUSMASTER_H__
+const ULONG _NUM_BUSMASTER_ADAPTERS = (sizeof(BusMasterAdapters) / sizeof(BUSMASTER_CONTROLLER_INFORMATION_BASE));