XenevaOS
Loading...
Searching...
No Matches
XenevaOS
Drivers
AHCI
disk.h
Go to the documentation of this file.
1
30
#ifndef __AHCI_DISK_H__
31
#define __AHCI_DISK_H__
32
33
#include "
ahci.h
"
34
35
#define ATA_SR_BSY 0x80
36
#define ATA_SR_DRDY 0x40
37
#define ATA_SR_DF 0x20
38
#define ATA_SR_DSC 0x10
39
#define ATA_SR_DRQ 0x08
40
#define ATA_SR_CORR 0x04
41
#define ATA_SR_IDX 0x02
42
#define ATA_SR_ERR 0x01
43
44
#define ATA_ER_BBK 0x80
45
#define ATA_ER_UNC 0x40
46
#define ATA_ER_MC 0x20
47
#define ATA_ER_IDNF 0x10
48
#define ATA_ER_MCR 0x08
49
#define ATA_ER_ABRT 0x04
50
#define ATA_ER_TK0NF 0x02
51
#define ATA_ER_AMNF 0x01
52
53
#define ATA_CMD_READ_PIO 0x20
54
#define ATA_CMD_READ_PIO_EXT 0x24
55
#define ATA_CMD_READ_DMA 0xC8
56
#define ATA_CMD_READ_DMA_EXT 0x25
57
#define ATA_CMD_WRITE_PIO 0x30
58
#define ATA_CMD_WRITE_PIO_EXT 0x34
59
#define ATA_CMD_WRITE_DMA 0xCA
60
#define ATA_CMD_WRITE_DMA_EXT 0x35
61
#define ATA_CMD_CACHE_FLUSH 0xE7
62
#define ATA_CMD_CACHE_FLUSH_EXT 0xEA
63
#define ATA_CMD_PACKET 0xA0
64
#define ATA_CMD_IDENTIFY_PACKET 0xA1
65
#define ATA_CMD_IDENTIFY 0xEC
66
67
#define ATAPI_CMD_READ 0xA8
68
#define ATAPI_CMD_EJECT 0x1B
69
70
#define ATA_IDENT_DEVICETYPE 0
71
#define ATA_IDENT_CYLINDERS 2
72
#define ATA_IDENT_HEADS 6
73
#define ATA_IDENT_SECTORS 12
74
#define ATA_IDENT_SERIAL 20
75
#define ATA_IDENT_MODEL 54
76
#define ATA_IDENT_CAPABILITIES 98
77
#define ATA_IDENT_FIELDVALID 106
78
#define ATA_IDENT_MAX_LBA 120
79
#define ATA_IDENT_COMMANDSETS 164
80
#define ATA_IDENT_MAX_LBA_EXT 200
81
82
#define IDE_ATA 0x00
83
#define IDE_ATAPI 0x01
84
85
#define ATA_MASTER 0x00
86
#define ATA_SLAVE 0x01
87
88
#define ATA_REG_DATA 0x00
89
#define ATA_REG_ERROR 0x01
90
#define ATA_REG_FEATURES 0x01
91
#define ATA_REG_SECCOUNT0 0x02
92
#define ATA_REG_LBA0 0x03
93
#define ATA_REG_LBA1 0x04
94
#define ATA_REG_LBA2 0x05
95
#define ATA_REG_HDDEVSEL 0x06
96
#define ATA_REG_COMMAND 0x07
97
#define ATA_REG_STATUS 0x07
98
#define ATA_REG_SECCOUNT1 0x08
99
#define ATA_REG_LBA3 0x09
100
#define ATA_REG_LBA4 0x0A
101
#define ATA_REG_LBA5 0x0B
102
#define ATA_REG_CONTROL 0x0C
103
#define ATA_REG_ALTSTATUS 0x0C
104
#define ATA_REG_DEVADDRESS 0x0D
105
106
// Channels:
107
#define ATA_PRIMARY 0x00
108
#define ATA_SECONDARY 0x01
109
110
// Directions:
111
#define ATA_READ 0x00
112
#define ATA_WRITE 0x013
113
114
#define ATA_PRIMARY_IRQ 14
115
#define ATA_SECONDARY_IRQ 15
116
117
118
#define ATA_PRIMARY_IO 0x1F0
119
#define ATA_SECONDARY_IO 0x170
120
121
#define ATA_PRIMARY_DCR_AS 0x3F6
122
#define ATA_SECONDARY_DCR_AS 0x376
123
125
#define ATA_PRIMARY_IRQ 14
126
#define ATA_SECONDARY_IRQ 15
127
128
#define SECTOR_SIZE 512
129
131
#define STATUS_BSY 0x80
132
#define STATUS_RDY 0x40
133
#define STATUS_DRQ 0x08
134
#define STATUS_DF 0x20
135
#define STATUS_ERR 0x01
136
137
/*
138
* AuAHCIDiskInitialise -- initialize the ahci sata disk
139
* @param port -- SATA Drive Port memory
140
* @param slot -- slot number
141
*/
142
extern
void
AHCIDiskInitialise
(
AHCIController
*
controller
,
HBA_PORT
* port);
143
#endif
ahci.h
controller
AHCIController * controller
Definition
ahci.cpp:46
AHCIDiskInitialise
void AHCIDiskInitialise(AHCIController *controller, HBA_PORT *port)
Definition
disk.cpp:326
_AHCI_Controller_
Definition
ahci.h:337
_hba_port_
Definition
ahci.h:99
Generated by
1.9.8