ReactOS 0.4.16-dev-2633-g8dc9e50
ahci.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS ATA Bus Driver
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: AHCI header file
5 * COPYRIGHT: Copyright 2026 <di.sean@protonmail.com>
6 */
7
8#pragma once
9
10#define AHCI_MAX_PORTS 32
11#define AHCI_MAX_PORT_DEVICES 1
12#define AHCI_MAX_PMP_DEVICES 15
13#define AHCI_MAX_COMMAND_SLOTS 32
14
15#define AHCI_MAX_PRDT_ENTRIES 0x000FFFFF // 65535
16#define AHCI_MAX_PRD_LENGTH 0x003FFFFF // 4MB
17
18#define AHCI_PMP_CONTROL_PORT 15
19
20#define AHCI_COMMAND_TABLE_ALIGNMENT 128
21#define AHCI_RECEIVED_FIS_ALIGNMENT 256
22#define AHCI_COMMAND_LIST_ALIGNMENT 1024
23#define AHCI_RECEIVED_FIS_FBS_ALIGNMENT 4096
24
25#define AHCI_FBS_RECEIVE_AREA_SIZE 4096
26
27#define AHCI_DELAY_1_SECOND (1000 / PORT_TIMER_TICK_MS)
28#define AHCI_DELAY_CR_START_STOP (500 / PORT_TIMER_TICK_MS)
29#define AHCI_DELAY_FR_START_STOP (500 / PORT_TIMER_TICK_MS)
30#define AHCI_DELAY_DET_PRESENCE (40 / PORT_TIMER_TICK_MS)
31#define AHCI_DELAY_DET_STABLE (200 / PORT_TIMER_TICK_MS)
32#define AHCI_DELAY_READY_DRIVE (10000 / PORT_TIMER_TICK_MS)
33#define AHCI_DELAY_PMP_READY_DRIVE (400 / PORT_TIMER_TICK_MS)
34#define AHCI_DELAY_PMP_DET_PRESENSE (100 / PORT_TIMER_TICK_MS)
35#define AHCI_DELAY_PMP_DET_STABLE (300 / PORT_TIMER_TICK_MS)
36#define AHCI_DELAY_CLO_CLEAR (10 / PORT_TIMER_TICK_MS)
37#define AHCI_DELAY_INTERFACE_CHANGE (10 / PORT_TIMER_TICK_MS)
38
39#define AHCI_FIS_REGISTER_HOST_TO_DEVICE 0x27
40#define AHCI_FIS_REGISTER_DEVICE_TO_HOST 0x34
41#define AHCI_FIS_DMA_ACTIVATE_DEVICE_TO_HOST 0x39
42#define AHCI_FIS_DMA_SETUP 0x41
43#define AHCI_FIS_DATA 0x46
44#define AHCI_FIS_BIST_ACTIVATE 0x58
45#define AHCI_FIS_PIO_SETUP_DEVICE_TO_HOST 0x5F
46#define AHCI_FIS_SET_DEVICE_BITS_DEVICE_TO_HOST 0xA1
47
48#define IDE_COMMAND_READ_PORT_MULTIPLIER 0xE4
49#define IDE_COMMAND_WRITE_PORT_MULTIPLIER 0xE8
50
52{
59
60#define AHCI_INTERNAL_SLOT 0
61
66{
75#define AHCI_PMP_BIST 0x00000001
76#define AHCI_PMP_PMREQ 0x00000002
77#define AHCI_PMP_SSC 0x00000004
78#define AHCI_PMP_SNTF 0x00000008
80
82{
95
97{
116
117/*
118 * Interrupt Status/Enable Register
119 */
120#define AHCI_PXIRQ_DHRS 0x00000001
121#define AHCI_PXIRQ_PSS 0x00000002
122#define AHCI_PXIRQ_DSS 0x00000004
123#define AHCI_PXIRQ_SDBS 0x00000008
124#define AHCI_PXIRQ_UFS 0x00000010
125#define AHCI_PXIRQ_DPS 0x00000020
126#define AHCI_PXIRQ_PCS 0x00000040
127#define AHCI_PXIRQ_DMPS 0x00000080
128#define AHCI_PXIRQ_RSV1 0x003FFF00
129#define AHCI_PXIRQ_PRCS 0x00400000
130#define AHCI_PXIRQ_IPMS 0x00800000
131#define AHCI_PXIRQ_OFS 0x01000000
132#define AHCI_PXIRQ_RSV2 0x02000000
133#define AHCI_PXIRQ_INFS 0x04000000
134#define AHCI_PXIRQ_IFS 0x08000000
135#define AHCI_PXIRQ_HBDS 0x10000000
136#define AHCI_PXIRQ_HBFS 0x20000000
137#define AHCI_PXIRQ_TFES 0x40000000
138#define AHCI_PXIRQ_CPDS 0x80000000
139
140#define AHCI_PXIRQ_FATAL_ERROR \
141 (AHCI_PXIRQ_TFES | AHCI_PXIRQ_IFS | AHCI_PXIRQ_HBDS | AHCI_PXIRQ_HBFS)
142
143#define AHCI_PXIRQ_PORT_STATUS \
144 (AHCI_PXIRQ_PCS | AHCI_PXIRQ_PRCS | AHCI_PXIRQ_DMPS)
145
146/*
147 * Command and Status Register
148 */
149#define AHCI_PXCMD_ST 0x00000001
150#define AHCI_PXCMD_SUD 0x00000002
151#define AHCI_PXCMD_POD 0x00000004
152#define AHCI_PXCMD_CLO 0x00000008
153#define AHCI_PXCMD_FRE 0x00000010
154#define AHCI_PXCMD_RSV 0x000000E0
155#define AHCI_PXCMD_CCS_MASK 0x00001F00
156#define AHCI_PXCMD_MPSS 0x00002000
157#define AHCI_PXCMD_FR 0x00004000
158#define AHCI_PXCMD_CR 0x00008000
159#define AHCI_PXCMD_CPS 0x00010000
160#define AHCI_PXCMD_PMA 0x00020000
161#define AHCI_PXCMD_HPCP 0x00040000
162#define AHCI_PXCMD_MPSP 0x00080000
163#define AHCI_PXCMD_CPD 0x00100000
164#define AHCI_PXCMD_ESP 0x00200000
165#define AHCI_PXCMD_FBSCP 0x00400000
166#define AHCI_PXCMD_APSTE 0x00800000
167#define AHCI_PXCMD_ATAPI 0x01000000
168#define AHCI_PXCMD_DLAE 0x02000000
169#define AHCI_PXCMD_ALPE 0x04000000
170#define AHCI_PXCMD_ASP 0x08000000
171#define AHCI_PXCMD_ICC_MASK 0xF0000000
172
173#define AHCI_PXCMD_ICC_IDLE 0x00000000
174#define AHCI_PXCMD_ICC_ACTIVE 0x10000000
175#define AHCI_PXCMD_ICC_PARTIAL 0x20000000
176#define AHCI_PXCMD_ICC_SLUMBER 0x60000000
177#define AHCI_PXCMD_ICC_DEVSLEEP 0x80000000
178
179#define AHCI_PXCMD_ICC_DEVSLEEP 0x80000000
180
181#define AHCI_PXCMD_CCS_SHIFT 8
182
183#define AHCI_PXCMD_CCS(Value) (((Value) & AHCI_PXCMD_CCS_MASK) >> AHCI_PXCMD_CCS_SHIFT)
184
185/*
186 * Task File Data Register
187 */
188#define AHCI_PXTFD_STATUS_MASK 0x000000FF
189#define AHCI_PXTFD_ERROR_MASK 0x0000FF00
190
191#define AHCI_PXTFD_ERROR_SHIFT 8
192
193/*
194 * Signature Register
195 */
196#define AHCI_PXSIG_INVALID 0xFFFFFFFF
197#define AHCI_PXSIG_ATAPI 0xEB140101
198#define AHCI_PXSIG_PMP 0x96690101
199
200/*
201 * Some PATA ATAPI devices (NEC CDR-C251) do not update the Sector Count and LBA Low registers.
202 * Just to be safe, the contents of these registers is also ignored for AHCI devices.
203 */
204#define AHCI_PXSIG_MASK 0xFFFF0000
205
206/*
207 * Serial ATA Status Register
208 */
209#define AHCI_PXSSTS_DET_MASK 0x0000000F
210#define AHCI_PXSSTS_SPD_MASK 0x000000F0
211#define AHCI_PXSSTS_IPM_MASK 0x00000F00
212
213#define AHCI_PXSSTS_DET_NO_DEVICE 0x00000000
214#define AHCI_PXSSTS_DET_PHY_NOT_READY 0x00000001
215#define AHCI_PXSSTS_DET_PHY_OK 0x00000003
216#define AHCI_PXSSTS_DET_PHY_OFFLINE 0x00000004
217
218#define AHCI_PXSSTS_SPD_UNKNOWN 0x00000000
219#define AHCI_PXSSTS_SPD_SATA1 0x00000010
220#define AHCI_PXSSTS_SPD_SATA2 0x00000020
221#define AHCI_PXSSTS_SPD_SATA3 0x00000030
222
223#define AHCI_PXSSTS_IPM_NO_DEVICE 0x00000000
224#define AHCI_PXSSTS_IPM_ACTIVE 0x00000100
225#define AHCI_PXSSTS_IPM_PARTIAL 0x00000200
226#define AHCI_PXSSTS_IPM_SLUMBER 0x00000600
227#define AHCI_PXSSTS_IPM_DEVSLEEP 0x00000800
228
229/*
230 * Serial ATA Control Register
231 */
232#define AHCI_PXCTL_DET_MASK 0x0000000F
233#define AHCI_PXCTL_SPD_MASK 0x000000F0
234#define AHCI_PXCTL_IPM_MASK 0x00000F00
235
236#define AHCI_PXCTL_DET_IDLE 0x00000000
237#define AHCI_PXCTL_DET_RESET 0x00000001
238#define AHCI_PXCTL_DET_DISABLE_SATA 0x00000004
239
240#define AHCI_PXCTL_SPD_LIMIT_NONE 0x00000000
241#define AHCI_PXCTL_SPD_LIMIT_SATA1 0x00000010
242#define AHCI_PXCTL_SPD_LIMIT_SATA2 0x00000020
243#define AHCI_PXCTL_SPD_LIMIT_SATA3 0x00000030
244
245#define AHCI_PXCTL_SPD_LIMIT_LEVEL 0x00000010
246
247#define AHCI_PXCTL_IPM_DISABLE_NONE 0x00000000
248#define AHCI_PXCTL_IPM_DISABLE_PARTIAL 0x00000100
249#define AHCI_PXCTL_IPM_DISABLE_SLUMBER 0x00000200
250#define AHCI_PXCTL_IPM_DISABLE_DEVSLEEP 0x00000400
251
252#define AHCI_PXCTL_IPM_DISABLE_ALL 0x00000700
253
254/*
255 * FIS-based Switching Control Register
256 */
257#define AHCI_FBS_ENABLE 0x00000001
258#define AHCI_FBS_DEV_ERROR_CLEAR 0x00000002
259#define AHCI_FBS_SINGLE_DEV_ERROR 0x00000004
260#define AHCI_FBS_ISSUE_MASK 0x00000F00
261#define AHCI_FBS_ACTIVE_DEV_OPT_MASK 0x0000F000
262#define AHCI_FBS_DEV_WITH_ERROR_MASK 0x000F0000
263
264#define AHCI_FBS_ISSUE_SHIFT 8
265
266/*
267 * Device Sleep Register
268 */
269#define AHCI_PXDEVSLP_ADSE 0x00000001
270#define AHCI_PXDEVSLP_DSP 0x00000002
271#define AHCI_PXDEVSLP_DETO_MASK 0x000003FC
272#define AHCI_PXDEVSLP_MDAT_MASK 0x00007C00
273#define AHCI_PXDEVSLP_DITO_MASK 0x01FF8000
274#define AHCI_PXDEVSLP_DM_MASK 0x1E000000
275
276#define AHCI_PORT_INTERRUPT_MASK \
277 (AHCI_PXIRQ_DHRS | \
278 AHCI_PXIRQ_PSS | \
279 AHCI_PXIRQ_DSS | \
280 AHCI_PXIRQ_SDBS | \
281 AHCI_PXIRQ_UFS | \
282 AHCI_PXIRQ_DPS | \
283 AHCI_PXIRQ_PCS | \
284 AHCI_PXIRQ_DMPS | \
285 AHCI_PXIRQ_PRCS | \
286 AHCI_PXIRQ_IPMS | \
287 AHCI_PXIRQ_OFS | \
288 AHCI_PXIRQ_INFS | \
289 AHCI_PXIRQ_IFS | \
290 AHCI_PXIRQ_HBDS | \
291 AHCI_PXIRQ_HBFS | \
292 AHCI_PXIRQ_TFES | \
293 AHCI_PXIRQ_CPDS)
294
295/*
296 * AHCI Version Register
297 */
298#define AHCI_VERSION_0_95 0x00000905
299#define AHCI_VERSION_1_0 0x00010000
300#define AHCI_VERSION_1_2 0x00010200
301#define AHCI_VERSION_1_3_0 0x00010300
302#define AHCI_VERSION_1_3_1 0x00010301
303
304/*
305 * Global HBA Control Register
306 */
307#define AHCI_GHC_HR 0x00000001
308#define AHCI_GHC_IE 0x00000002
309#define AHCI_GHC_MRSM 0x00000004
310#define AHCI_GHC_AE 0x80000000
311
312/*
313 * HBA Capabilities Register
314 */
315#define AHCI_CAP_NP 0x0000001F
316#define AHCI_CAP_SXS 0x00000020
317#define AHCI_CAP_EMS 0x00000040
318#define AHCI_CAP_CCCS 0x00000080
319#define AHCI_CAP_NCS 0x00001F00
320#define AHCI_CAP_PSC 0x00002000
321#define AHCI_CAP_SSC 0x00004000
322#define AHCI_CAP_PMD 0x00008000
323#define AHCI_CAP_FBSS 0x00010000
324#define AHCI_CAP_SPM 0x00020000
325#define AHCI_CAP_SAM 0x00040000
326#define AHCI_CAP_RSV 0x00080000
327#define AHCI_CAP_ISS 0x00F00000
328#define AHCI_CAP_SCLO 0x01000000
329#define AHCI_CAP_SAL 0x02000000
330#define AHCI_CAP_SALP 0x04000000
331#define AHCI_CAP_SSS 0x08000000
332#define AHCI_CAP_SMPS 0x10000000
333#define AHCI_CAP_SSNTF 0x20000000
334#define AHCI_CAP_SNCQ 0x40000000
335#define AHCI_CAP_S64A 0x80000000
336
337/*
338 * HBA Capabilities Extended Register
339 */
340#define AHCI_CAP2_BOH 0x00000001
341#define AHCI_CAP2_NVMP 0x00000002
342#define AHCI_CAP2_APST 0x00000004
343#define AHCI_CAP2_SDS 0x00000008
344#define AHCI_CAP2_SADM 0x00000010
345#define AHCI_CAP2_DESO 0x00000020
346
347#define AHCI_BOHC_BIOS_SEMAPHORE 0x00000001
348#define AHCI_BOHC_OS_SEMAPHORE 0x00000002
349#define AHCI_BOHC_SMI_ON_OS_OWNERSHIP_CHANGE 0x00000004
350#define AHCI_BOHC_OS_OWNERSHIP_CHANGE 0x00000008
351#define AHCI_BOHC_BIOS_BUSY 0x00000010
352
353#include <pshpack1.h>
354
356{
357 UCHAR Type; // 0x27
358
360#define UPDATE_COMMAND 0x80
361#define PMP_NUMBER 0x0F
362
379
381
383{
384 UCHAR Type; // 0x5F
385
387
405
407
409{
410 UCHAR Type; // 0x34
411
413
430
432
434{
435 UCHAR Type; // 0xA1
436
438
443
445
446typedef struct _AHCI_RECEIVED_FIS
447{
450
453
456
458
460
463
465
467{
469#define AHCI_COMMAND_HEADER_COMMAND_FIS_LENGTH 0x0000001F
470#define AHCI_COMMAND_HEADER_ATAPI 0x00000020
471#define AHCI_COMMAND_HEADER_WRITE 0x00000040
472#define AHCI_COMMAND_HEADER_PREFETCHABLE 0x00000080
473#define AHCI_COMMAND_HEADER_RESET 0x00000100
474#define AHCI_COMMAND_HEADER_BIST 0x00000200
475#define AHCI_COMMAND_HEADER_CLEAR_BUSY_UPON_OK 0x00000400
476#define AHCI_COMMAND_HEADER_PMP 0x0000F000
477#define AHCI_COMMAND_HEADER_PRDT_LENGTH 0xFFFF0000
478
479#define AHCI_COMMAND_HEADER_PRDT_LENGTH_SHIFT 16
480#define AHCI_COMMAND_HEADER_PMP_SHIFT 12
481
487
489
490typedef struct _AHCI_COMMAND_LIST
491{
494
496{
500
502#define AHCI_PRD_INTERRUPT_ON_COMPLETION 0x80000000
503
505
507
509{
510 union
511 {
514 };
519
521
522#include <poppack.h>
523
524#define AHCI_PORT_BASE(HbaIoBase, PortNumber) \
525 (PULONG)((ULONG_PTR)(HbaIoBase) + (PortNumber) * 0x80 + 0x100)
526
528ULONG
530 _In_ PVOID HbaIoBase,
532{
533 return READ_REGISTER_ULONG((PULONG)((ULONG_PTR)HbaIoBase + Register));
534}
535
537VOID
539 _In_ PVOID HbaIoBase,
542{
544}
545
547ULONG
549 _In_ PVOID PortIoBase,
551{
552 return READ_REGISTER_ULONG((PULONG)((ULONG_PTR)PortIoBase + Register));
553}
554
556VOID
558 _In_ PVOID PortIoBase,
561{
563}
struct _AHCI_FIS_PIO_SETUP * PAHCI_FIS_PIO_SETUP
struct _AHCI_COMMAND_TABLE * PAHCI_COMMAND_TABLE
struct _AHCI_FIS_HOST_TO_DEVICE * PAHCI_FIS_HOST_TO_DEVICE
FORCEINLINE VOID AHCI_PORT_WRITE(_In_ PVOID PortIoBase, _In_ AHCI_PORT_REGISTER Register, _In_ ULONG Value)
Definition: ahci.h:557
struct _AHCI_COMMAND_TABLE AHCI_COMMAND_TABLE
struct _AHCI_COMMAND_LIST * PAHCI_COMMAND_LIST
struct _AHCI_PRD_TABLE_ENTRY * PAHCI_PRD_TABLE_ENTRY
struct _AHCI_FIS_PIO_SETUP AHCI_FIS_PIO_SETUP
enum _AHCI_PORT_REGISTER AHCI_PORT_REGISTER
struct _AHCI_RECEIVED_FIS AHCI_RECEIVED_FIS
enum _SATA_SCR_REGISTER SATA_SCR_REGISTER
struct _AHCI_COMMAND_HEADER * PAHCI_COMMAND_HEADER
struct _AHCI_FIS_DEVICE_TO_HOST * PAHCI_FIS_DEVICE_TO_HOST
FORCEINLINE ULONG AHCI_PORT_READ(_In_ PVOID PortIoBase, _In_ AHCI_PORT_REGISTER Register)
Definition: ahci.h:548
struct _AHCI_RECEIVED_FIS * PAHCI_RECEIVED_FIS
_AHCI_PORT_MULTIPLIER_REGISTER
Definition: ahci.h:66
@ PmpPhyEventCounterControl
Definition: ahci.h:72
@ PmpErrorInfo
Definition: ahci.h:70
@ PmpProductId
Definition: ahci.h:67
@ PmpErrorControl
Definition: ahci.h:71
@ PmpPortInfo
Definition: ahci.h:69
@ PmpCapabilities
Definition: ahci.h:73
@ PmpFeaturesEnabled
Definition: ahci.h:74
@ PmpRevisionInfo
Definition: ahci.h:68
struct _AHCI_COMMAND_LIST AHCI_COMMAND_LIST
struct _AHCI_FIS_SET_DEVICE_BITS AHCI_FIS_SET_DEVICE_BITS
FORCEINLINE ULONG AHCI_HBA_READ(_In_ PVOID HbaIoBase, _In_ AHCI_HOST_BUS_ADAPTER_REGISTER Register)
Definition: ahci.h:529
struct _AHCI_PRD_TABLE_ENTRY AHCI_PRD_TABLE_ENTRY
enum _AHCI_PORT_MULTIPLIER_REGISTER AHCI_PORT_MULTIPLIER_REGISTER
struct _AHCI_FIS_DEVICE_TO_HOST AHCI_FIS_DEVICE_TO_HOST
_AHCI_PORT_REGISTER
Definition: ahci.h:97
@ PxCmdStatus
Definition: ahci.h:104
@ PxTaskFileData
Definition: ahci.h:105
@ PxCommandIssue
Definition: ahci.h:111
@ PxSataStatus
Definition: ahci.h:107
@ PxSataControl
Definition: ahci.h:108
@ PxInterruptEnable
Definition: ahci.h:103
@ PxSataNotification
Definition: ahci.h:112
@ PxSataError
Definition: ahci.h:109
@ PxSignature
Definition: ahci.h:106
@ PxCommandListBaseHigh
Definition: ahci.h:99
@ PxFisSwitchingControl
Definition: ahci.h:113
@ PxInterruptStatus
Definition: ahci.h:102
@ PxFisBaseHigh
Definition: ahci.h:101
@ PxDeviceSleep
Definition: ahci.h:114
@ PxFisBaseLow
Definition: ahci.h:100
@ PxCommandListBaseLow
Definition: ahci.h:98
@ PxSataActive
Definition: ahci.h:110
FORCEINLINE VOID AHCI_HBA_WRITE(_In_ PVOID HbaIoBase, _In_ AHCI_HOST_BUS_ADAPTER_REGISTER Register, _In_ ULONG Value)
Definition: ahci.h:538
struct _AHCI_FIS_SET_DEVICE_BITS * PAHCI_FIS_SET_DEVICE_BITS
struct _AHCI_FIS_HOST_TO_DEVICE AHCI_FIS_HOST_TO_DEVICE
_SATA_SCR_REGISTER
Definition: ahci.h:52
@ ATA_SCONTROL
Definition: ahci.h:55
@ ATA_SSTATUS
Definition: ahci.h:53
@ ATA_SACTIVE
Definition: ahci.h:56
@ ATA_SERROR
Definition: ahci.h:54
@ ATA_SNOTIFICATION
Definition: ahci.h:57
struct _AHCI_COMMAND_HEADER AHCI_COMMAND_HEADER
enum _AHCI_HOST_BUS_ADAPTER_REGISTER AHCI_HOST_BUS_ADAPTER_REGISTER
_AHCI_HOST_BUS_ADAPTER_REGISTER
Definition: ahci.h:82
@ HbaCoalescingPorts
Definition: ahci.h:89
@ HbaCapabilities
Definition: ahci.h:83
@ HbaCapabilitiesEx
Definition: ahci.h:92
@ HbaPortBitmap
Definition: ahci.h:86
@ HbaBiosHandoffControl
Definition: ahci.h:93
@ HbaGlobalControl
Definition: ahci.h:84
@ HbaEnclosureManagementLocation
Definition: ahci.h:90
@ HbaEnclosureManagementControl
Definition: ahci.h:91
@ HbaAhciVersion
Definition: ahci.h:87
@ HbaInterruptStatus
Definition: ahci.h:85
@ HbaCoalescingControl
Definition: ahci.h:88
#define WRITE_REGISTER_ULONG(r, v)
Definition: arm.h:11
#define READ_REGISTER_ULONG(r)
Definition: arm.h:10
#define C_ASSERT(e)
Definition: intsafe.h:73
#define _In_
Definition: no_sal2.h:158
unsigned short USHORT
Definition: pedump.c:61
ULONG CommandTableBaseLow
Definition: ahci.h:483
ULONG CommandTableBaseHigh
Definition: ahci.h:484
ULONG PrdByteCount
Definition: ahci.h:482
AHCI_COMMAND_HEADER CommandHeader[ANYSIZE_ARRAY]
Definition: ahci.h:492
UCHAR CommandFis[64]
Definition: ahci.h:513
UCHAR AtapiCommand[16]
Definition: ahci.h:515
AHCI_FIS_HOST_TO_DEVICE HostToDeviceFis
Definition: ahci.h:512
AHCI_PRD_TABLE_ENTRY PrdTable[ANYSIZE_ARRAY]
Definition: ahci.h:517
UCHAR Reserved
Definition: ahci.h:397
UCHAR LbaLowEx
Definition: ahci.h:394
UCHAR LbaHighEx
Definition: ahci.h:396
USHORT Reserved2
Definition: ahci.h:403
USHORT TransferCount
Definition: ahci.h:402
UCHAR SectorCountEx
Definition: ahci.h:399
UCHAR LbaMidEx
Definition: ahci.h:395
UCHAR Reserved1
Definition: ahci.h:400
UCHAR SectorCount
Definition: ahci.h:398
Definition: ahci.h:496
ULONG Reserved
Definition: ahci.h:499
ULONG DataBaseLow
Definition: ahci.h:497
ULONG DataBaseHigh
Definition: ahci.h:498
ULONG ByteCount
Definition: ahci.h:501
UCHAR Reserved4[0x60]
Definition: ahci.h:461
AHCI_FIS_DEVICE_TO_HOST DeviceToHostFis
Definition: ahci.h:454
ULONG Reserved3
Definition: ahci.h:455
AHCI_FIS_SET_DEVICE_BITS SetDeviceBitsFis
Definition: ahci.h:457
UCHAR UnknownFis[0x40]
Definition: ahci.h:459
ULONG Reserved2[3]
Definition: ahci.h:452
AHCI_FIS_PIO_SETUP PioSetupFis
Definition: ahci.h:451
ULONG Reserved
Definition: ahci.h:449
UCHAR DmaSetupFis[0x1C]
Definition: ahci.h:448
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: typedefs.h:53
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
#define FORCEINLINE
Definition: wdftypes.h:67
_Reserved_ PVOID Reserved
Definition: winddi.h:3974