~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/openbios/drivers/hdreg.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * this header holds data structures as dictated by spec
 
3
 */
 
4
#ifndef HDREG_H
 
5
#define HDREG_H
 
6
 
 
7
struct hd_driveid {
 
8
        unsigned short  config;         /* lots of obsolete bit flags */
 
9
        unsigned short  cyls;           /* Obsolete, "physical" cyls */
 
10
        unsigned short  reserved2;      /* reserved (word 2) */
 
11
        unsigned short  heads;          /* Obsolete, "physical" heads */
 
12
        unsigned short  track_bytes;    /* unformatted bytes per track */
 
13
        unsigned short  sector_bytes;   /* unformatted bytes per sector */
 
14
        unsigned short  sectors;        /* Obsolete, "physical" sectors per track */
 
15
        unsigned short  vendor0;        /* vendor unique */
 
16
        unsigned short  vendor1;        /* vendor unique */
 
17
        unsigned short  vendor2;        /* Retired vendor unique */
 
18
        unsigned char   serial_no[20];  /* 0 = not_specified */
 
19
        unsigned short  buf_type;       /* Retired */
 
20
        unsigned short  buf_size;       /* Retired, 512 byte increments
 
21
                                         * 0 = not_specified
 
22
                                         */
 
23
        unsigned short  ecc_bytes;      /* for r/w long cmds; 0 = not_specified */
 
24
        unsigned char   fw_rev[8];      /* 0 = not_specified */
 
25
        unsigned char   model[40];      /* 0 = not_specified */
 
26
        unsigned char   max_multsect;   /* 0=not_implemented */
 
27
        unsigned char   vendor3;        /* vendor unique */
 
28
        unsigned short  dword_io;       /* 0=not_implemented; 1=implemented */
 
29
        unsigned char   vendor4;        /* vendor unique */
 
30
        unsigned char   capability;     /* (upper byte of word 49)
 
31
                                         *  3:  IORDYsup
 
32
                                         *  2:  IORDYsw
 
33
                                         *  1:  LBA
 
34
                                         *  0:  DMA
 
35
                                         */
 
36
        unsigned short  reserved50;     /* reserved (word 50) */
 
37
        unsigned char   vendor5;        /* Obsolete, vendor unique */
 
38
        unsigned char   tPIO;           /* Obsolete, 0=slow, 1=medium, 2=fast */
 
39
        unsigned char   vendor6;        /* Obsolete, vendor unique */
 
40
        unsigned char   tDMA;           /* Obsolete, 0=slow, 1=medium, 2=fast */
 
41
        unsigned short  field_valid;    /* (word 53)
 
42
                                         *  2:  ultra_ok        word  88
 
43
                                         *  1:  eide_ok         words 64-70
 
44
                                         *  0:  cur_ok          words 54-58
 
45
                                         */
 
46
        unsigned short  cur_cyls;       /* Obsolete, logical cylinders */
 
47
        unsigned short  cur_heads;      /* Obsolete, l heads */
 
48
        unsigned short  cur_sectors;    /* Obsolete, l sectors per track */
 
49
        unsigned short  cur_capacity0;  /* Obsolete, l total sectors on drive */
 
50
        unsigned short  cur_capacity1;  /* Obsolete, (2 words, misaligned int)     */
 
51
        unsigned char   multsect;       /* current multiple sector count */
 
52
        unsigned char   multsect_valid; /* when (bit0==1) multsect is ok */
 
53
        unsigned int    lba_capacity;   /* Obsolete, total number of sectors */
 
54
        unsigned short  dma_1word;      /* Obsolete, single-word dma info */
 
55
        unsigned short  dma_mword;      /* multiple-word dma info */
 
56
        unsigned short  eide_pio_modes; /* bits 0:mode3 1:mode4 */
 
57
        unsigned short  eide_dma_min;   /* min mword dma cycle time (ns) */
 
58
        unsigned short  eide_dma_time;  /* recommended mword dma cycle time (ns) */
 
59
        unsigned short  eide_pio;       /* min cycle time (ns), no IORDY  */
 
60
        unsigned short  eide_pio_iordy; /* min cycle time (ns), with IORDY */
 
61
        unsigned short  words69_70[2];  /* reserved words 69-70
 
62
                                         * future command overlap and queuing
 
63
                                         */
 
64
        /* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
 
65
        unsigned short  words71_74[4];  /* reserved words 71-74
 
66
                                         * for IDENTIFY PACKET DEVICE command
 
67
                                         */
 
68
        unsigned short  queue_depth;    /* (word 75)
 
69
                                         * 15:5 reserved
 
70
                                         *  4:0 Maximum queue depth -1
 
71
                                         */
 
72
        unsigned short  words76_79[4];  /* reserved words 76-79 */
 
73
        unsigned short  major_rev_num;  /* (word 80) */
 
74
        unsigned short  minor_rev_num;  /* (word 81) */
 
75
        unsigned short  command_set_1;  /* (word 82) supported
 
76
                                         * 15:  Obsolete
 
77
                                         * 14:  NOP command
 
78
                                         * 13:  READ_BUFFER
 
79
                                         * 12:  WRITE_BUFFER
 
80
                                         * 11:  Obsolete
 
81
                                         * 10:  Host Protected Area
 
82
                                         *  9:  DEVICE Reset
 
83
                                         *  8:  SERVICE Interrupt
 
84
                                         *  7:  Release Interrupt
 
85
                                         *  6:  look-ahead
 
86
                                         *  5:  write cache
 
87
                                         *  4:  PACKET Command
 
88
                                         *  3:  Power Management Feature Set
 
89
                                         *  2:  Removable Feature Set
 
90
                                         *  1:  Security Feature Set
 
91
                                         *  0:  SMART Feature Set
 
92
                                         */
 
93
        unsigned short  command_set_2;  /* (word 83)
 
94
                                         * 15:  Shall be ZERO
 
95
                                         * 14:  Shall be ONE
 
96
                                         * 13:  FLUSH CACHE EXT
 
97
                                         * 12:  FLUSH CACHE
 
98
                                         * 11:  Device Configuration Overlay
 
99
                                         * 10:  48-bit Address Feature Set
 
100
                                         *  9:  Automatic Acoustic Management
 
101
                                         *  8:  SET MAX security
 
102
                                         *  7:  reserved 1407DT PARTIES
 
103
                                         *  6:  SetF sub-command Power-Up
 
104
                                         *  5:  Power-Up in Standby Feature Set
 
105
                                         *  4:  Removable Media Notification
 
106
                                         *  3:  APM Feature Set
 
107
                                         *  2:  CFA Feature Set
 
108
                                         *  1:  READ/WRITE DMA QUEUED
 
109
                                         *  0:  Download MicroCode
 
110
                                         */
 
111
        unsigned short  cfsse;          /* (word 84)
 
112
                                         * cmd set-feature supported extensions
 
113
                                         * 15:  Shall be ZERO
 
114
                                         * 14:  Shall be ONE
 
115
                                         * 13:6 reserved
 
116
                                         *  5:  General Purpose Logging
 
117
                                         *  4:  Streaming Feature Set
 
118
                                         *  3:  Media Card Pass Through
 
119
                                         *  2:  Media Serial Number Valid
 
120
                                         *  1:  SMART selt-test supported
 
121
                                         *  0:  SMART error logging
 
122
                                         */
 
123
        unsigned short  cfs_enable_1;   /* (word 85)
 
124
                                         * command set-feature enabled
 
125
                                         * 15:  Obsolete
 
126
                                         * 14:  NOP command
 
127
                                         * 13:  READ_BUFFER
 
128
                                         * 12:  WRITE_BUFFER
 
129
                                         * 11:  Obsolete
 
130
                                         * 10:  Host Protected Area
 
131
                                         *  9:  DEVICE Reset
 
132
                                         *  8:  SERVICE Interrupt
 
133
                                         *  7:  Release Interrupt
 
134
                                         *  6:  look-ahead
 
135
                                         *  5:  write cache
 
136
                                         *  4:  PACKET Command
 
137
                                         *  3:  Power Management Feature Set
 
138
                                         *  2:  Removable Feature Set
 
139
                                         *  1:  Security Feature Set
 
140
                                         *  0:  SMART Feature Set
 
141
                                         */
 
142
        unsigned short  cfs_enable_2;   /* (word 86)
 
143
                                         * command set-feature enabled
 
144
                                         * 15:  Shall be ZERO
 
145
                                         * 14:  Shall be ONE
 
146
                                         * 13:  FLUSH CACHE EXT
 
147
                                         * 12:  FLUSH CACHE
 
148
                                         * 11:  Device Configuration Overlay
 
149
                                         * 10:  48-bit Address Feature Set
 
150
                                         *  9:  Automatic Acoustic Management
 
151
                                         *  8:  SET MAX security
 
152
                                         *  7:  reserved 1407DT PARTIES
 
153
                                         *  6:  SetF sub-command Power-Up
 
154
                                         *  5:  Power-Up in Standby Feature Set
 
155
                                         *  4:  Removable Media Notification
 
156
                                         *  3:  APM Feature Set
 
157
                                         *  2:  CFA Feature Set
 
158
                                         *  1:  READ/WRITE DMA QUEUED
 
159
                                         *  0:  Download MicroCode
 
160
                                         */
 
161
        unsigned short  csf_default;    /* (word 87)
 
162
                                         * command set-feature default
 
163
                                         * 15:  Shall be ZERO
 
164
                                         * 14:  Shall be ONE
 
165
                                         * 13:6 reserved
 
166
                                         *  5:  General Purpose Logging enabled
 
167
                                         *  4:  Valid CONFIGURE STREAM executed
 
168
                                         *  3:  Media Card Pass Through enabled
 
169
                                         *  2:  Media Serial Number Valid
 
170
                                         *  1:  SMART selt-test supported
 
171
                                         *  0:  SMART error logging
 
172
                                         */
 
173
        unsigned short  dma_ultra;      /* (word 88) */
 
174
        unsigned short  trseuc;         /* time required for security erase */
 
175
        unsigned short  trsEuc;         /* time required for enhanced erase */
 
176
        unsigned short  CurAPMvalues;   /* current APM values */
 
177
        unsigned short  mprc;           /* master password revision code */
 
178
        unsigned short  hw_config;      /* hardware config (word 93)
 
179
                                         * 15:  Shall be ZERO
 
180
                                         * 14:  Shall be ONE
 
181
                                         * 13:
 
182
                                         * 12:
 
183
                                         * 11:
 
184
                                         * 10:
 
185
                                         *  9:
 
186
                                         *  8:
 
187
                                         *  7:
 
188
                                         *  6:
 
189
                                         *  5:
 
190
                                         *  4:
 
191
                                         *  3:
 
192
                                         *  2:
 
193
                                         *  1:
 
194
                                         *  0:  Shall be ONE
 
195
                                         */
 
196
        unsigned short  acoustic;       /* (word 94)
 
197
                                         * 15:8 Vendor's recommended value
 
198
                                         *  7:0 current value
 
199
                                         */
 
200
        unsigned short  msrqs;          /* min stream request size */
 
201
        unsigned short  sxfert;         /* stream transfer time */
 
202
        unsigned short  sal;            /* stream access latency */
 
203
        unsigned int    spg;            /* stream performance granularity */
 
204
        unsigned long long lba_capacity_2;/* 48-bit total number of sectors */
 
205
        unsigned short  words104_125[22];/* reserved words 104-125 */
 
206
        unsigned short  last_lun;       /* (word 126) */
 
207
        unsigned short  word127;        /* (word 127) Feature Set
 
208
                                         * Removable Media Notification
 
209
                                         * 15:2 reserved
 
210
                                         *  1:0 00 = not supported
 
211
                                         *      01 = supported
 
212
                                         *      10 = reserved
 
213
                                         *      11 = reserved
 
214
                                         */
 
215
        unsigned short  dlf;            /* (word 128)
 
216
                                         * device lock function
 
217
                                         * 15:9 reserved
 
218
                                         *  8   security level 1:max 0:high
 
219
                                         *  7:6 reserved
 
220
                                         *  5   enhanced erase
 
221
                                         *  4   expire
 
222
                                         *  3   frozen
 
223
                                         *  2   locked
 
224
                                         *  1   en/disabled
 
225
                                         *  0   capability
 
226
                                         */
 
227
        unsigned short  csfo;           /*  (word 129)
 
228
                                         * current set features options
 
229
                                         * 15:4 reserved
 
230
                                         *  3:  auto reassign
 
231
                                         *  2:  reverting
 
232
                                         *  1:  read-look-ahead
 
233
                                         *  0:  write cache
 
234
                                         */
 
235
        unsigned short  words130_155[26];/* reserved vendor words 130-155 */
 
236
        unsigned short  word156;        /* reserved vendor word 156 */
 
237
        unsigned short  words157_159[3];/* reserved vendor words 157-159 */
 
238
        unsigned short  cfa_power;      /* (word 160) CFA Power Mode
 
239
                                         * 15 word 160 supported
 
240
                                         * 14 reserved
 
241
                                         * 13
 
242
                                         * 12
 
243
                                         * 11:0
 
244
                                         */
 
245
        unsigned short  words161_175[15];/* Reserved for CFA */
 
246
        unsigned short  words176_205[30];/* Current Media Serial Number */
 
247
        unsigned short  words206_254[49];/* reserved words 206-254 */
 
248
        unsigned short  integrity_word; /* (word 255)
 
249
                                         * 15:8 Checksum
 
250
                                         *  7:0 Signature
 
251
                                         */
 
252
};
 
