Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
422 | giacomo | 1 | /* |
2 | * linux/include/linux/hdsmart.h |
||
3 | * |
||
4 | * Copyright (C) 1999-2000 Michael Cornwell <cornwell@acm.org> |
||
5 | * Copyright (C) 2000 Andre Hedrick <andre@linux-ide.org> |
||
6 | * |
||
7 | * This program is free software; you can redistribute it and/or modify |
||
8 | * it under the terms of the GNU General Public License as published by |
||
9 | * the Free Software Foundation; either version 2, or (at your option) |
||
10 | * any later version. |
||
11 | * |
||
12 | * You should have received a copy of the GNU General Public License |
||
13 | * (for example /usr/src/linux/COPYING); if not, write to the Free |
||
14 | * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
||
15 | */ |
||
16 | |||
17 | #ifndef _LINUX_HDSMART_H |
||
18 | #define _LINUX_HDSMART_H |
||
19 | |||
20 | #define OFFLINE_FULL_SCAN 0 |
||
21 | #define SHORT_SELF_TEST 1 |
||
22 | #define EXTEND_SELF_TEST 2 |
||
23 | #define SHORT_CAPTIVE_SELF_TEST 129 |
||
24 | #define EXTEND_CAPTIVE_SELF_TEST 130 |
||
25 | |||
26 | /* smart_attribute is the vendor specific in SFF-8035 spec */ |
||
27 | typedef struct ata_smart_attribute_s { |
||
28 | unsigned char id; |
||
29 | unsigned short status_flag; |
||
30 | unsigned char normalized; |
||
31 | unsigned char worse_normal; |
||
32 | unsigned char raw[6]; |
||
33 | unsigned char reserv; |
||
34 | } __attribute__ ((packed)) ata_smart_attribute_t; |
||
35 | |||
36 | /* smart_values is format of the read drive Atrribute command */ |
||
37 | typedef struct ata_smart_values_s { |
||
38 | unsigned short revnumber; |
||
39 | ata_smart_attribute_t vendor_attributes [30]; |
||
40 | unsigned char offline_data_collection_status; |
||
41 | unsigned char self_test_exec_status; |
||
42 | unsigned short total_time_to_complete_off_line; |
||
43 | unsigned char vendor_specific_366; |
||
44 | unsigned char offline_data_collection_capability; |
||
45 | unsigned short smart_capability; |
||
46 | unsigned char errorlog_capability; |
||
47 | unsigned char vendor_specific_371; |
||
48 | unsigned char short_test_completion_time; |
||
49 | unsigned char extend_test_completion_time; |
||
50 | unsigned char reserved_374_385 [12]; |
||
51 | unsigned char vendor_specific_386_509 [125]; |
||
52 | unsigned char chksum; |
||
53 | } __attribute__ ((packed)) ata_smart_values_t; |
||
54 | |||
55 | /* Smart Threshold data structures */ |
||
56 | /* Vendor attribute of SMART Threshold */ |
||
57 | typedef struct ata_smart_threshold_entry_s { |
||
58 | unsigned char id; |
||
59 | unsigned char normalized_threshold; |
||
60 | unsigned char reserved[10]; |
||
61 | } __attribute__ ((packed)) ata_smart_threshold_entry_t; |
||
62 | |||
63 | /* Format of Read SMART THreshold Command */ |
||
64 | typedef struct ata_smart_thresholds_s { |
||
65 | unsigned short revnumber; |
||
66 | ata_smart_threshold_entry_t thres_entries[30]; |
||
67 | unsigned char reserved[149]; |
||
68 | unsigned char chksum; |
||
69 | } __attribute__ ((packed)) ata_smart_thresholds_t; |
||
70 | |||
71 | typedef struct ata_smart_errorlog_command_struct_s { |
||
72 | unsigned char devicecontrolreg; |
||
73 | unsigned char featuresreg; |
||
74 | unsigned char sector_count; |
||
75 | unsigned char sector_number; |
||
76 | unsigned char cylinder_low; |
||
77 | unsigned char cylinder_high; |
||
78 | unsigned char drive_head; |
||
79 | unsigned char commandreg; |
||
80 | unsigned int timestamp; |
||
81 | } __attribute__ ((packed)) ata_smart_errorlog_command_struct_t; |
||
82 | |||
83 | typedef struct ata_smart_errorlog_error_struct_s { |
||
84 | unsigned char error_condition; |
||
85 | unsigned char extended_error[14]; |
||
86 | unsigned char state; |
||
87 | unsigned short timestamp; |
||
88 | } __attribute__ ((packed)) ata_smart_errorlog_error_struct_t; |
||
89 | |||
90 | typedef struct ata_smart_errorlog_struct_s { |
||
91 | ata_smart_errorlog_command_struct_t commands[6]; |
||
92 | ata_smart_errorlog_error_struct_t error_struct; |
||
93 | } __attribute__ ((packed)) ata_smart_errorlog_struct_t; |
||
94 | |||
95 | typedef struct ata_smart_errorlog_s { |
||
96 | unsigned char revnumber; |
||
97 | unsigned char error_log_pointer; |
||
98 | ata_smart_errorlog_struct_t errorlog_struct[5]; |
||
99 | unsigned short ata_error_count; |
||
100 | unsigned short non_fatal_count; |
||
101 | unsigned short drive_timeout_count; |
||
102 | unsigned char reserved[53]; |
||
103 | unsigned char chksum; |
||
104 | } __attribute__ ((packed)) ata_smart_errorlog_t; |
||
105 | |||
106 | typedef struct ata_smart_selftestlog_struct_s { |
||
107 | unsigned char selftestnumber; |
||
108 | unsigned char selfteststatus; |
||
109 | unsigned short timestamp; |
||
110 | unsigned char selftestfailurecheckpoint; |
||
111 | unsigned int lbafirstfailure; |
||
112 | unsigned char vendorspecific[15]; |
||
113 | } __attribute__ ((packed)) ata_smart_selftestlog_struct_t; |
||
114 | |||
115 | typedef struct ata_smart_selftestlog_s { |
||
116 | unsigned short revnumber; |
||
117 | ata_smart_selftestlog_struct_t selftest_struct[21]; |
||
118 | unsigned char vendorspecific[2]; |
||
119 | unsigned char mostrecenttest; |
||
120 | unsigned char resevered[2]; |
||
121 | unsigned char chksum; |
||
122 | } __attribute__ ((packed)) ata_smart_selftestlog_t; |
||
123 | |||
124 | #endif /* _LINUX_HDSMART_H */ |