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