19#define PCI_DEV_K2_SATA 0x0240
20#define PCI_DEV_BCM5770_SATA 0x0241
21#define PCI_DEV_BCM5770R_SATA 0x0242
22#define PCI_DEV_HT1000_SATA 0x024A
23#define PCI_DEV_HT1000_SATA_2 0x024B
24#define PCI_DEV_HT1100_SATA 0x0410
25#define PCI_DEV_HT1100_SATA_2 0x0411
27#define SVW_SATA_PORT_BASE_OFFSET 0x100
28#define SVW_SATA_PORT_CONTROL_OFFSET 0x20
29#define SVW_SATA_PORT_DMA_OFFSET 0x30
30#define SVW_SATA_PORT_SCR_OFFSET 0x40
31#define SVW_SATA_PORT_TF_STRIDE 4
33#define HW_FLAGS_8_PORTS 0x01
34#define HW_FLAGS_NO_ATAPI_DMA 0x02
104 ULONG InterruptStatus;
107 return !!(InterruptStatus & (1 << ChanData->Channel));
130 Features =
Request->TaskFile.Feature;
132 LbaLow =
Request->TaskFile.LowLba;
133 LbaMid =
Request->TaskFile.MidLba;
134 LbaHigh =
Request->TaskFile.HighLba;
176 TaskFile->
LowLba = LbaLow & 0xFF;
177 TaskFile->
MidLba = LbaMid & 0xFF;
178 TaskFile->
HighLba = LbaHigh & 0xFF;
236 Controller->MaxChannels = 8;
238 Controller->MaxChannels = 4;
261 for (
i = 0;
i < Controller->MaxChannels; ++
i)
265 ChanData->TransferModeSupported =
SATA_ALL;
enum _SATA_SCR_REGISTER SATA_SCR_REGISTER
#define WRITE_REGISTER_USHORT(r, v)
#define READ_REGISTER_USHORT(r)
#define WRITE_REGISTER_ULONG(r, v)
#define READ_REGISTER_ULONG(r)
#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 REQUEST_FLAG_LBA48
#define REQUEST_FLAG_SET_DEVICE_REGISTER
#define UNREFERENCED_PARAMETER(P)
#define STATUS_DEVICE_CONFIGURATION_ERROR
#define PCI_VEN_SERVERWORKS
NTSTATUS PciIdeCreateChannelData(_In_ PATA_CONTROLLER Controller, _In_ ULONG HwExtensionSize)
VOID PciIdeInitTaskFileIoResources(_In_ PCHANNEL_DATA_PATA ChanData, _In_ ULONG_PTR CommandPortBase, _In_ ULONG_PTR ControlPortBase, _In_ ULONG CommandBlockSpare)
#define CHANNEL_FLAG_MRES_TF
#define CHANNEL_FLAG_MRES_DMA
#define CHANNEL_FLAG_MRES_CTRL
#define CHANNEL_FLAG_NO_ATAPI_DMA
#define CHANNEL_FLAG_NO_SLAVE
#define PCIIDEX_PAGED_DATA
#define CTRL_FLAG_MANUAL_RES
#define CHANNEL_FLAG_DMA_BEFORE_CMD
CHANNEL_SET_MODE_EX SataSetTransferMode
PVOID AtaCtrlPciMapBar(_In_ PATA_CONTROLLER Controller, _In_range_(0, PCI_TYPE0_ADDRESSES) ULONG Index, _In_ ULONG MinimumIoLength)
struct _ATA_CONTROLLER::@1180 AccessRange[PCI_TYPE0_ADDRESSES]
UCHAR MidLba
LBA bits 8-15.
UCHAR LowLbaEx
LBA bits 24-31.
UCHAR HighLba
LBA bits 16-23.
UCHAR HighLbaEx
LBA bits 40-47.
UCHAR LowLba
LBA bits 0-7.
UCHAR MidLbaEx
LBA bits 32-39.
PCHANNEL_CHECK_INTERRUPT CheckInterrupt
PCHANNEL_READ_STATUS ReadStatus
PCHANNEL_SAVE_TASK_FILE SaveTaskFile
PCHANNEL_LOAD_TASK_FILE LoadTaskFile
PCHANNEL_WRITE_SCR ScrWrite
PCHANNEL_READ_SCR ScrRead
#define SVW_SATA_PORT_TF_STRIDE
static VOID SvwSataSaveTaskFile(_In_ PCHANNEL_DATA_PATA ChanData, _Inout_ PATA_DEVICE_REQUEST Request)
#define PCI_DEV_HT1100_SATA
#define SVW_SATA_PORT_BASE_OFFSET
static VOID SvwSataLoadTaskFile(_In_ PCHANNEL_DATA_PATA ChanData, _In_ PATA_DEVICE_REQUEST Request)
static VOID SvwSataParseResources(_Inout_ PCHANNEL_DATA_PATA ChanData, _In_ PUCHAR IoBase, _In_ ULONG PortIndex)
#define SVW_SATA_PORT_DMA_OFFSET
static PCIIDEX_PAGED_DATA const struct @1176 SvwSataControllerList[]
static BOOLEAN SvwSataScrWrite(_In_ PCHANNEL_DATA_PATA ChanData, _In_ SATA_SCR_REGISTER Register, _In_ ULONG PortNumber, _In_ ULONG Value)
#define PCI_DEV_BCM5770R_SATA
static BOOLEAN SvwSataScrRead(_In_ PCHANNEL_DATA_PATA ChanData, _In_ SATA_SCR_REGISTER Register, _In_ ULONG PortNumber, _In_ PULONG Result)
#define SVW_SATA_PORT_CONTROL_OFFSET
#define PCI_DEV_HT1000_SATA
#define HW_FLAGS_NO_ATAPI_DMA
static UCHAR SvwSataReadStatus(_In_ PCHANNEL_DATA_PATA ChanData)
#define SVW_SATA_PORT_SCR_OFFSET
static ULONG SvwSataGetIoBarIndex(_In_ PATA_CONTROLLER Controller)
#define PCI_DEV_HT1100_SATA_2
static BOOLEAN SvwSataCheckInterrupt(_In_ PCHANNEL_DATA_PATA ChanData)
#define PCI_DEV_BCM5770_SATA
NTSTATUS SvwSataGetControllerProperties(_Inout_ PATA_CONTROLLER Controller)
#define PCI_DEV_HT1000_SATA_2
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
NTKERNELAPI VOID NTAPI WRITE_REGISTER_UCHAR(IN PUCHAR Register, IN UCHAR Value)
NTKERNELAPI UCHAR NTAPI READ_REGISTER_UCHAR(IN PUCHAR Register)