253
 
 
254
struct request_sense {
 
255
#if defined(CONFIG_BIG_ENDIAN)
 
256
        u8 valid                : 1;
 
257
        u8 error_code           : 7;
 
258
#elif defined(CONFIG_LITTLE_ENDIAN)
 
259
        u8 error_code           : 7;
 
260
        u8 valid                : 1;
 
261
#endif
 
262
        u8 segment_number;
 
263
#if defined(CONFIG_BIG_ENDIAN)
 
264
        u8 reserved1            : 2;
 
265
        u8 ili                  : 1;
 
266
        u8 reserved2            : 1;
 
267
        u8 sense_key            : 4;
 
268
#elif defined(CONFIG_LITTLE_ENDIAN)
 
269
        u8 sense_key            : 4;
 
270
        u8 reserved2            : 1;
 
271
        u8 ili                  : 1;
 
272
        u8 reserved1            : 2;
 
273
#endif
 
274
        u8 information[4];
 
275
        u8 add_sense_len;
 
276
        u8 command_info[4];
 
277
        u8 asc;
 
278
        u8 ascq;
 
279
        u8 fruc;
 
280
        u8 sks[3];
 
281
        u8 asb[46];
 
282
};
 
283
 
 
284
struct atapi_capacity {
 
285
        u32 lba;
 
286
        u32 block_size;
 
287
};
 
288
 
 
289
#endif