24#define PCI_DEV_PIIX_82371FB 0x1230
25#define PCI_DEV_MPIIX_82371MX 0x1234
27#define PCI_DEV_PIIX3_82371SB 0x7010
29#define PCI_DEV_PIIX4_82371AB 0x7111
30#define PCI_DEV_PIIX4E_82372FB 0x7601
31#define PCI_DEV_PIIX4E_82443MX 0x7199
32#define PCI_DEV_PIIX4E_82451NX 0x84CA
34#define PCI_DEV_ICH_82801AA 0x2411
36#define PCI_DEV_ICH0_82801AB 0x2421
38#define PCI_DEV_ICH2_82801BAM 0x244A
39#define PCI_DEV_ICH2_82801BA 0x244B
41#define PCI_DEV_C_ICH_82801E 0x245B
43#define PCI_DEV_ICH3_M_82801CAM 0x248A
44#define PCI_DEV_ICH3_S_82801CA 0x248B
46#define PCI_DEV_ICH4_L_82801DBL 0x24C1
47#define PCI_DEV_ICH4_M_82801DBM 0x24CA
48#define PCI_DEV_ICH4_82801DB 0x24CB
50#define PCI_DEV_ICH5_82801EB_SATA 0x24D1
51#define PCI_DEV_ICH5_82801EB_IDE 0x24DB
52#define PCI_DEV_ICH5_R_82801ER 0x24DF
53#define PCI_DEV_ICH5_6300ESB_IDE 0x25A2
54#define PCI_DEV_ICH5_6300ESB_SATA 0x25A3
55#define PCI_DEV_ICH5_6300ESB_RAID 0x25B0
57#define PCI_DEV_ICH6_82801FB_SATA 0x2651
58#define PCI_DEV_ICH6_R_82801FB 0x2652
59#define PCI_DEV_ICH6_M_82801FBM 0x2653
60#define PCI_DEV_ICH6_82801FB_IDE 0x266F
62#define PCI_DEV_ESB2_63XXESB 0x2680
64#define PCI_DEV_ICH7_6321ESB 0x269E
65#define PCI_DEV_ICH7_82801GB 0x27C0
66#define PCI_DEV_ICH7_M_82801GBM 0x27C4
67#define PCI_DEV_ICH7_82801G 0x27DF
69#define PCI_DEV_ICH8_82801H 0x2820
70#define PCI_DEV_ICH8_R_82801HR 0x2825
71#define PCI_DEV_ICH8_M_82801HM 0x2828
72#define PCI_DEV_ICH8_M_82801HBM 0x2850
74#define PCI_DEV_ICH9_R_82801IR_1 0x2920
75#define PCI_DEV_ICH9_R_82801IR_2 0x2921
76#define PCI_DEV_ICH9_82801I 0x2926
77#define PCI_DEV_ICH9_M_82801IBM_1 0x2928
78#define PCI_DEV_ICH9_M_82801IBM_2 0x292D
79#define PCI_DEV_ICH9_M_82801IBM_3 0x292E
81#define PCI_DEV_ICH10_82801JD_1 0x3A00
82#define PCI_DEV_ICH10_82801JD_2 0x3A06
83#define PCI_DEV_ICH10_82801JI_1 0x3A20
84#define PCI_DEV_ICH10_82801JI_2 0x3A26
86#define PCI_DEV_SCH_ATOM_Z5XX 0x811A
88#define PCI_DEV_EP80579 0x5028
90#define PCI_DEV_PCH_5SERIES_1 0x3B20
91#define PCI_DEV_PCH_5SERIES_2 0x3B21
92#define PCI_DEV_PCH_5SERIES_3 0x3B26
93#define PCI_DEV_PCH_5SERIES_4 0x3B28
94#define PCI_DEV_PCH_5SERIES_5 0x3B2D
95#define PCI_DEV_PCH_5SERIES_6 0x3B2E
97#define PCI_DEV_PCH_6SERIES_1 0x1C00
98#define PCI_DEV_PCH_6SERIES_2 0x1C01
99#define PCI_DEV_PCH_6SERIES_3 0x1C08
100#define PCI_DEV_PCH_6SERIES_4 0x1C09
102#define PCI_DEV_PCH_7SERIES_1 0x1E00
103#define PCI_DEV_PCH_7SERIES_2 0x1E01
104#define PCI_DEV_PCH_7SERIES_3 0x1E08
105#define PCI_DEV_PCH_7SERIES_4 0x1E09
107#define PCI_DEV_PCH_X79_1 0x1D00
108#define PCI_DEV_PCH_X79_2 0x1D08
110#define PCI_DEV_PCH_8900_1 0x2326
111#define PCI_DEV_PCH_8900_2 0x23A6
113#define PCI_DEV_ATOM_C2000_1 0x1F20
114#define PCI_DEV_ATOM_C2000_2 0x1F21
115#define PCI_DEV_ATOM_C2000_3 0x1F30
116#define PCI_DEV_ATOM_C2000_4 0x1F31
118#define PCI_DEV_PCH_8SERIES_1 0x8C00
119#define PCI_DEV_PCH_8SERIES_2 0x8C01
120#define PCI_DEV_PCH_8SERIES_3 0x8C08
121#define PCI_DEV_PCH_8SERIES_4 0x8C09
122#define PCI_DEV_PCH_8SERIES_5 0x9C00
123#define PCI_DEV_PCH_8SERIES_6 0x9C01
124#define PCI_DEV_PCH_8SERIES_7 0x9C08
125#define PCI_DEV_PCH_8SERIES_8 0x9C09
127#define PCI_DEV_ATOM_E3800_1 0x0F20
128#define PCI_DEV_ATOM_E3800_2 0x0F21
130#define PCI_DEV_PCH_X99_1 0x8D00
131#define PCI_DEV_PCH_X99_2 0x8D08
132#define PCI_DEV_PCH_X99_3 0x8D60
133#define PCI_DEV_PCH_X99_4 0x8D68
135#define PCI_DEV_PCH_9SERIES_1 0x8C80
136#define PCI_DEV_PCH_9SERIES_2 0x8C81
137#define PCI_DEV_PCH_9SERIES_3 0x8C88
138#define PCI_DEV_PCH_9SERIES_4 0x8C89
140#define PCI_DEV_BRIDGE_450KX 0x84C4
141#define PCI_DEV_BRIDGE_450NX 0x84CB
143#define BRIDGE_450KX_REV_B0 0x04
145#define BRIDGE_450NX_REV_B0 0x00
146#define BRIDGE_450NX_REV_B1 0x02
147#define BRIDGE_450NX_REV_C0 0x04
152#define PXB_REG_CONFIG 0x40
154#define PXB_CONFIG_BUF_RESTREAM 0x0040
155#define PXB_CONFIG_PCI_BUS_LOCK 0x4000
163#define PIIX_REG_IDETIM(Channel) (0x40 + ((Channel) * 2))
164#define MPIIX_REG_IDETIM 0x6C
166#define PIIX_IDETIM_TIME(Drive) (0x0001 << (4 * (Drive)))
167#define PIIX_IDETIM_IE(Drive) (0x0002 << (4 * (Drive)))
168#define PIIX_IDETIM_PPE(Drive) (0x0004 << (4 * (Drive)))
169#define PIIX_IDETIM_DTE(Drive) (0x0008 << (4 * (Drive)))
171#define PIIX_IDETIM_RCT_MASK 0x0300
172#define PIIX_IDETIM_RSV_MASK 0x0C00
173#define PIIX_IDETIM_ISP_MASK 0x3000
174#define PIIX_IDETIM_SITRE 0x4000
175#define PIIX_IDETIM_SECONDARY 0x4000
176#define PIIX_IDETIM_IDE 0x8000
178#define PIIX_IDETIM_RCT(Value) ((Value) << 8)
179#define PIIX_IDETIM_ISP(Value) ((Value) << 12)
180#define PIIX_IDETIM_SETTINGS(Drive, Value) ((Value) << (4 * (Drive)))
185#define PIIX_REG_SIDETIM 0x44
187#define PIIX_SIDETIM_ISPRCT_MASK(Channel) (0x0F << ((Channel) * 4))
188#define PIIX_SIDETIM_RCT(Channel, Value) ((Value) << ((Channel) * 4))
189#define PIIX_SIDETIM_ISP(Channel, Value) ((Value) << (((Channel) * 4) + 2))
194#define PIIX_REG_UDMACTL 0x48
196#define PIIX_UDMACTL_EN_MASK(Channel) (0x03 << ((Channel) * 2))
199#define PIIX_UDMACTL_EN(Channel, Drive) (0x01 << ((Channel) * 2 + (Drive)))
206#define PIIX_REG_UDMATIM(Channel) (0x4A + (Channel))
208#define PIIX_UDMATIM_CT_MASK 0x33
211#define PIIX_UDMATIM_CT(Drive, Value) ((Value) << ((Drive) * 4))
216#define PIIX_REG_CONFIG 0x54
218#define PIIX_CONFIG_KEEP_MASK 0x0FF0
221#define PIIX_CONFIG_CR(Channel) (0x0030 << ((Channel) * 2))
223#define PIIX_CONFIG_CLOCK_UDMA66(Channel, Drive) (0x0001 << (((Channel) * 2) + Drive))
225#define PIIX_CONFIG_CLOCK_UDMA100(Channel, Drive) (0x1000 << (((Channel) * 2) + Drive))
227#define PIIX_CONFIG_WR_PING_PONG 0x0400
232#define SCH_REG_DTIM(Drive) (0x80 + (Drive) * 4)
234#define SCH_DTIM_PM_MASK 0x00000007
235#define SCH_DTIM_MDM_MASK 0x00000300
236#define SCH_DTIM_UDM_MASK 0x00070000
237#define SCH_DTIM_PPE 0x40000000
238#define SCH_DTIM_USD 0x80000000
240#define SCH_DTIM_PM(Mode) (Mode)
241#define SCH_DTIM_MDM(Mode) ((Mode) << 8)
242#define SCH_DTIM_UDM(Mode) ((Mode) << 16)
244#define HW_FLAGS_TYPE_MASK 0x000F
245#define HW_FLAGS_DISABLE_DMA 0x0010
246#define HW_FLAGS_HAS_CFG_REG 0x0080
247#define HW_FLAGS_HAS_UDMA_REG 0x8000
256#define TYPE_PIIX4 (3 | HW_FLAGS_HAS_UDMA_REG)
257#define TYPE_ICH (4 | HW_FLAGS_HAS_UDMA_REG | HW_FLAGS_HAS_CFG_REG)
368 { 0x41, 0x80, 0x80 },
369 { 0x43, 0x80, 0x80 },
375 { 0x6D, 0xC0, 0x80 },
376 { 0x6D, 0xC0, 0xC0 },
459 ULONG MinimumCycleTime, TimingMode;
467 MinimumCycleTime =
Device->MinMwDmaCycleTime;
469 MinimumCycleTime =
Device->MinSwDmaCycleTime;
479 WARN(
"CH %lu: Too slow device '%s', disabling DMA\n",
Channel,
Device->FriendlyName);
494 USHORT IdeTimReg, IdeConfigReg;
495 UCHAR IdeSlaveTimReg, IdeUdmaCtrlReg, IdeUdmaTimReg;
514 INFO(
"CH %lu: Config (before)\n"
520 Channel, IdeTimReg, IdeSlaveTimReg, IdeUdmaCtrlReg, IdeUdmaTimReg, IdeConfigReg);
524 IdeSlaveTimReg &= ~PIIX_SIDETIM_ISPRCT_MASK(
Channel);
525 IdeUdmaCtrlReg &= ~PIIX_UDMACTL_EN_MASK(
Channel);
526 IdeUdmaTimReg &= ~PIIX_UDMATIM_CT_MASK;
539 TimingMode =
Device->PioMode;
562 if (TimingMode < Device->PioMode)
611 INFO(
"CH %lu: Config (after)\n"
617 Channel, IdeTimReg, IdeSlaveTimReg, IdeUdmaCtrlReg, IdeUdmaTimReg, IdeConfigReg);
632 ULONG DeviceTimingReg;
677 TRACE(
"CH %lu: IDETIM %04X\n", ChanData->Channel, NewTimingReg);
757 INFO(
"CH %lu: Drive #%lu PIO:%04X DMA:04X\n",
789 WARN(
"Enabling workaround for the 450KX #2\n");
801 WARN(
"Enabling workaround for the 450NX #19\n");
811 INFO(
"PXB CFG: %04X\n", ConfigReg);
817 WARN(
"Enabling workaround for the 450NX #20\n");
825 WARN(
"Enabling workaround for the 450NX #25\n");
845 switch (ControllerInfo->Type)
877 switch (ControllerInfo->Type)
901 if (Controller->Pci.RevisionID == 0)
908 SupportedMode &= ~UDMA_MODE5;
922 INFO(
"CH %lu: BIOS detected 40-conductor cable\n", ChanData->Channel);
923 SupportedMode &= ~UDMA_80C_ALL;
931 ULONG DeviceTimingReg[2];
940 INFO(
"CH %lu: BIOS hasn't selected mode faster than UDMA 2, "
941 "assume 40-conductor cable\n",
943 SupportedMode &= ~UDMA_80C_ALL;
953 ERR(
"CH %lu: PMR %02X PCS %04X\n",
964 ChanData->TransferModeSupported = SupportedMode;
983 if (Controller->Pci.DeviceID == ControllerInfo->
DeviceID)
992 Controller->MaxChannels = 1;
1003 switch (ControllerInfo->
Type)
1010 Controller->Flags &= ~CTRL_FLAG_NATIVE_PCI;
1030 HwFlags = ControllerInfo->
Type;
1035 for (
i = 0;
i < Controller->MaxChannels; ++
i)
1044 ChanData->TransferModeSupported &=
PIO_ALL;
#define REQUEST_FLAG_PROGRAM_DMA
#define NT_SUCCESS(StatCode)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
ULONG NTAPI HalGetBusDataByOffset(IN BUS_DATA_TYPE BusDataType, IN ULONG BusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
#define PCI_DEV_ICH5_R_82801ER
#define PCI_DEV_ICH2_82801BA
#define PCI_DEV_PCH_5SERIES_1
#define PIIX_CONFIG_WR_PING_PONG
#define PCI_DEV_ICH5_6300ESB_SATA
#define PIIX_CONFIG_KEEP_MASK
#define PCI_DEV_ICH6_82801FB_IDE
#define PCI_DEV_PCH_5SERIES_2
#define PCI_DEV_PCH_X99_1
#define PCI_DEV_ICH7_82801GB
#define PCI_DEV_ICH3_M_82801CAM
#define PIIX_REG_UDMATIM(Channel)
#define SCH_DTIM_UDM_MASK
#define PCI_DEV_ICH4_L_82801DBL
#define PIIX_SIDETIM_ISP(Channel, Value)
static VOID IntelInitChannel(_In_ PATA_CONTROLLER Controller, _In_ const INTEL_CONTROLLER_INFO *ControllerInfo, _In_ PCHANNEL_DATA_PATA ChanData)
#define PCI_DEV_ICH8_R_82801HR
#define PCI_DEV_ICH9_R_82801IR_1
#define SCH_DTIM_UDM(Mode)
#define PCI_DEV_PCH_X79_1
#define PIIX_IDETIM_SITRE
#define PCI_DEV_PCH_5SERIES_6
static const ULONG IntelTimingModeToCycleTime[5]
#define PCI_DEV_ICH9_M_82801IBM_1
#define BRIDGE_450NX_REV_B0
#define PCI_DEV_BRIDGE_450NX
static BOOLEAN IntelPciBridgeErrataMatch(_In_ PVOID Context, _In_ ULONG BusNumber, _In_ PCI_SLOT_NUMBER PciSlot, _In_ PPCI_COMMON_HEADER PciConfig)
#define SCH_REG_DTIM(Drive)
#define PCI_DEV_ICH9_M_82801IBM_2
static PCIIDEX_PAGED_DATA const ATA_PCI_ENABLE_BITS IntelPiixEnableBits[MAX_IDE_CHANNEL]
#define PXB_CONFIG_PCI_BUS_LOCK
#define PCI_DEV_PIIX4E_82372FB
#define PCI_DEV_ATOM_E3800_1
#define PCI_DEV_PCH_X99_2
static VOID IntelSchSetTransferMode(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel, _In_reads_(MAX_IDE_DEVICE) PCHANNEL_DEVICE_CONFIG *DeviceList)
#define PCI_DEV_PIIX4E_82451NX
#define PCI_DEV_ICH8_M_82801HBM
#define PCI_DEV_PCH_6SERIES_4
#define PIIX_IDETIM_TIME(Drive)
#define PCI_DEV_PCH_8SERIES_1
#define HW_FLAGS_HAS_UDMA_REG
#define PIIX_IDETIM_DTE(Drive)
static const ULONG IntelDmaModeToTimingMode[]
#define PIIX_IDETIM_RCT(Value)
#define PIIX_IDETIM_SETTINGS(Drive, Value)
#define PCI_DEV_PCH_5SERIES_3
#define PIIX_IDETIM_ISP(Value)
#define PCI_DEV_ICH10_82801JD_2
static const UCHAR IntelModeSettings[]
#define PCI_DEV_PCH_8SERIES_8
#define PCI_DEV_PCH_7SERIES_1
#define PCI_DEV_ICH6_M_82801FBM
#define BRIDGE_450NX_REV_C0
#define PCI_DEV_PCH_9SERIES_4
#define HW_FLAGS_HAS_CFG_REG
#define PCI_DEV_BRIDGE_450KX
#define PCI_DEV_PCH_8900_1
static const UCHAR IntelUdmaSettings[]
#define PCI_DEV_ATOM_E3800_2
#define PIIX_CONFIG_CLOCK_UDMA66(Channel, Drive)
#define PCI_DEV_ICH_82801AA
static PCIIDEX_PAGED_DATA const ATA_PCI_ENABLE_BITS IntelMpiixEnableBits[MAX_IDE_CHANNEL]
#define PCI_DEV_ICH5_6300ESB_RAID
#define PCI_DEV_PCH_9SERIES_1
#define PCI_DEV_PCH_6SERIES_3
#define PCI_DEV_ICH5_82801EB_IDE
NTSTATUS IntelGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
#define PCI_DEV_PCH_8SERIES_3
#define PCI_DEV_PCH_5SERIES_5
#define PCI_DEV_ICH7_M_82801GBM
#define PCI_DEV_PCH_6SERIES_1
#define PCI_DEV_ICH4_82801DB
#define PCI_DEV_ICH5_82801EB_SATA
static VOID IntelPiixLegacySetTransferMode(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel, _In_reads_(MAX_IDE_DEVICE) PCHANNEL_DEVICE_CONFIG *DeviceList)
#define PCI_DEV_SCH_ATOM_Z5XX
#define BRIDGE_450NX_REV_B1
#define PCI_DEV_PCH_7SERIES_2
#define PCI_DEV_ICH10_82801JD_1
#define PCI_DEV_ICH10_82801JI_1
struct _INTEL_CONTROLLER_INFO * PINTEL_CONTROLLER_INFO
#define PCI_DEV_ICH9_R_82801IR_2
#define PIIX_IDETIM_IE(Drive)
static VOID IntelPiixSetTransferMode(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel, _In_reads_(MAX_IDE_DEVICE) PCHANNEL_DEVICE_CONFIG *DeviceList)
#define SCH_DTIM_PM(Mode)
#define PXB_CONFIG_BUF_RESTREAM
#define PIIX_IDETIM_RSV_MASK
#define PCI_DEV_ICH0_82801AB
#define HW_FLAGS_DISABLE_DMA
struct _INTEL_HW_EXTENSION * PINTEL_HW_EXTENSION
#define PCI_DEV_ICH7_82801G
#define PCI_DEV_PCH_X99_4
#define SCH_DTIM_MDM_MASK
#define PCI_DEV_PIIX4_82371AB
static VOID IntelPiixChooseDeviceSpeed(_In_ ULONG Channel, _In_ PCHANNEL_DEVICE_CONFIG Device)
#define PIIX_UDMATIM_CT(Drive, Value)
#define PCI_DEV_ICH6_R_82801FB
#define PCI_DEV_PCH_8SERIES_5
#define PCI_DEV_PCH_8900_2
#define PCI_DEV_PCH_6SERIES_2
struct _INTEL_CONTROLLER_INFO INTEL_CONTROLLER_INFO
static USHORT IntelPiixLegacyComputeIdeTiming(_In_ PCHANNEL_DEVICE_CONFIG Device, _In_ ULONG Number, _In_ ULONG Mode)
#define PCI_DEV_ICH8_82801H
#define PIIX_REG_IDETIM(Channel)
static const UCHAR IntelClockSettings[5][2]
static PCIIDEX_PAGED_DATA const INTEL_CONTROLLER_INFO IntelControllerList[]
#define PCI_DEV_PIIX4E_82443MX
#define PCI_DEV_PCH_7SERIES_4
#define PCI_DEV_PCH_X79_2
#define PIIX_UDMACTL_EN(Channel, Drive)
#define PIIX_IDETIM_PPE(Drive)
#define PCI_DEV_PCH_8SERIES_7
#define PCI_DEV_ICH10_82801JI_2
#define PCI_DEV_ATOM_C2000_1
#define PCI_DEV_ICH9_M_82801IBM_3
#define PCI_DEV_ESB2_63XXESB
#define PCI_DEV_ICH9_82801I
#define PCI_DEV_PCH_8SERIES_6
#define PCI_DEV_ATOM_C2000_2
#define PIIX_CONFIG_CLOCK_UDMA100(Channel, Drive)
static VOID IntelPiixLegacyPrepareIo(_In_ PVOID ChannelContext, _In_ PATA_DEVICE_REQUEST Request)
#define PIIX_CONFIG_CR(Channel)
#define PCI_DEV_PCH_5SERIES_4
#define PCI_DEV_ATOM_C2000_4
#define PCI_DEV_PCH_9SERIES_3
#define PCI_DEV_PIIX3_82371SB
#define BRIDGE_450KX_REV_B0
#define PCI_DEV_ICH6_82801FB_SATA
#define PCI_DEV_PCH_7SERIES_3
#define PCI_DEV_MPIIX_82371MX
#define PCI_DEV_ATOM_C2000_3
#define PCI_DEV_PCH_X99_3
#define PCI_DEV_ICH2_82801BAM
#define PCI_DEV_PCH_9SERIES_2
#define SCH_DTIM_MDM(Mode)
#define PCI_DEV_PIIX_82371FB
#define PCI_DEV_ICH3_S_82801CA
#define PCI_DEV_ICH4_M_82801DBM
#define PCI_DEV_C_ICH_82801E
#define PCI_DEV_ICH5_6300ESB_IDE
#define PCI_DEV_ICH7_6321ESB
#define PIIX_SIDETIM_RCT(Channel, Value)
#define PCI_DEV_ICH8_M_82801HM
struct _INTEL_HW_EXTENSION INTEL_HW_EXTENSION
#define PCI_DEV_PCH_8SERIES_2
#define PCI_DEV_PCH_8SERIES_4
#define UNREFERENCED_PARAMETER(P)
#define UDMA_MODES(MinMode, MaxMode)
#define MWDMA_MODES(MinMode, MaxMode)
NTSTATUS PciIdeCreateChannelData(_In_ PATA_CONTROLLER Controller, _In_ ULONG HwExtensionSize)
VOID PciRead(_In_ PATA_CONTROLLER Controller, _Out_writes_bytes_all_(BufferLength) PVOID Buffer, _In_ ULONG ConfigDataOffset, _In_ ULONG BufferLength)
BOOLEAN PciFindDevice(_In_ __callback PATA_PCI_MATCH_FN MatchFunction, _In_ PVOID Context)
CHANNEL_PREPARE_IO PataPrepareIo
FORCEINLINE UCHAR PciRead8(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
_In_ ULONG _In_ PCI_SLOT_NUMBER PciSlot
#define DEV_NUMBER(Device)
#define PCIIDEX_PAGED_DATA
FORCEINLINE VOID PciWrite16(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset, _In_ USHORT Value)
FORCEINLINE VOID PciWrite8(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset, _In_ UCHAR Value)
FORCEINLINE VOID PciWrite32(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset, _In_ ULONG Value)
FORCEINLINE USHORT PciRead16(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
#define CTRL_FLAG_DMA_INTERRUPT
CHANNEL_SET_MODE_EX SataSetTransferMode
_In_ ULONG _In_ PCI_SLOT_NUMBER _In_ PPCI_COMMON_HEADER PciConfig
FORCEINLINE ULONG PciRead32(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
PUCHAR HwExt[ANYSIZE_ARRAY]
struct _INTEL_HW_EXTENSION::@1173 Device[MAX_IDE_DEVICE]
union _PCI_SLOT_NUMBER::@4410 u
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index