NeKernel dev
Loading...
Searching...
No Matches
AHCI.h
Go to the documentation of this file.
1/* -------------------------------------------
3 Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
5 File: AHCI.h
6 Purpose: AHCI protocol defines.
7
8 Revision History:
10 03/02/24: Added file (amlel)
12------------------------------------------- */
14#pragma once
17#include <modules/ACPI/ACPI.h>
22#define kAHCISectorSize (512)
23
24struct HbaPort;
25struct FisData;
26struct FisRegD2H;
27struct FisRegH2D;
28
30enum {
31 kFISTypeRegH2D = 0x27, // Register FIS - host to device
32 kFISTypeRegD2H = 0x34, // Register FIS - device to host
33 kFISTypeDMAAct = 0x39, // DMA activate FIS - device to host
34 kFISTypeDMASetup = 0x41, // DMA setup FIS - bidirectional
35 kFISTypeData = 0x46, // Data FIS - bidirectional
36 kFISTypeBIST = 0x58, // BIST activate FIS - bidirectional
37 kFISTypePIOSetup = 0x5F, // PIO setup FIS - device to host
38 kFISTypeDevBits = 0xA1, // Set device bits FIS - device to host
39};
40
41enum {
47};
48
49typedef struct FisRegH2D final {
50 // DWORD 0
51 Kernel::UInt8 FisType; // FIS_TYPE_REG_H2D
52
53 Kernel::UInt8 PortMul : 4; // Port multiplier
54 Kernel::UInt8 Reserved0 : 3; // Reserved
55 Kernel::UInt8 CmdOrCtrl : 1; // 1: Command, 0: Control
56
57 Kernel::UInt8 Command; // Command register
58 Kernel::UInt8 FeatureLow; // Feature register, 7:0
59
60 // DWORD 1
61 Kernel::UInt8 Lba0; // LBA low register, 7:0
62 Kernel::UInt8 Lba1; // LBA mid register, 15:8
63 Kernel::UInt8 Lba2; // LBA high register, 23:16
64 Kernel::UInt8 Device; // Device register
65
66 // DWORD 2
67 Kernel::UInt8 Lba3; // LBA register, 31:24
68 Kernel::UInt8 Lba4; // LBA register, 39:32
69 Kernel::UInt8 Lba5; // LBA register, 47:40
70 Kernel::UInt8 FeatureHigh; // Feature register, 15:8
71
72 // DWORD 3
73 Kernel::UInt8 CountLow; // Count register, 7:0
74 Kernel::UInt8 CountHigh; // Count register, 15:8
75 Kernel::UInt8 Icc; // Isochronous command completion
76 Kernel::UInt8 Control; // Control register
77
78 // DWORD 4
79 Kernel::UInt8 Reserved1[4]; // Reserved
81
82typedef struct FisRegD2H final {
83 // DWORD 0
84 Kernel::UInt8 FisType; // FIS_TYPE_REG_D2H
85
86 Kernel::UInt8 PortMul : 4; // Port multiplier
87 Kernel::UInt8 Reserved0 : 2; // Reserved
88 Kernel::UInt8 IE : 1; // Interrupt bit
89 Kernel::UInt8 Reserved1 : 1; // Reserved
90
91 Kernel::UInt8 Status; // Status register
92 Kernel::UInt8 Error; // Error register
93
94 // DWORD 1
95 Kernel::UInt8 Lba0; // LBA low register, 7:0
96 Kernel::UInt8 Lba1; // LBA mid register, 15:8
97 Kernel::UInt8 Lba2; // LBA high register, 23:16
98 Kernel::UInt8 Device; // Device register
99
100 // DWORD 2
101 Kernel::UInt8 Lba3; // LBA register, 31:24
102 Kernel::UInt8 Lba4; // LBA register, 39:32
103 Kernel::UInt8 Lba5; // LBA register, 47:40
104 Kernel::UInt8 Rsv2; // Reserved
105
106 // DWORD 3
107 Kernel::UInt8 CountLow; // Count register, 7:0
108 Kernel::UInt8 CountHigh; // Count register, 15:8
109 Kernel::UInt8 Rsv3[2]; // Reserved
110
111 // DWORD 4
112 Kernel::UInt8 Rsv4[4]; // Reserved
114
115typedef struct FisData final {
116 // DWORD 0
117 Kernel::UInt8 FisType; // FIS_TYPE_DATA
118
119 Kernel::UInt8 PortMul : 4; // Port multiplier
120 Kernel::UInt8 Reserved0 : 4; // Reserved
121
122 Kernel::UInt8 Reserved1[2]; // Reserved
123
124 // DWORD 1 ~ N
125 Kernel::UInt32 Data[1]; // Payload
127
128typedef struct FisPioSetup final {
129 // DWORD 0
130 Kernel::UInt8 FisType; // FIS_TYPE_PIO_SETUP
131
132 Kernel::UInt8 PortMul : 4; // Port multiplier
133 Kernel::UInt8 Reserved0 : 1; // Reserved
134 Kernel::UInt8 DTD : 1; // Data transfer direction, 1 - device to host
135 Kernel::UInt8 IE : 1; // Interrupt bit
137
138 Kernel::UInt8 Status; // Status register
139 Kernel::UInt8 Error; // Error register
140
141 // DWORD 1
142 Kernel::UInt8 Lba0; // LBA low register, 7:0
143 Kernel::UInt8 Lba1; // LBA mid register, 15:8
144 Kernel::UInt8 Lba2; // LBA high register, 23:16
145 Kernel::UInt8 Device; // Device register
146
147 // DWORD 2
148 Kernel::UInt8 Lba3; // LBA register, 31:24
149 Kernel::UInt8 Lba4; // LBA register, 39:32
150 Kernel::UInt8 Lba5; // LBA register, 47:40
151 Kernel::UInt8 Rsv2; // Reserved
152
153 // DWORD 3
154 Kernel::UInt8 CountLow; // Count register, 7:0
155 Kernel::UInt8 CountHigh; // Count register, 15:8
156 Kernel::UInt8 Rsv3; // Reserved
157 Kernel::UInt8 EStatus; // New value of status register
158
159 // DWORD 4
160 Kernel::UInt16 TranferCount; // Transfer count
161 Kernel::UInt8 Rsv4[2]; // Reserved
163
164typedef struct FisDmaSetup final {
165 // DWORD 0
166 Kernel::UInt8 FisType; // FIS_TYPE_DMA_SETUP
167
168 Kernel::UInt8 PortMul : 4; // Port multiplier
169 Kernel::UInt8 Reserved0 : 1; // Reserved
170 Kernel::UInt8 DTD : 1; // Data transfer direction, 1 - device to host
171 Kernel::UInt8 IE : 1; // Interrupt bit
172 Kernel::UInt8 AutoEnable : 1; // Auto-activate. Specifies if DMA Activate FIS is needed
173
174 Kernel::UInt8 Reserved1[2]; // Reserved
175
176 // DWORD 1&2
177 volatile Kernel::UInt64 DmaBufferId; // DMA Buffer Identifier. Used to Identify DMA buffer in
178 // host memory. SATA Spec says host specific and not in
179 // Spec. Trying AHCI spec might work.
180
181 // DWORD 3
182 Kernel::UInt32 Rsvd; // More reserved
183
184 // DWORD 4
185 Kernel::UInt32 DmabufOffset; // Byte offset into buffer. First 2 bits must be 0
186
187 // DWORD 5
188 Kernel::UInt32 TransferCount; // Number of bytes to transfer. Bit 0 must be 0
189
190 // DWORD 6
193
213
215#ifndef kSATAGHC_AE
216#define kSATAGHC_AE (31)
217#endif
218
219typedef struct HbaPort final {
220 Kernel::UInt32 Clb; // 0x00, command list base address, 1K-byte aligned
221 Kernel::UInt32 Clbu; // 0x04, command list base address upper 32 bits
222 Kernel::UInt32 Fb; // 0x08, FIS base address, 256-byte aligned
223 Kernel::UInt32 Fbu; // 0x0C, FIS base address upper 32 bits
224 Kernel::UInt32 Is; // 0x10, interrupt status
225 Kernel::UInt32 Ie; // 0x14, interrupt enable
226 Kernel::UInt32 Cmd; // 0x18, command and status
227 Kernel::UInt32 Reserved0; // 0x1C, Reserved
228 Kernel::UInt32 Tfd; // 0x20, task file data
229 Kernel::UInt32 Sig; // 0x24, signature
230 Kernel::UInt32 Ssts; // 0x28, SATA status (SCR0:SStatus)
231 Kernel::UInt32 Sctl; // 0x2C, SATA control (SCR2:SControl)
232 Kernel::UInt32 Serr; // 0x30, SATA error (SCR1:SError)
233 Kernel::UInt32 Sact; // 0x34, SATA active (SCR3:SActive)
234 Kernel::UInt32 Ci; // 0x38, command issue
235 Kernel::UInt32 Sntf; // 0x3C, SATA notification (SCR4:SNotification)
236 Kernel::UInt32 Fbs; // 0x40, FIS-based switch control
237 Kernel::UInt32 Reserved1[11]; // 0x44 ~ 0x6F, Reserved
238 Kernel::UInt32 Vendor[4]; // 0x70 ~ 0x7F, vendor specific
240
241typedef struct HbaMem final {
242 // 0x00 - 0x2B, Generic Host Control
243 Kernel::UInt32 Cap; // 0x00, Host capability
244 Kernel::UInt32 Ghc; // 0x04, Global host control
245 Kernel::UInt32 Is; // 0x08, Interrupt status
246 Kernel::UInt32 Pi; // 0x0C, Port implemented
247 Kernel::UInt32 Vs; // 0x10, Version
248 Kernel::UInt32 Ccc_ctl; // 0x14, Command completion coalescing control
249 Kernel::UInt32 Ccc_pts; // 0x18, Command completion coalescing ports
250 Kernel::UInt32 Em_loc; // 0x1C, Enclosure management location
251 Kernel::UInt32 Em_ctl; // 0x20, Enclosure management control
252 Kernel::UInt32 Cap2; // 0x24, Host capabilities extended
253 Kernel::UInt32 Bohc; // 0x28, BIOS/OS handoff control and status
254
255 Kernel::UInt8 Resv0[0xA0 - 0x2C];
256 Kernel::UInt8 Vendor[0x100 - 0xA0];
257
258 HbaPort Ports[1]; // 1 ~ 32, 32 is the max ahci devices per controller.
260
262
263typedef struct HbaCmdHeader final {
264 // DW0
265 union HbaFlags {
266 struct HbaFlags_ {
267 Kernel::UInt8 Cfl : 5; // Command FIS length in DWORDS, 2 ~ 16
268 Kernel::UInt8 Atapi : 1; // ATAPI
269 Kernel::UInt8 Write : 1; // Write, 1: H2D, 0: D2H
270 Kernel::UInt8 Prefetchable : 1; // Prefetchable
271
272 Kernel::UInt8 Reset : 1; // Reset
273 Kernel::UInt8 BIST : 1; // BIST
274 Kernel::UInt8 Clear : 1; // Clear busy upon R_OK
275 Kernel::UInt8 Reserved0 : 1; // Reserved
276 Kernel::UInt8 Pmp : 4; // Port multiplier port
278
281
282 Kernel::UInt16 Prdtl; // Physical region descriptor table length in entries
283 Kernel::UInt32 Prdbc; // Physical region descriptor byte count transferred
284
285 Kernel::UInt32 Ctba; // Command table descriptor base address
286 Kernel::UInt32 Ctbau; // Command table descriptor base address upper 32 bits
287
289} ATTRIBUTE(packed, aligned(32)) HbaCmdHeader;
290
291typedef struct HbaFis final {
292 // 0x00
293 FisDmaSetup Dsfis; // DMA Setup FIS
295 // 0x20
296 FisPioSetup Psfis; // PIO Setup FIS
298 // 0x40
299 FisRegD2H Rfis; // Register – Device to Host FIS
301 // 0x58
302 FisDevBits Sdbfis; // Set Device Bit FIS
303 // 0x60
305 // 0xA0
306 Kernel::UInt8 Rsv[0x100 - 0xA0];
308
309typedef struct HbaPrdtEntry final {
310 Kernel::UInt32 Dba; // Data base address
311 Kernel::UInt32 Dbau; // Data base address upper 32 bits
313 // DW3
314 Kernel::UInt32 Dbc : 22; // Byte count, 4M max
315 Kernel::UInt32 Reserved1 : 9; // Reserved
316 Kernel::UInt32 Ie : 1; // Interrupt on completion
318
319typedef struct HbaCmdTbl final {
320 Kernel::UInt8 Cfis[64]; // Command FIS
321 Kernel::UInt8 Acmd[16]; // ATAPI command, 12 or 16 bytes
322 Kernel::UInt8 Rsv[48]; // Reserved
323 struct HbaPrdtEntry Prdt[1]; // Physical region descriptor table entries, 0 ~ 65535
325
330
332
340 Kernel::SizeT buf_sz);
341
349 Kernel::SizeT buf_sz);
350
353
356
359
360/* EOF */
#define ATTRIBUTE(X)
Definition macros.h:44
Kernel::Void drv_std_write(Kernel::UInt64 lba, Kernel::Char *buf, Kernel::SizeT sector_sz, Kernel::SizeT buf_sz)
Write to AHCI disk.
Kernel::Boolean drv_std_init(Kernel::UInt16 &PortsImplemented)
Initializes an AHCI disk.
Kernel::SizeT drv_std_get_sector_count()
Gets the sector count from AHCI disk.
@ kFISTypeBIST
Definition AHCI.h:36
@ kFISTypeRegD2H
Definition AHCI.h:32
@ kFISTypeDMASetup
Definition AHCI.h:34
@ kFISTypePIOSetup
Definition AHCI.h:37
@ kFISTypeDevBits
Definition AHCI.h:38
@ kFISTypeRegH2D
Definition AHCI.h:31
@ kFISTypeDMAAct
Definition AHCI.h:33
@ kFISTypeData
Definition AHCI.h:35
HbaMem * HbaMemRef
Definition AHCI.h:261
@ kAHCICmdWriteDmaEx
Definition AHCI.h:46
@ kAHCICmdReadDma
Definition AHCI.h:43
@ kAHCICmdReadDmaEx
Definition AHCI.h:44
@ kAHCICmdWriteDma
Definition AHCI.h:45
@ kAHCICmdIdentify
Definition AHCI.h:42
Kernel::Void drv_std_read(Kernel::UInt64 lba, Kernel::Char *buf, Kernel::SizeT sector_sz, Kernel::SizeT buf_sz)
Read from AHCI disk.
Kernel::Bool drv_is_ready(void)
Checks if the drive has completed the command.
Kernel::Boolean drv_std_detected(Kernel::Void)
Kernel::SizeT drv_std_get_size()
Gets the AHCI disk size.
char Char
Definition Defines.h:51
void Void
Definition Defines.h:85
unsigned char UInt8
Definition Defines.h:53
__SIZE_TYPE__ SizeT
Definition Defines.h:58
unsigned int UInt32
Definition Defines.h:44
unsigned short UInt16
Definition Defines.h:40
bool Boolean
Definition Defines.h:49
__UINT64_TYPE__ UInt64
Definition Defines.h:48
bool Bool
Definition Defines.h:50
Definition AHCI.h:115
Kernel::UInt32 Data[1]
Definition AHCI.h:125
Kernel::UInt8 FisType
Definition AHCI.h:117
Kernel::UInt8 Reserved0
Definition AHCI.h:120
Kernel::UInt8 Reserved1[2]
Definition AHCI.h:122
Kernel::UInt8 PortMul
Definition AHCI.h:119
Definition AHCI.h:194
Kernel::UInt8 StatusLow
Definition AHCI.h:203
Kernel::UInt8 Reserved0
Definition AHCI.h:198
Kernel::UInt8 R1
Definition AHCI.h:204
Kernel::UInt8 R0
Definition AHCI.h:199
Kernel::UInt32 Act
Definition AHCI.h:211
Kernel::UInt8 IE
Definition AHCI.h:200
Kernel::UInt8 StatusHigh
Definition AHCI.h:205
Kernel::UInt8 Error
Definition AHCI.h:208
Kernel::UInt8 R2
Definition AHCI.h:207
Kernel::UInt8 FisType
Definition AHCI.h:196
Kernel::UInt8 N
Definition AHCI.h:201
Definition AHCI.h:164
Kernel::UInt32 DmabufOffset
Definition AHCI.h:185
Kernel::UInt8 DTD
Definition AHCI.h:170
Kernel::UInt32 Reserved3
Definition AHCI.h:191
Kernel::UInt8 PortMul
Definition AHCI.h:168
Kernel::UInt8 AutoEnable
Definition AHCI.h:172
Kernel::UInt8 Reserved0
Definition AHCI.h:169
Kernel::UInt32 TransferCount
Definition AHCI.h:188
Kernel::UInt8 IE
Definition AHCI.h:171
Kernel::UInt8 Reserved1[2]
Definition AHCI.h:174
Kernel::UInt8 FisType
Definition AHCI.h:166
volatile Kernel::UInt64 DmaBufferId
Definition AHCI.h:177
Kernel::UInt32 Rsvd
Definition AHCI.h:182
Definition AHCI.h:128
Kernel::UInt8 Lba4
Definition AHCI.h:149
Kernel::UInt8 CountLow
Definition AHCI.h:154
Kernel::UInt8 Rsv4[2]
Definition AHCI.h:161
Kernel::UInt8 FisType
Definition AHCI.h:130
Kernel::UInt8 Rsv2
Definition AHCI.h:151
Kernel::UInt8 Reserved1
Definition AHCI.h:136
Kernel::UInt8 Device
Definition AHCI.h:145
Kernel::UInt8 DTD
Definition AHCI.h:134
Kernel::UInt8 Lba1
Definition AHCI.h:143
Kernel::UInt8 CountHigh
Definition AHCI.h:155
Kernel::UInt8 Status
Definition AHCI.h:138
Kernel::UInt8 Lba5
Definition AHCI.h:150
Kernel::UInt8 Error
Definition AHCI.h:139
Kernel::UInt8 Lba3
Definition AHCI.h:148
Kernel::UInt8 Lba0
Definition AHCI.h:142
Kernel::UInt8 Rsv3
Definition AHCI.h:156
Kernel::UInt8 Lba2
Definition AHCI.h:144
Kernel::UInt8 PortMul
Definition AHCI.h:132
Kernel::UInt8 Reserved0
Definition AHCI.h:133
Kernel::UInt8 IE
Definition AHCI.h:135
Kernel::UInt8 EStatus
Definition AHCI.h:157
Kernel::UInt16 TranferCount
Definition AHCI.h:160
Definition AHCI.h:82
Kernel::UInt8 Rsv2
Definition AHCI.h:104
Kernel::UInt8 Rsv3[2]
Definition AHCI.h:109
Kernel::UInt8 CountLow
Definition AHCI.h:107
Kernel::UInt8 Lba0
Definition AHCI.h:95
Kernel::UInt8 PortMul
Definition AHCI.h:86
Kernel::UInt8 Lba4
Definition AHCI.h:102
Kernel::UInt8 IE
Definition AHCI.h:88
Kernel::UInt8 Reserved1
Definition AHCI.h:89
Kernel::UInt8 Lba2
Definition AHCI.h:97
Kernel::UInt8 Device
Definition AHCI.h:98
Kernel::UInt8 Error
Definition AHCI.h:92
Kernel::UInt8 Status
Definition AHCI.h:91
Kernel::UInt8 FisType
Definition AHCI.h:84
Kernel::UInt8 Rsv4[4]
Definition AHCI.h:112
Kernel::UInt8 Reserved0
Definition AHCI.h:87
Kernel::UInt8 Lba3
Definition AHCI.h:101
Kernel::UInt8 Lba5
Definition AHCI.h:103
Kernel::UInt8 Lba1
Definition AHCI.h:96
Kernel::UInt8 CountHigh
Definition AHCI.h:108
Definition AHCI.h:49
Kernel::UInt8 Command
Definition AHCI.h:57
Kernel::UInt8 Lba4
Definition AHCI.h:68
Kernel::UInt8 Icc
Definition AHCI.h:75
Kernel::UInt8 Lba0
Definition AHCI.h:61
Kernel::UInt8 Lba2
Definition AHCI.h:63
Kernel::UInt8 FisType
Definition AHCI.h:51
Kernel::UInt8 Reserved0
Definition AHCI.h:54
Kernel::UInt8 Lba3
Definition AHCI.h:67
Kernel::UInt8 Lba1
Definition AHCI.h:62
Kernel::UInt8 PortMul
Definition AHCI.h:53
Kernel::UInt8 FeatureLow
Definition AHCI.h:58
Kernel::UInt8 CmdOrCtrl
Definition AHCI.h:55
Kernel::UInt8 Reserved1[4]
Definition AHCI.h:79
Kernel::UInt8 Lba5
Definition AHCI.h:69
Kernel::UInt8 CountHigh
Definition AHCI.h:74
Kernel::UInt8 FeatureHigh
Definition AHCI.h:70
Kernel::UInt8 Control
Definition AHCI.h:76
Kernel::UInt8 CountLow
Definition AHCI.h:73
Kernel::UInt8 Device
Definition AHCI.h:64
Kernel::UInt8 Pmp
Definition AHCI.h:276
Kernel::UInt8 Write
Definition AHCI.h:269
Kernel::UInt8 Prefetchable
Definition AHCI.h:270
Kernel::UInt8 Cfl
Definition AHCI.h:267
Kernel::UInt8 Reserved0
Definition AHCI.h:275
Kernel::UInt8 Atapi
Definition AHCI.h:268
Kernel::UInt8 Clear
Definition AHCI.h:274
Kernel::UInt8 BIST
Definition AHCI.h:273
Kernel::UInt8 Reset
Definition AHCI.h:272
Definition AHCI.h:263
Kernel::UInt32 Ctba
Definition AHCI.h:285
Kernel::UInt16 Prdtl
Definition AHCI.h:282
Kernel::UInt32 Rsv[4]
Definition AHCI.h:288
Kernel::UInt32 Ctbau
Definition AHCI.h:286
Kernel::UInt32 Prdbc
Definition AHCI.h:283
Definition AHCI.h:319
Kernel::UInt8 Rsv[48]
Definition AHCI.h:322
struct HbaPrdtEntry Prdt[1]
Definition AHCI.h:323
Kernel::UInt8 Acmd[16]
Definition AHCI.h:321
Kernel::UInt8 Cfis[64]
Definition AHCI.h:320
Definition AHCI.h:291
FisPioSetup Psfis
Definition AHCI.h:296
FisRegD2H Rfis
Definition AHCI.h:299
Kernel::UInt8 Pad0[4]
Definition AHCI.h:294
FisDevBits Sdbfis
Definition AHCI.h:302
Kernel::UInt8 Pad1[12]
Definition AHCI.h:297
Kernel::UInt8 Pad2[4]
Definition AHCI.h:300
Kernel::UInt8 Ufis[64]
Definition AHCI.h:304
Kernel::UInt8 Rsv[0x100 - 0xA0]
Definition AHCI.h:306
FisDmaSetup Dsfis
Definition AHCI.h:293
Definition AHCI.h:241
Kernel::UInt32 Cap
Definition AHCI.h:243
HbaPort Ports[1]
Definition AHCI.h:258
Kernel::UInt32 Ghc
Definition AHCI.h:244
Kernel::UInt32 Is
Definition AHCI.h:245
Kernel::UInt32 Em_loc
Definition AHCI.h:250
Kernel::UInt32 Ccc_pts
Definition AHCI.h:249
Kernel::UInt8 Vendor[0x100 - 0xA0]
Definition AHCI.h:256
Kernel::UInt32 Cap2
Definition AHCI.h:252
Kernel::UInt8 Resv0[0xA0 - 0x2C]
Definition AHCI.h:255
Kernel::UInt32 Ccc_ctl
Definition AHCI.h:248
Kernel::UInt32 Bohc
Definition AHCI.h:253
Kernel::UInt32 Vs
Definition AHCI.h:247
Kernel::UInt32 Em_ctl
Definition AHCI.h:251
Kernel::UInt32 Pi
Definition AHCI.h:246
ifndef kSATAGHC_AE
Definition AHCI.h:219
Kernel::UInt32 Reserved1[11]
Definition AHCI.h:237
Kernel::UInt32 Ie
Definition AHCI.h:225
Kernel::UInt32 Sntf
Definition AHCI.h:235
Kernel::UInt32 Cmd
Definition AHCI.h:226
Kernel::UInt32 Fb
Definition AHCI.h:222
Kernel::UInt32 Clb
Definition AHCI.h:220
Kernel::UInt32 Vendor[4]
Definition AHCI.h:238
Kernel::UInt32 Sctl
Definition AHCI.h:231
Kernel::UInt32 Ssts
Definition AHCI.h:230
Kernel::UInt32 Sact
Definition AHCI.h:233
Kernel::UInt32 Ci
Definition AHCI.h:234
Kernel::UInt32 Is
Definition AHCI.h:224
Kernel::UInt32 Clbu
Definition AHCI.h:221
Kernel::UInt32 Serr
Definition AHCI.h:232
Kernel::UInt32 Sig
Definition AHCI.h:229
Kernel::UInt32 Tfd
Definition AHCI.h:228
Kernel::UInt32 Fbs
Definition AHCI.h:236
Kernel::UInt32 Reserved0
Definition AHCI.h:227
Kernel::UInt32 Fbu
Definition AHCI.h:223
Definition AHCI.h:309
Kernel::UInt32 Dbau
Definition AHCI.h:311
Kernel::UInt32 Reserved0
Definition AHCI.h:312
Kernel::UInt32 Dbc
Definition AHCI.h:314
Kernel::UInt32 Dba
Definition AHCI.h:310
Kernel::UInt32 Reserved1
Definition AHCI.h:315
Kernel::UInt32 Ie
Definition AHCI.h:316
Definition AHCI.h:265
struct HbaCmdHeader::HbaFlags::HbaFlags_ Struct
Kernel::UInt16 Flags
Definition AHCI.h:279
Definition AHCI.h:1