30#ifndef __AHCI_DISK_H__
31#define __AHCI_DISK_H__
33#define ATA_SR_BSY 0x80
34#define ATA_SR_DRDY 0x40
36#define ATA_SR_DSC 0x10
37#define ATA_SR_DRQ 0x08
38#define ATA_SR_CORR 0x04
39#define ATA_SR_IDX 0x02
40#define ATA_SR_ERR 0x01
42#define ATA_ER_BBK 0x80
43#define ATA_ER_UNC 0x40
45#define ATA_ER_IDNF 0x10
46#define ATA_ER_MCR 0x08
47#define ATA_ER_ABRT 0x04
48#define ATA_ER_TK0NF 0x02
49#define ATA_ER_AMNF 0x01
51#define ATA_CMD_READ_PIO 0x20
52#define ATA_CMD_READ_PIO_EXT 0x24
53#define ATA_CMD_READ_DMA 0xC8
54#define ATA_CMD_READ_DMA_EXT 0x25
55#define ATA_CMD_WRITE_PIO 0x30
56#define ATA_CMD_WRITE_PIO_EXT 0x34
57#define ATA_CMD_WRITE_DMA 0xCA
58#define ATA_CMD_WRITE_DMA_EXT 0x35
59#define ATA_CMD_CACHE_FLUSH 0xE7
60#define ATA_CMD_CACHE_FLUSH_EXT 0xEA
61#define ATA_CMD_PACKET 0xA0
62#define ATA_CMD_IDENTIFY_PACKET 0xA1
63#define ATA_CMD_IDENTIFY 0xEC
65#define ATAPI_CMD_READ 0xA8
66#define ATAPI_CMD_EJECT 0x1B
68#define ATA_IDENT_DEVICETYPE 0
69#define ATA_IDENT_CYLINDERS 2
70#define ATA_IDENT_HEADS 6
71#define ATA_IDENT_SECTORS 12
72#define ATA_IDENT_SERIAL 20
73#define ATA_IDENT_MODEL 54
74#define ATA_IDENT_CAPABILITIES 98
75#define ATA_IDENT_FIELDVALID 106
76#define ATA_IDENT_MAX_LBA 120
77#define ATA_IDENT_COMMANDSETS 164
78#define ATA_IDENT_MAX_LBA_EXT 200
83#define ATA_MASTER 0x00
86#define ATA_REG_DATA 0x00
87#define ATA_REG_ERROR 0x01
88#define ATA_REG_FEATURES 0x01
89#define ATA_REG_SECCOUNT0 0x02
90#define ATA_REG_LBA0 0x03
91#define ATA_REG_LBA1 0x04
92#define ATA_REG_LBA2 0x05
93#define ATA_REG_HDDEVSEL 0x06
94#define ATA_REG_COMMAND 0x07
95#define ATA_REG_STATUS 0x07
96#define ATA_REG_SECCOUNT1 0x08
97#define ATA_REG_LBA3 0x09
98#define ATA_REG_LBA4 0x0A
99#define ATA_REG_LBA5 0x0B
100#define ATA_REG_CONTROL 0x0C
101#define ATA_REG_ALTSTATUS 0x0C
102#define ATA_REG_DEVADDRESS 0x0D
105#define ATA_PRIMARY 0x00
106#define ATA_SECONDARY 0x01
110#define ATA_WRITE 0x013
112#define ATA_PRIMARY_IRQ 14
113#define ATA_SECONDARY_IRQ 15
116#define ATA_PRIMARY_IO 0x1F0
117#define ATA_SECONDARY_IO 0x170
119#define ATA_PRIMARY_DCR_AS 0x3F6
120#define ATA_SECONDARY_DCR_AS 0x376
123#define ATA_PRIMARY_IRQ 14
124#define ATA_SECONDARY_IRQ 15
126#define SECTOR_SIZE 512
129#define STATUS_BSY 0x80
130#define STATUS_RDY 0x40
131#define STATUS_DRQ 0x08
132#define STATUS_DF 0x20
133#define STATUS_ERR 0x01
void AuAHCIDiskInitialise(HBA_PORT *port)