5 // Needed parts of the ATA DRIVE IDENTIFY Structure. Those labeled
8 struct ata_identify_device {
9 unsigned short words000_009[10];
10 unsigned char serial_no[20];
12 ASSERT_SIZEOF_STRUCT(ata_identify_device, 512);
14 /* ata_smart_attribute is the vendor specific in SFF-8035 spec */
16 struct ata_smart_attribute {
18 // meaning of flag bits: see MACROS just below
21 // Format of data returned by SMART READ DATA
22 // Table 62 of T13/1699-D (ATA8-ACS) Revision 6a, September 2008
24 struct ata_smart_values {
25 unsigned short int revnumber;
26 struct ata_smart_attribute vendor_attributes [NUMBER_ATA_SMART_ATTRIBUTES];
30 /* Vendor attribute of SMART Threshold (compare to ata_smart_attribute above) */
32 struct ata_smart_threshold_entry {
34 unsigned char threshold;
37 /* Format of Read SMART THreshold Command */
38 /* Compare to ata_smart_values above */
40 struct ata_smart_thresholds_pvt {
41 unsigned short int revnumber;
42 struct ata_smart_threshold_entry thres_entries[NUMBER_ATA_SMART_ATTRIBUTES];
46 // Table 42 of T13/1321D Rev 1 spec (Error Data Structure)
48 struct ata_smart_errorlog_error_struct {
49 unsigned char reserved;
50 unsigned char error_register;
54 // Table 41 of T13/1321D Rev 1 spec (Command Data Structure)
56 struct ata_smart_errorlog_command_struct {
57 unsigned char devicecontrolreg;
58 unsigned char featuresreg;
60 ASSERT_SIZEOF_STRUCT(ata_smart_errorlog_command_struct, 12);
62 // Table 40 of T13/1321D Rev 1 spec (Error log data structure)
64 struct ata_smart_errorlog_struct {
65 struct ata_smart_errorlog_command_struct commands[5];
66 struct ata_smart_errorlog_error_struct error_struct;
68 ASSERT_SIZEOF_STRUCT(ata_smart_errorlog_struct, 90);
70 // Table 39 of T13/1321D Rev 1 spec (SMART error log sector)
72 struct ata_smart_errorlog {
73 unsigned char revnumber;
74 unsigned char error_log_pointer;
78 // Table 45 of T13/1321D Rev 1 spec (Self-test log descriptor entry)
80 struct ata_smart_selftestlog_struct {
81 unsigned char selftestnumber; // Sector number register
82 unsigned char selfteststatus;
84 ASSERT_SIZEOF_STRUCT(ata_smart_selftestlog_struct, 24);
86 // Table 44 of T13/1321D Rev 1 spec (Self-test log data structure)
88 struct ata_smart_selftestlog {
89 unsigned short int revnumber;
90 struct ata_smart_selftestlog_struct selftest_struct[21];
92 ASSERT_SIZEOF_STRUCT(ata_smart_extselftestlog, 512);
94 // SMART LOG DIRECTORY Table 52 of T13/1532D Vol 1 Rev 1a
96 struct ata_smart_log_entry {
97 unsigned char numsectors;
98 unsigned char reserved;
101 ASSERT_SIZEOF_STRUCT(ata_smart_log_entry, 2);
104 struct ata_smart_log_directory {
105 unsigned short int logversion;
106 struct ata_smart_log_entry entry[255];
109 // SMART SELECTIVE SELF-TEST LOG Table 61 of T13/1532D Volume 1
117 ASSERT_SIZEOF_STRUCT(test_span, 16);
120 struct ata_selective_self_test_log {
121 unsigned short logversion;
122 struct test_span span[5];