19 typedef struct tagFIS_REG_H2D
53 typedef struct tagFIS_REG_D2H
87 typedef struct tagFIS_DATA
101 typedef struct tagFIS_PIO_SETUP
138 typedef struct tagFIS_DMA_SETUP
169 typedef volatile struct tagHBA_PORT
192 typedef volatile struct tagHBA_MEM
208 uint8_t rsv[0xA0-0x2C];
211 uint8_t vendor[0x100-0xA0];
217 typedef volatile struct tagHBA_FIS
238 uint8_t rsv[0x100-0xA0];
241 typedef struct tagHBA_CMD_HEADER
269 typedef struct tagHBA_PRDT_ENTRY
281 typedef struct tagHBA_CMD_TBL
296 #define SATA_SIG_ATA 0x00000101 // SATA drive
297 #define SATA_SIG_ATAPI 0xEB140101 // SATAPI drive
298 #define SATA_SIG_SEMB 0xC33C0101 // Enclosure management bridge
299 #define SATA_SIG_PM 0x96690101 // Port multiplier
301 #define HBA_PORT_IPM_ACTIVE 0x1
302 #define HBA_PORT_DET_PRESENT 0x3
304 #define HBA_NO_DEVICE 0x00
306 #define AHCI_DEV_SATAPI 0x01
307 #define AHCI_DEV_SATA 0x02
308 #define AHCI_DEV_PM 0x04
309 #define AHCI_DEV_SEMB 0x08
311 #define ATA_DEV_BUSY 0x80
312 #define ATA_DEV_DRQ 0x08
uint8_t lba1
Definition: priv_ahci.h:33
uint8_t counth
Definition: priv_ahci.h:129
uint32_t sig
Definition: priv_ahci.h:180
uint32_t rsv0
Definition: priv_ahci.h:178
uint32_t sctl
Definition: priv_ahci.h:182
uint8_t error
Definition: priv_ahci.h:113
uint8_t rsv2
Definition: priv_ahci.h:76
int AHCI_FindCMDSlot(HBA_PORT *port)
Definition: ahci.c:299
uint32_t pi
Definition: priv_ahci.h:198
uint8_t lba0
Definition: priv_ahci.h:32
uint8_t rsv2
Definition: priv_ahci.h:125
uint16_t sdbfis
Definition: priv_ahci.h:232
FIS_REG_D2H rfis
Definition: priv_ahci.h:228
uint8_t lba2
Definition: priv_ahci.h:34
uint8_t e_status
Definition: priv_ahci.h:131
uint8_t lba3
Definition: priv_ahci.h:73
uint8_t icc
Definition: priv_ahci.h:46
uint8_t lba5
Definition: priv_ahci.h:40
uint8_t featureh
Definition: priv_ahci.h:41
void AHCI_StopCMD(HBA_PORT *port)
Definition: ahci.c:367
Definition: priv_ahci.h:15
uint8_t device
Definition: priv_ahci.h:119
uint32_t is
Definition: priv_ahci.h:197
uint8_t command
Definition: priv_ahci.h:28
uint8_t lba5
Definition: priv_ahci.h:75
uint32_t em_loc
Definition: priv_ahci.h:202
uint8_t device
Definition: priv_ahci.h:35
uint32_t clbu
Definition: priv_ahci.h:172
uint32_t em_ctl
Definition: priv_ahci.h:203
Definition: priv_ahci.h:269
uint32_t fb
Definition: priv_ahci.h:173
uint8_t lba1
Definition: priv_ahci.h:117
uint16_t DMAbufferID
Definition: priv_ahci.h:153
uint32_t sntf
Definition: priv_ahci.h:186
void AHCI_RebasePort(HBA_PORT *port, uint32_t AHCI_BASE, int portno)
Definition: ahci.c:314
uint8_t control
Definition: priv_ahci.h:47
uint8_t lba4
Definition: priv_ahci.h:74
Definition: priv_ahci.h:217
Definition: priv_ahci.h:169
uint8_t lba0
Definition: priv_ahci.h:67
uint32_t vs
Definition: priv_ahci.h:199
uint32_t resvd
Definition: priv_ahci.h:165
uint32_t dba
Definition: priv_ahci.h:271
Definition: priv_ahci.h:9
uint8_t lba4
Definition: priv_ahci.h:39
uint8_t device
Definition: priv_ahci.h:70
Definition: priv_ahci.h:19
uint32_t rsv0
Definition: priv_ahci.h:273
uint8_t lba1
Definition: priv_ahci.h:68
Definition: priv_ahci.h:87
uint32_t fbu
Definition: priv_ahci.h:174
uint8_t countl
Definition: priv_ahci.h:128
uint8_t fis_type
Definition: priv_ahci.h:104
uint32_t rsvd
Definition: priv_ahci.h:156
uint8_t countl
Definition: priv_ahci.h:44
uint32_t serr
Definition: priv_ahci.h:183
uint8_t lba3
Definition: priv_ahci.h:122
FIS_PIO_SETUP psfis
Definition: priv_ahci.h:224
Definition: priv_ahci.h:53
uint8_t lba4
Definition: priv_ahci.h:123
uint32_t sact
Definition: priv_ahci.h:184
uint32_t DMAbufOffset
Definition: priv_ahci.h:159
uint16_t tc
Definition: priv_ahci.h:134
FIS_TYPE
Definition: priv_ahci.h:7
uint8_t counth
Definition: priv_ahci.h:45
uint8_t lba5
Definition: priv_ahci.h:124
uint32_t ghc
Definition: priv_ahci.h:196
Definition: priv_ahci.h:192
uint8_t rsv3
Definition: priv_ahci.h:130
uint8_t fis_type
Definition: priv_ahci.h:22
uint32_t TransferCount
Definition: priv_ahci.h:162
uint32_t dbau
Definition: priv_ahci.h:272
uint32_t clb
Definition: priv_ahci.h:171
uint32_t cap
Definition: priv_ahci.h:195
Definition: priv_ahci.h:11
uint8_t lba2
Definition: priv_ahci.h:69
Definition: priv_ahci.h:101
Definition: priv_ahci.h:281
Definition: priv_ahci.h:13
uint8_t error
Definition: priv_ahci.h:64
Definition: priv_ahci.h:10
uint8_t counth
Definition: priv_ahci.h:80
uint8_t lba2
Definition: priv_ahci.h:118
uint32_t fbs
Definition: priv_ahci.h:187
void AHCI_StartCMD(HBA_PORT *port)
Definition: ahci.c:355
uint32_t ccc_ctl
Definition: priv_ahci.h:200
Definition: priv_ahci.h:14
uint32_t ssts
Definition: priv_ahci.h:181
uint32_t ie
Definition: priv_ahci.h:176
uint32_t ci
Definition: priv_ahci.h:185
FIS_DMA_SETUP dsfis
Definition: priv_ahci.h:220
uint8_t countl
Definition: priv_ahci.h:79
uint8_t fis_type
Definition: priv_ahci.h:56
uint8_t lba0
Definition: priv_ahci.h:116
uint32_t cap2
Definition: priv_ahci.h:204
Definition: priv_ahci.h:138
Definition: priv_ahci.h:16
uint8_t fis_type
Definition: priv_ahci.h:90
uint8_t lba3
Definition: priv_ahci.h:38
uint8_t status
Definition: priv_ahci.h:112
uint32_t cmd
Definition: priv_ahci.h:177
uint32_t ccc_pts
Definition: priv_ahci.h:201
uint32_t is
Definition: priv_ahci.h:175
uint8_t status
Definition: priv_ahci.h:63
uint32_t tfd
Definition: priv_ahci.h:179
uint8_t featurel
Definition: priv_ahci.h:29
uint8_t fis_type
Definition: priv_ahci.h:141
bool AHCI_SendIOCommand(HBA_PORT *port, uint64_t start, uint32_t count, uint16_t *buf, bool write)
Definition: ahci.c:193
uint32_t bohc
Definition: priv_ahci.h:205
Definition: priv_ahci.h:12