axle OS
x86_32 UNIX-like hobby OS
ide.h
1 #define ATA_SR_BSY 0x80 //busy
2 #define ATA_SR_DRDY 0x40 //drive ready
3 #define ATA_SR_DF 0x20 //drive write fault
4 #define ATA_SR_DSC 0x10 //drive seek complete
5 #define ATA_SR_DRQ 0x08 //data request ready
6 #define ATA_SR_CORR 0x04 //corrected data
7 #define ATA_SR_IDX 0x02 //inlex
8 #define ATA_SR_ERR 0x01 //error
9 
10 #define ATA_ER_BBK 0x80 //bad sector
11 #define ATA_ER_UNC 0x40 //uncorrectable data
12 #define ATA_ER_MC 0x20 //no media
13 #define ATA_ER_IDNF 0x10 //ID mark not found
14 #define ATA_ER_MCR 0x08 //no media
15 #define ATA_ER_ABRT 0x04 //command aborted
16 #define ATA_ER_TK0NF 0x02 //track 0 not found
17 #define ATA_ER_AMNF 0x01 //no address mark
18 
19 #define ATA_CMD_READ_PIO 0x20
20 #define ATA_CMD_READ_PIO_EXT 0x24
21 #define ATA_CMD_READ_DMA 0xC8
22 #define ATA_CMD_READ_DMA_EXT 0x25
23 #define ATA_CMD_WRITE_PIO 0x30
24 #define ATA_CMD_WRITE_PIO_EXT 0x34
25 #define ATA_CMD_WRITE_DMA 0xCA
26 #define ATA_CMD_WRITE_DMA_EXT 0x35
27 #define ATA_CMD_CACHE_FLUSH 0xE7
28 #define ATA_CMD_CACHE_FLUSH_EXT 0xEA
29 #define ATA_CMD_PACKET 0xA0
30 #define ATA_CMD_IDENTIFY_PACKET 0xA1
31 #define ATA_CMD_IDENTIFY 0xEC
32 
33 #define ATAPI_CMD_READ 0xA8
34 #define ATAPI_CMD_EJECT 0x1B
35 
36 #define ATA_IDENT_DEVICETYPE 0
37 #define ATA_IDENT_DEVICETYPE_CYLINDERS 2
38 #define ATA_IDENT_HEADS 6
39 #define ATA_IDENT_SECTORS 12
40 #define ATA_IDENT_SERIAL 20
41 #define ATA_IDENT_MODEL 54
42 #define ATA_IDENT_CAPABILITIES 98
43 #define ATA_IDENT_FIELDVALID 106
44 #define ATA_IDENT_MAX_LBA 120
45 #define ATA_IDENT_COMMANDSETS 164
46 #define ATA_IDENT_MAX_LBA_EXT 200
47 
48 #define IDE_ATA 0x00
49 #define IDE_ATAPI 0x01
50