1 /*
2  * ATA Definitions
3  */
4 
5 #ifndef __ATA_H__
6 #define __ATA_H__
7 
8 typedef struct ATAIdentifyDevice
9 {
10     uint16_t	_rsvd0[10];	// 0-9
11     uint8_t	serial[20];	// 10-19    - Serial
12     uint16_t	_rsvd1[3];	// 20-22
13     uint8_t	firmware[8];	// 23-26    - Firmware
14     uint8_t	model[40];	// 27-46    - Model
15     uint16_t	_rsvd2[16];	// 47-62 X
16     uint16_t	dmaMode;	// 63	    - DMA Mode
17     uint16_t	_rsvd3[11];	// 64-74 X
18     uint16_t	queueDepth;	// 75	    - Queue Depth
19     uint16_t	sataCap;	// 76	    - SATA Capabilities
20     uint16_t	ncqCap;		// 77	    - NCQ Capabilities
21     uint16_t	_rsvd4[8];	// 78-85
22     uint16_t	deviceFlags;	// 86	    - Device Flags (48-bit Addressing)
23     uint16_t	deviceFlags2;	// 87	    - Device Flags 2 (SMART)
24     uint16_t	udmaMode;	// 88	    - Ultra DMA Mode
25     uint16_t	_rsvd5[11];	// 89-99
26     uint64_t	lbaSectors;	// 100-103  - User Addressable Logical Sectors
27     uint16_t	_rsvd6[2];	// 104-105
28     uint16_t	sectorSize;	// 106	    - Physical Sector Size
29     uint16_t	_rsvd7[148];	// 107-254
30     uint16_t	chksum;		// 255	    - Checksum
31 } ATAIdentifyDevice;
32 
33 #endif /* __ATA_H__ */
34 
35