XenevaOS
Loading...
Searching...
No Matches
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*/
143#endif
AHCIController * controller
Definition ahci.cpp:46
void AHCIDiskInitialise(AHCIController *controller, HBA_PORT *port)
Definition disk.cpp:326
Definition ahci.h:337
Definition ahci.h:99