19#define PCI_DEV_HPT366 0x0004
20#define PCI_DEV_HPT372 0x0005
21#define PCI_DEV_HPT302 0x0006
22#define PCI_DEV_HPT371 0x0007
23#define PCI_DEV_HPT374 0x0008
24#define PCI_DEV_HPT372N 0x0009
31#define GET_TYPE(Flags) ((Flags) & HW_FLAGS_TYPE_MASK)
33#define HW_FLAGS_TYPE_MASK 0x03
34#define HW_FLAGS_SINGLE_CHAN 0x04
35#define HW_FLAGS_UDMA4 0x08
36#define HW_FLAGS_UDMA5 0x10
38#define HPT_REG_TIMING(Index) (0x40 + (Index << 2))
40#define HPT366_TIM_DATA_HIGH_CYT_MASK 0x0000000F
41#define HPT366_TIM_DATA_LOW_CYT_MASK 0x000000F0
42#define HPT366_TIM_CMD_HIGH_CYT_MASK 0x00000F00
43#define HPT366_TIM_CMD_LOW_CYT_MASK 0x0000F000
44#define HPT366_TIM_UDMA_CYT_MASK 0x00070000
45#define HPT366_TIM_PRE_HIGH_CYT_MASK 0x00380000
46#define HPT366_TIM_CMD_PRE_HIGH_CYT_MASK 0x01C00000
47#define HPT366_TIM_UDMA_ENABLE 0x10000000
48#define HPT366_TIM_DMA_ENABLE 0x20000000
49#define HPT366_TIM_PIO_MST_ENABLE 0x40000000
50#define HPT366_TIM_PIO_BUFFER_ENABLE 0x80000000
52#define HPT37X_TIM_DATA_HIGH_CYT_MASK 0x0000000F
53#define HPT37X_TIM_DATA_LOW_CYT_MASK 0x000001F0
54#define HPT37X_TIM_CMD_HIGH_CYT_MASK 0x00001E00
55#define HPT37X_TIM_CMD_LOW_CYT_MASK 0x0003E000
56#define HPT37X_TIM_UDMA_CYT_MASK 0x001C0000
57#define HPT37X_TIM_UDMA_DUAL_CLOCK_ENABLE 0x00200000
58#define HPT37X_TIM_PRE_HIGH_CYT_MASK 0x01C00000
59#define HPT37X_TIM_CMD_PRE_HIGH_CYT_MASK 0x0E000000
60#define HPT37X_TIM_UDMA_ENABLE 0x10000000
61#define HPT37X_TIM_DMA_ENABLE 0x20000000
62#define HPT37X_TIM_PIO_MST_ENABLE 0x40000000
63#define HPT37X_TIM_PIO_BUFFER_ENABLE 0x80000000
90 { 0x00d0a7aa, 0x06914e57, 0x0d029d5e, 0x0ac1f48a },
91 { 0x00d0a7a3, 0x06914e43, 0x0d029d26, 0x0ac1f465 },
92 { 0x00d0a753, 0x06514e33, 0x0c829ca6, 0x0a81f454 },
93 { 0x00c8a742, 0x06514e22, 0x0c829c84, 0x0a81f443 },
94 { 0x00c8a731, 0x06514e21, 0x0c829c62, 0x0a81f442 },
96 { 0x20c8a797, 0x26514e97, 0x2c82922e, 0x228082ea },
97 { 0x20c8a732, 0x26514e33, 0x2c829266, 0x22808254 },
98 { 0x20c8a731, 0x26514e21, 0x2c829262, 0x22808242 },
100 { 0x10c8a731, 0x16514e31, 0x1c829c62, 0x121882ea },
101 { 0x10cba731, 0x164d4e31, 0x1c9a9c62, 0x12148254 },
102 { 0x10caa731, 0x16494e31, 0x1c929c62, 0x120c8242 },
103 { 0x10cfa731, 0x166d4e31, 0x1c8e9c62, 0x128c8242 },
104 { 0x10c9a731, 0x16454e31, 0x1c8a9c62, 0x12ac8242 },
105 { 0, 0x16454e31, 0x1c8a9c62, 0x12848242 },
106 { 0, 0, 0x1c869c62, 0x12808242 }
119 { 0x50, 0x04, 0x04 },
120 { 0x54, 0x04, 0x04 },
126 { 0x50, 0x30, 0x30 },
176 if (
Device->SupportedModes & (1 << MinPio))
185 WARN(
"Too slow device '%s', disabling DMA\n",
Device->FriendlyName);
187 INFO(
"Downgrade DMA speed from %lu to %lu\n",
Device->DmaMode,
Mode);
195 return (PioTimings & ~
Mask) | (DmaTimings &
Mask);
219 INFO(
"CH %lu: Dev %lu update timings from %08lx to %08lx\n",
311 return !(CableSelect & (0x02 >>
Channel));
362 ChanData->TransferModeSupported &= ~UDMA_MODE6;
369 INFO(
"CH %lu: BIOS detected 40-conductor cable\n", ChanData->Channel);
370 ChanData->TransferModeSupported &= ~UDMA_80C_ALL;
#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
#define HPT366_TIM_UDMA_CYT_MASK
#define HPT_REG_TIMING(Index)
#define HPT37X_TIM_UDMA_DUAL_CLOCK_ENABLE
#define HPT366_TIM_PIO_MST_ENABLE
static VOID HptControllerStart(_In_ PATA_CONTROLLER Controller)
static ULONG HptChooseTimings(_Inout_ PCHANNEL_DEVICE_CONFIG Device, _In_ ULONG HptType)
NTSTATUS HptGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
static VOID HptSetTransferMode(_In_ PATA_CONTROLLER Controller, _In_ ULONG Channel, _In_reads_(MAX_IDE_DEVICE) PCHANNEL_DEVICE_CONFIG *DeviceList)
#define HPT37X_TIM_PIO_MST_ENABLE
static PCIIDEX_PAGED_DATA const ATA_PCI_ENABLE_BITS Hpt366EnableBits[1]
static const ULONG HptMwDmaToPioMode[]
static PCIIDEX_PAGED_DATA const ATA_PCI_ENABLE_BITS Hpt37xEnableBits[MAX_IDE_CHANNEL]
#define HPT366_TIM_UDMA_ENABLE
#define HW_FLAGS_SINGLE_CHAN
#define HPT37X_TIM_UDMA_CYT_MASK
static BOOLEAN HptHasUdmaCable(_In_ PATA_CONTROLLER Controller, _In_ ULONG HwFlags, _In_ ULONG Channel)
static PCIIDEX_PAGED_DATA const struct @1283 HptControllerList[]
static const ULONG HptTimings[][4]
#define HPT37X_TIM_UDMA_ENABLE
_Must_inspect_result_ _In_ PUCXHUB_DEVICE_CREATE_INFO _Out_ UCXUSBDEVICE * Device
#define PCI_VEN_HIGHPOINT
NTSTATUS PciIdeCreateChannelData(_In_ PATA_CONTROLLER Controller, _In_ ULONG HwExtensionSize)
FORCEINLINE UCHAR PciRead8(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
#define PCIIDEX_PAGED_DATA
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)
#define CTRL_FLAG_DMA_INTERRUPT
FORCEINLINE ULONG PciRead32(_In_ PATA_CONTROLLER Controller, _In_ ULONG ConfigDataOffset)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PUCX_CONTROLLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ UCXCONTROLLER * Controller
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value