1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #pragma ident	"%Z%%M%	%I%	%E% SMI"
28 
29 #include <sys/scsi/scsi.h>
30 #include <sys/mtio.h>
31 #include <sys/condvar.h>
32 #include <sys/kstat.h>
33 #include <sys/scsi/targets/stdef.h>
34 
35 /*
36  * General
37  * -------
38  * o MT_DENSITYx counts from 1..4, rather than 0..3.
39  * o Some entries specify a value for the 'length' member that is
40  *   less than the actual length of the 'vid' member. This is done
41  *   intentionally to allow the comparison to succeed for different
42  *   drives.
43  */
44 
45 /*
46  * Drive Tables.
47  *
48  * The structure and option definitions can be
49  * found in <sys/scsi/targets/stdef.h>.
50  *
51  * Note: that blocksize should be a power of two
52  * for fixed-length recording devices.
53  *
54  * Note: the speed codes are unused at present.
55  * The driver turns around whatever is reported
56  * from the drive via the mode sense.
57  *
58  * Note: the read retry and write retry counts
59  * are there to provide a limit until warning
60  * messages are printed.
61  *
62  *
63  * Note: For drives that are not in this table....
64  *
65  * The first open of the device will cause a MODE SENSE command
66  * to be sent. From that we can determine block size. If block
67  * size is zero, than this drive is in variable-record length
68  * mode. The driver uses the SCSI-2 specification density codes in
69  * order to attempt to determine what kind of sequential access
70  * device this is. This will allow determination of 1/4" cartridge,
71  * 1/2" cartridge, some helical scan (3.81 && 8 mm cartridge) and
72  * 1/2" reel tape devices. The driver will print what it finds and is
73  * assuming to the console. If the device you have hooked up returns
74  * the default density code (0) after power up, the drive cannot
75  * determine what kind of drive it might be, so it will assume that
76  * it is an unknown 1/4" cartridge tape (QIC).
77  *
78  * If the drive is determined in this way to be a 1/2" 9-track reel
79  * type device, an attempt will be mode to put it in Variable
80  * record length mode.
81  *
82  * Generic drives are assumed to support only the long erase option
83  * and will not to be run in buffered mode.
84  */
85 
86 /*
87  * Format for Tape Drive Entry
88  *
89  * Please maintain the format currently in use for defining the properties
90  * associated with each tape drive. This format is intended to make the
91  * entries more readable and help increase the accuracy of the entries.
92  * See the actual entries for examples of what they should look like.
93  *
94  * Important points to note about the format:
95  *
96  * 1. The opening and closing braces are indented 2 spaces.
97  * 2. Each line in the entry is indented 4 spaces.
98  * 3. The numerical values and text in the .options comments are indented two
99  *    spaces in the comment block.
100  * 4. The maximum line width is 80 columns; do not exceed this.
101  * 5. The comment delimiters should line up, per the example.
102  * 6. The OR symbol (|) should line up for multiple options.
103  * 7. Hexadecimal values should be capitalized, for consistency.
104  * 8. The leading / in the comment block header is indented 2 spaces and the
105  *    susequent *'s should all line up.
106  * 9. Order of the entries is very important. There are several groups of
107  *    entries where the last entry in the grouping acts as a catch-all. If you
108  *    place an entry after the catch-all, it will never be used by the driver.
109  * 10. TABs should not be used anywhere between the BEGIN CSTYLED and
110  *    END CSTYLED lines.
111  */
112 
113 /*
114  * Supported Drive Options
115  *
116  * The descriptions for the supported drive options are taken from stdef.h.
117  *
118  * ST_VARIABLE                          Device supports variable length record
119  *                                      sizes.
120  * ST_QIC                               QIC tape device.
121  * ST_REEL                              1/2-inch reel tape device.
122  * ST_BSF                               Device supports backspace file as in
123  *                                      mt(1) bsf backspace over EOF marks.
124  *                                      Devices not supporting bsf will fail
125  *                                      with ENOTTY upon use of bsf.
126  * ST_BSR                               Device supports backspace record as in
127  *                                      mt(1) bsr : backspace over records. If
128  *                                      the device does not support bsr, the st
129  *                                      driver emulates the action by rewinding
130  *                                      the tape and using forward space file
131  *                                      (fsf) to the correct file and then uses
132  *                                      forward space record (fsr) to the
133  *                                      correct record.
134  * ST_LONG_ERASE                        Device needs a longer time than normal
135  *                                      to erase.
136  * ST_AUTODEN_OVERRIDE                  Autodensity override flag Device can
137  *                                      figure out the tape density
138  *                                      automatically,without issuing a mode-
139  *                                      select/mode-sense.
140  * ST_NOBUF                             Don't use buffered mode. This disables
141  *                                      the device's ability for buffered writes
142  *                                      i.e. The device acknowledges write
143  *                                      completion after the data is written to
144  *                                      the device's buffer, but before all the
145  *                                      data is actually written to tape.
146  * ST_RESERVED_BIT1                     Reserved bit parity while talking to it.
147  * ST_KNOWS_EOD                         Device knows when EOD (End of Data) has
148  *                                      been reached. If the device knows EOD,
149  *                                      st uses fast file skipping. If it does
150  *                                      not know EOD, file skipping happens one
151  *                                      file at a time.
152  * ST_UNLOADABLE                        Device will not complain if the st
153  *                                      driver is unloaded & loaded again;
154  *                                      e.g. will return the correct inquiry
155  *                                      string.
156  * ST_SOFT_ERROR_REPORTING              Do request or log sense on close to
157  *                                      report soft errors.Currently only
158  *                                      Exabyte and DAT drives support this
159  *                                      feature.
160  * ST_LONG_TIMEOUTS                     Device needs 5 times longer timeouts
161  *                                      for normal operation.
162  * ST_BUFFERED_WRITES                   The data is buffered in the driver and
163  *                                      pre-acked to the application.
164  * ST_NO_RECSIZE_LIMIT                  For variable record size devices only.
165  *                                      If flag is set,then don't limit record
166  *                                      size to 64k as in pre-Solaris 2.4
167  *                                      releases. The only limit on the record
168  *                                      size will be the max record size the
169  *                                      device can handle or the max DMA
170  *                                      transfer size of the machine, which ever
171  *                                      is smaller. Beware of incompatabilities
172  *                                      with tapes of pre-Solaris 2.4 OS's
173  *                                      written with large (>64k) block sizes,
174  *                                      as their true block size is a max of
175  *                                      approx 64k.
176  * ST_MODE_SEL_COMP                     Use mode select of device configuration
177  *                                      page (0x10) to enable/disable
178  *                                      compression instead of density codes
179  *                                      for the "c" and "u" devices.
180  * ST_NO_RESERVE_RELEASE                For devices which do not support
181  *                                      RESERVE/RELEASE SCSI command. If this
182  *                                      is enabled then RESERVE/RELEASE would
183  *                                      not be used during open/close for High
184  *                                      Availability.
185  * ST_READ_IGNORE_ILI                   This flag is only applicable to
186  *                                      variable block devices which support
187  *                                      the SILI bit option. It indicates that
188  *                                      the SILI bit will be ignored during
189  *                                      reads.
190  * ST_READ_IGNORE_EOFS                  When this flag is set two EOF marks do
191  *                                      not indicate an EOM. This option is
192  *                                      only supported on 1/2" reel tapes.
193  * ST_SHORT_FILEMARKS                   This option applies only to EXABYTE 8mm
194  *                                      tape drives which support short
195  *                                      filemarks. When this flag is set, short
196  *                                      filemarks will be used for writing
197  *                                      filemarks.
198  * ST_EJECT_ON_CHANGER_FAILURE          When this flag is set and the tape is
199  *                                      trapped in the medium changer, the
200  *                                      tape is automatically ejected.
201  * ST_RETRY_ON_RECOVERED_DEFERRED_ERROR This option applies only to IBM MAGSTAR
202  *                                      3590. If this flag is set, the st
203  *                                      driver will retry the last cmd if the
204  *                                      last error cause a check condition with
205  *                                      error code 0x71 and sense code 0x01.
206  */
207 
208 /*
209  * Values Corresponding To The Supported Drive Options Flags
210  *
211  * ST_VARIABLE                            0x000001
212  * ST_QIC                                 0x000002
213  * ST_REEL                                0x000004
214  * ST_BSF                                 0x000008
215  * ST_BSR                                 0x000010
216  * ST_LONG_ERASE                          0x000020
217  * ST_AUTODEN_OVERRIDE                    0x000040
218  * ST_NOBUF                               0x000080
219  * ST_RESERVED_BIT1                       0x000100
220  * ST_KNOWS_EOD                           0x000200
221  * ST_UNLOADABLE                          0x000400
222  * ST_SOFT_ERROR_REPORTING                0x000800
223  * ST_LONG_TIMEOUT                        0x001000
224  * ST_BUFFERED_WRITES                     0x004000
225  * ST_NO_RECSIZE_LIMIT                    0x008000
226  * ST_MODE_SEL_COMP                       0x010000
227  * ST_NO_RESERVE_RELEASE                  0x020000
228  * ST_READ_IGNORE_ILI                     0x040000
229  * ST_READ_IGNORE_EOFS                    0x080000
230  * ST_SHORT_FILEMARKS                     0x100000
231  * ST_EJECT_ON_CHANGER_FAILURE            0x200000
232  * ST_RETRY_ON_RECOVERED_DEFERRED_ERROR   0x400000
233  */
234 
235 const struct st_drivetype st_drivetypes[] =
236 {
237 	/* BEGIN CSTYLED */
238   /*
239    * Anritsu 1/2" reel
240    *
241    *     NOTES
242    *     -----
243    *  o This is an unsupported drive.
244    *
245    * [1] The Anritsu 1/2" reel has two density codes (or 0 for "default").
246    * [2] The Anritsu 1/2" reel has only one speed (if the driver ever cares).
247    * [3] max_rretries and max_wretries are driver anachronisms.
248    */
249   {                           /* Structure member Description                 */
250                               /* ---------------- -----------                 */
251     "Unisys 1/2\" Reel",      /* .name            Display ("pretty") name     */
252     15,                       /* .length          Length of next item...      */
253     "ANRITSU DMT2120",        /* .vid             Vendor-product ID string    */
254     ST_TYPE_ANRITSU,          /* .type            Numeric type (cf. mtio.h)   */
255     0,                        /* .bsize           Block size (0 = variable)   */
256                               /* .options         Drive option flags:         */
257     ST_VARIABLE  |            /*    00001           Supports variable length  */
258     ST_REEL      |            /*    00004           1/2-inch reel tape device */
259     ST_BSF       |            /*    00008           Supports SPACE block fwd  */
260     ST_BSR       |            /*    00010           Supports SPACE block rev  */
261     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
262                               /*    -----                                     */
263                               /*    0041D                                     */
264     400,                      /* .max_rretries    [Note 3]                    */
265     400,                      /* .max_wretries    [Note 3]                    */
266     {0x00, 0x02, 0x03, 0x03}, /* .densities       Density codes [Note 1]      */
267     MT_DENSITY2,              /* .default_density (.densities[x])             */
268     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
269   },
270 
271   /*
272    * Archive QIC-150 1/4" cartridge
273    *
274    *     NOTES
275    *     -----
276    *  o The manual for the Archive drive claims that this drive
277    *    can backspace filemarks. In practice this doens't always
278    *    seem to be the case.
279    * [1] The QIC-150 uses 0 or "default" density.
280    * [2] The QIC-150 has only one speed (if the driver ever cares).
281    * [3] max_rretries and max_wretries are driver anachronisms.
282    */
283   {                           /* Structure member Description                 */
284                               /* ---------------- -----------                 */
285     "Archive QIC-150",        /* .name            Display ("pretty") name     */
286     13,                       /* .length          Length of next item...      */
287     "ARCHIVE VIPER",          /* .vid             Vendor-product ID string    */
288     ST_TYPE_ARCHIVE,          /* .type            Numeric type (cf. mtio.h)   */
289     512,                      /* .bsize           Block size (0 = variable)   */
290                               /* .options         Drive option flags:         */
291     ST_QIC              |     /*    00002           QIC tape device           */
292     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
293     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
294     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
295                               /*    -----                                     */
296                               /*    00642                                     */
297     400,                      /* .max_rretries    [Note 3]                    */
298     400,                      /* .max_wretries    [Note 3]                    */
299     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
300     MT_DENSITY2,              /* .default_density (.densities[x])             */
301     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
302   },
303 
304   /*
305    * Archive Python 04106 4mm 2GB drive
306    *
307    *     NOTES
308    *     -----
309    *  o This is an unsupported drive.
310    *
311    * [1] The Python 04106 has only one density, 0x42 (or 0 for "default").
312    * [2] The Python 04106 has only one speed (if the driver ever cares).
313    * [3] max_rretries and max_wretries are driver anachronisms.
314    * [4] The manufacturer recommends 0x2c ("MT_ISPYTHON") here,
315    *     even though ST_TYPE_PYTHON is recommended.  For con-
316    *     sistency, let's not fight it.
317    */
318   {                           /* Structure member Description                 */
319                               /* ---------------- -----------                 */
320     "Seagate Scorpion 24 DDS3 DAT",
321                               /* .name            Display ("pretty") name     */
322     20,                       /* .length          Length of next item...      */
323     "ARCHIVE Python 04106",   /* .vid             Vendor-product ID string    */
324     MT_ISPYTHON,              /* .type            Numeric type  [Note 4]      */
325     0,                        /* .bsize           Block size (0 = variable)   */
326                               /* .options         Drive option flags:         */
327     ST_VARIABLE        |      /*    00001           Supports variable length  */
328     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
329     ST_BSR             |      /*    00010           Supports SPACE block rev  */
330     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
331     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
332     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
333     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
334     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
335                               /*    -----                                     */
336                               /*    09639                                     */
337     400,                      /* .max_rretries    [Note 3]                    */
338     400,                      /* .max_wretries    [Note 3]                    */
339     {0x00, 0x8C, 0x8C, 0x8C}, /* .densities       Density codes [Note 1]      */
340     MT_DENSITY3,              /* .default_density (.densities[x])             */
341     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
342   },
343 
344   /*
345    * Archive/Conner CTDX004 4mm DAT
346    *
347    *     NOTES
348    *     -----
349    * [1] The CTDX004 uses 0 or the "default" density code.
350    * [2] The CTDX004 has only one speed (if the driver ever cares).
351    * [3] max_rretries and max_wretries are driver anachronisms.
352    * [4] Data is buffered in the driver and pre-acked to the application. This
353    *     is only supported in 2.5.1.
354    */
355   {                           /* Structure member Description                 */
356                               /* ---------------- -----------                 */
357     "Archive/Conner CTDX004 4mm DAT",
358                               /* .name            Display ("pretty") name     */
359     20,                       /* .length          Length of next item...      */
360     "ARCHIVE Python 28388",   /* .vid             Vendor-product ID string    */
361     ST_TYPE_PYTHON,           /* .type            Numeric type (cf. mtio.h)   */
362     0,                        /* .bsize           Block size (0 = variable)   */
363                               /* .options         Drive option flags:         */
364     ST_VARIABLE             | /*    00001           Supports variable length  */
365     ST_BSF                  | /*    00008           Supports SPACE block fwd  */
366     ST_BSR                  | /*    00010           Supports SPACE block rev  */
367     ST_LONG_ERASE           | /*    00020           Needs extra time to erase */
368     ST_KNOWS_EOD            | /*    00200           Recognizes end-of-data    */
369     ST_UNLOADABLE           | /*    00400           Driver can be unloaded    */
370     ST_SOFT_ERROR_REPORTING | /*    00800           Reports errors on close   */
371     ST_LONG_TIMEOUTS        | /*    01000           More time for some ops    */
372     ST_BUFFERED_WRITES      | /*    04000           [Note 4]                  */
373     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
374                               /*    -----                                     */
375                               /*    0DE39                                     */
376     400,                      /* .max_rretries    [Note 3]                    */
377     400,                      /* .max_wretries    [Note 3]                    */
378     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
379     MT_DENSITY1,              /* .default_density (.densities[x])             */
380     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
381   },
382 
383   /*
384    * Archive Python 4mm 2GB drive
385    *
386    *     NOTES
387    *     -----
388    *  o This must be the last entry in the list of Python drives, since it
389    *    acts as a catch-all for any Python drive not listed above.
390    *
391    * [1] The Archive Python 4mm has only one density, 0x8c (or 0 for "default").
392    * [2] The Archive Python 4mm has only one speed (if the driver ever cares).
393    * [3] max_rretries and max_wretries are driver anachronisms.
394    * [4] Do a request or log sense on close to report soft errors.
395    */
396   {                           /* Structure member Description                 */
397                               /* ---------------- -----------                 */
398     "Archive Python 4mm Helical Scan",
399                               /* .name            Display ("pretty") name     */
400     14,                       /* .length          Length of next item...      */
401     "ARCHIVE Python",         /* .vid             Vendor-product ID string    */
402     ST_TYPE_PYTHON,           /* .type            Numeric type (cf. mtio.h)   */
403     0,                        /* .bsize           Block size (0 = variable)   */
404                               /* .options         Drive option flags:         */
405     ST_VARIABLE             | /*    00001           Supports variable length  */
406     ST_BSF                  | /*    00008           Supports SPACE block fwd  */
407     ST_BSR                  | /*    00010           Supports SPACE block rev  */
408     ST_LONG_ERASE           | /*    00020           Needs extra time to erase */
409     ST_KNOWS_EOD            | /*    00200           Recognizes end-of-data    */
410     ST_UNLOADABLE           | /*    00400           Driver can be unloaded    */
411     ST_SOFT_ERROR_REPORTING | /*    00800           Error reporting [Note 4]  */
412     ST_LONG_TIMEOUTS        | /*    01000           More time for some ops    */
413     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
414                               /*    -----                                     */
415                               /*    09E39                                     */
416     5000,                     /* .max_rretries    [Note 3]                    */
417     5000,                     /* .max_wretries    [Note 3]                    */
418     {0x00, 0x8C, 0x8C, 0x8C}, /* .densities       Density codes [Note 1]      */
419     MT_DENSITY4,              /* .default_density (.densities[x])             */
420     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
421   },
422 
423   /*
424    * Benchmark DLT1
425    *
426    *     NOTES
427    *     -----
428    * [1] The DLT1 reads several tape formats, but the st driver supports
429    *     only DLT1 native.
430    * [2] The DLT1 has only one speed (if the driver ever cares).
431    * [3] max_rretries and max_wretries are driver anachronisms.
432    * [4] The DLT1 has Density codes that turn on and off compression however
433    *     the data compression enable overrides them.
434    */
435   {                           /* Structure member Description                 */
436                               /* ---------------- -----------                 */
437     "Benchmark DLT1",         /* .name            Display ("pretty") name     */
438     12,                       /* .length          Length of next item...      */
439     "BNCHMARKDLT1",           /* .vid             Vendor-product ID string    */
440     ST_TYPE_BMDLT1,           /* .type            Numeric type (cf. mtio.h)   */
441     0,                        /* .bsize           Block size (0 = variable)   */
442                               /* .options         Drive option flags:         */
443     ST_VARIABLE         |     /*    00001           Supports variable length  */
444     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
445     ST_BSR              |     /*    00010           Supports SPACE block rev  */
446     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
447     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
448     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
449     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
450     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
451     ST_MODE_SEL_COMP,         /*    10000           [Note 4]                  */
452                               /*    -----                                     */
453                               /*    19639                                     */
454     -1,                       /* .max_rretries    [Note 3]                    */
455     -1,                       /* .max_wretries    [Note 3]                    */
456     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
457     MT_DENSITY4,              /* .default_density (.densities[x])             */
458     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
459   },
460 
461 
462 
463   /*
464    * CDC 1/2" cartridge
465    *
466    *     NOTES
467    *     -----
468    *  o This is an unsupported drive.
469    *
470    * [1] The CDC 1/2" cartridge uses 0 or the "default" density code.
471    * [2] The CDC 1/2" cartridge has only one speed (if the driver ever cares).
472    * [3] max_rretries and max_wretries are driver anachronisms.
473    */
474   {                           /* Structure member Description                 */
475                               /* ---------------- -----------                 */
476     "CDC 1/2\" Cartridge",    /* .name            Display ("pretty") name     */
477     3,                        /* .length          Length of next item...      */
478     "LMS",                    /* .vid             Vendor-product ID string    */
479     ST_TYPE_CDC,              /* .type            Numeric type (cf. mtio.h)   */
480     0,                        /* .bsize           Block size (0 = variable)   */
481                               /* .options         Drive option flags:         */
482     ST_VARIABLE         |     /*    00001           Supports variable length  */
483     ST_QIC              |     /*    0x002           QIC tape device           */
484     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
485     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
486     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
487     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
488     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
489                               /*    -----                                     */
490                               /*    0066B                                     */
491     300,                      /* .max_rretries    [Note 3]                    */
492     300,                      /* .max_wretries    [Note 3]                    */
493     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
494     MT_DENSITY2,              /* .default_density (.densities[x])             */
495     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
496   },
497 
498    /*
499    * Emulex MT-02 controller for 1/4" cartridge
500    *
501    *     NOTES
502    *     -----
503    *  o The EMULEX MT-02 adheres to CCS level 0, and thus
504    *    returns nothing of interest for the INQUIRY command
505    *    past the 'response data format' field (which will be
506    *    zero). The driver will recognize this and assume that
507    *    a drive that so responds is actually an MT-02 (there
508    *    is no other way to really do this, awkward as it
509    *    may seem).
510    *
511    *  o This is an unsupported drive.
512    *
513    * [1] Low density is a vendor unique density code.
514    *     This gives us 9 Track QIC-11. Supposedly the MT02 can
515    *     read 4 Track QIC-11 while in this mode. If that doesn't
516    *     work, change one of the duplicated QIC-24 fields to 0x4.
517    * [2] The MT-02 has only one speed (if the driver ever cares).
518    * [3] max_rretries and max_wretries are driver anachronisms.
519    */
520   {                           /* Structure member Description                 */
521                               /* ---------------- -----------                 */
522     "Emulex MT02 QIC-11/QIC-24",
523                               /* .name            Display ("pretty") name     */
524     12,                       /* .length          Length of next item...      */
525     "Emulex  MT02",           /* .vid             Vendor-product ID string    */
526     ST_TYPE_EMULEX,           /* .type            Numeric type (cf. mtio.h)   */
527     512,                      /* .bsize           Block size (0 = variable)   */
528                               /* .options         Drive option flags:         */
529     ST_QIC       |            /*    00002           QIC tape device           */
530     ST_KNOWS_EOD |            /*    00200           Recognizes end-of-data    */
531     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
532                               /*    -----                                     */
533                               /*    00602                                     */
534     130,                      /* .max_rretries    [Note 3]                    */
535     130,                      /* .max_wretries    [Note 3]                    */
536     {0x84, 0x05, 0x05, 0x05}, /* .densities       Density codes [Note 1]      */
537     MT_DENSITY2,              /* .default_density (.densities[x])             */
538     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
539   },
540 
541   /*
542    * Exabyte 8900 8mm helical scan drive (also called Mammoth)
543    *
544    *     NOTES
545    *     -----
546    * [1] Compression on the 8900 is controlled via the Device Configuration mode
547    *     page or the Data Compression page (either one). Even when enabled, the
548    *     8900 automatically disables compression on-the-fly if it determines
549    *     that it cannot achieve a reasonable compression ratio on the data.
550    * [2] The 8900 can write in only one format, which is selected overtly by
551    *     setting Density Code in the block descriptor to 27h; in addition to
552    *     this native format, the 8900 can read tapes written in 8200, 8500 and
553    *     8500-compressed formats. We set the density to 27h at all times: we
554    *     _can_ do this because the format is changed automatically to match the
555    *     data on any previously-written tape; we _must_ do this to ensure that
556    *     never-before-written 8900 AME tapes are written in "8900 format" (all
557    *     writes to them in any other format will fail). By establishing
558    *     MT_DENSITY4 (corresponding to the "c" and "u" minor devices) as the
559    *     default, applications which open '/dev/rmt/x' write compressed data
560    *     automatically (but see Note [1]).
561    * [3] The 8900 has only one speed (if the driver ever cares).
562    * [4] max_rretries and max_wretries are driver anachronisms.
563    */
564   {                           /* Structure member Description                 */
565                               /* ---------------- -----------                 */
566     "Mammoth EXB-8900 8mm Helical Scan",
567                               /* .name            Display ("pretty") name     */
568     16,                       /* .length          Length of next item...      */
569     "EXABYTE EXB-8900",       /* .vid             Vendor-product ID string    */
570     ST_TYPE_EXB8500,          /* .type            Numeric type (cf. mtio.h)   */
571     0,                        /* .bsize           Block size (0 = variable)   */
572                               /* .options         Drive option flags:         */
573     ST_VARIABLE             | /*    00001           Supports variable length  */
574     ST_BSF                  | /*    00008           Supports SPACE block fwd  */
575     ST_BSR                  | /*    00010           Supports SPACE block rev  */
576     ST_LONG_ERASE           | /*    00020           Needs extra time to erase */
577     ST_KNOWS_EOD            | /*    00200           Recognizes end-of-data    */
578     ST_UNLOADABLE           | /*    00400           Driver can be unloaded    */
579     ST_SOFT_ERROR_REPORTING | /*    00800           Reports errors on close   */
580     ST_LONG_TIMEOUTS        | /*    01000           More time for some ops    */
581     ST_NO_RECSIZE_LIMIT     | /*    08000           Supports blocks > 64KB    */
582     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
583                               /*    -----                                     */
584                               /*    19E39                                     */
585     5000,                     /* .max_rretries    [Note 4]                    */
586     5000,                     /* .max_wretries    [Note 4]                    */
587     {0x27, 0x27, 0x27, 0x27}, /* .densities       Density codes [Note 2]      */
588     MT_DENSITY4,              /* .default_density (.densities[x])             */
589     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 3]        */
590   },
591 
592   /*
593    * Exabyte 8mm 5GB cartridge
594    *
595    *     NOTES
596    *     -----
597    *  o  ST_KNOWS_EOD here will cause medium error messages
598    *
599    *  o  The string length (16) has been reduced to 15 to allow for other
600    *     compatible models (eg the 8505 half-height)  (BugTraq #1091196)
601    *
602    * [1] The density code entry requires four values, even if there are less
603    *     than four values for the drive.
604    * [2] The Exabyte EXB-8500 has only one speed (if the driver ever cares).
605    * [3] max_rretries and max_wretries are driver anachronisms.
606    */
607   {                           /* Structure member Description                 */
608                               /* ---------------- -----------                 */
609     "Exabyte EXB-8500 8mm Helical Scan",
610                               /* .name            Display ("pretty") name     */
611     15,                       /* .length          Length of next item...      */
612     "EXABYTE EXB-850*",       /* .vid             Vendor-product ID string    */
613     ST_TYPE_EXB8500,          /* .type            Numeric type (cf. mtio.h)   */
614     0,                        /* .bsize           Block size (0 = variable)   */
615                               /* .options         Drive option flags:         */
616     ST_VARIABLE             | /*    00001           Supports variable length  */
617     ST_BSF                  | /*    00008           Supports SPACE block fwd  */
618     ST_BSR                  | /*    00010           Supports SPACE block rev  */
619     ST_LONG_ERASE           | /*    00020           Needs extra time to erase */
620     ST_KNOWS_EOD            | /*    00200           Recognizes end-of-data    */
621     ST_UNLOADABLE           | /*    00400           Driver can be unloaded    */
622     ST_SOFT_ERROR_REPORTING | /*    00800           Reports errors on close   */
623     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
624                               /*    -----                                     */
625                               /*    08E39                                     */
626     5000,                     /* .max_rretries    [Note 3]                    */
627     5000,                     /* .max_wretries    [Note 3]                    */
628     {0x14, 0x15, 0x8C, 0x8C}, /* .densities       Density codes [Note 1]      */
629     MT_DENSITY2,              /* .default_density (.densities[x])             */
630     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
631   },
632 
633   /*
634    * Exabyte 8mm 2GB cartridge
635    *
636    *     NOTES
637    *     -----
638    * [1] The Exabyte EXB-8200 uses 0 or the "default" density code.
639    * [2] The Exabyte EXB-8200 has only one speed (if the driver ever cares).
640    * [3] max_rretries and max_wretries are driver anachronisms.
641    * [4] Do a request or log sense on close to report soft errors.
642    */
643   {                           /* Structure member Description                 */
644                               /* ---------------- -----------                 */
645     "Exabyte EXB-8200 8mm Helical Scan",
646                               /* .name            Display ("pretty") name     */
647     16,                       /* .length          Length of next item...      */
648     "EXABYTE EXB-8200",       /* .vid             Vendor-product ID string    */
649     ST_TYPE_EXABYTE,          /* .type            Numeric type (cf. mtio.h)   */
650     0,                        /* .bsize           Block size (0 = variable)   */
651                               /* .options         Drive option flags:         */
652     ST_VARIABLE             | /*    00001           Supports variable length  */
653     ST_BSF                  | /*    00008           Supports SPACE block fwd  */
654     ST_BSR                  | /*    00010           Supports SPACE block rev  */
655     ST_LONG_ERASE           | /*    00020           Needs extra time to erase */
656     ST_AUTODEN_OVERRIDE     | /*    00040           Autodensity override flag */
657     ST_UNLOADABLE           | /*    00400           Driver can be unloaded    */
658     ST_SOFT_ERROR_REPORTING | /*    00800           Error reporting [Note 4]  */
659     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
660                               /*    -----                                     */
661                               /*    08C79                                     */
662     5000,                     /* .max_rretries    [Note 3]                    */
663     5000,                     /* .max_wretries    [Note 3]                    */
664     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
665     MT_DENSITY2,              /* .default_density (.densities[x])             */
666     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
667   },
668 
669   /*
670    * Exabyte DC-2000 cartridge
671    *
672    *     NOTES
673    *     -----
674    *  o This is an unsupported drive.
675    *
676    *  o This entry uses a shortened Vendor-product ID string for the
677    *    INQUIRY match.
678    *
679    * [1] The Exabyte DC-2000 uses 0 or the "default" density.
680    * [2] The Exabyte DC-2000 has only one speed (if the driver ever cares).
681    * [3] max_rretries and max_wretries are driver anachronisms.
682    */
683   {                           /* Structure member Description                 */
684                               /* ---------------- -----------                 */
685     "Exabyte EXB-2501 QIC",   /* .name            Display ("pretty") name     */
686     14,                       /* .length          Length of next item...      */
687     "EXABYTE EXB-25**",       /* .vid             Vendor-product ID string    */
688     ST_TYPE_EXABYTE,          /* .type            Numeric type (cf. mtio.h)   */
689     1024,                     /* .bsize           Block size (0 = variable)   */
690                               /* .options         Drive option flags:         */
691     ST_QIC              |     /*    00002           QIC tape device           */
692     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
693     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
694                               /*    -----                                     */
695                               /*    00442                                     */
696     400,                      /* .max_rretries    [Note 3]                    */
697     400,                      /* .max_wretries    [Note 3]                    */
698     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
699     MT_DENSITY2,              /* .default_density (.densities[x])             */
700     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
701   },
702 
703   /*
704    * EXABYTE 4mm Helical Scan
705    *
706    *     NOTES
707    *     -----
708    *
709    *  o This entry uses a shortened Vendor-product ID string for the
710    *    INQUIRY match.
711    *
712    * [1] The EXABYTE 4mm uses 0 or the "default" density code.
713    * [2] The EXABYTE 4mm has only one speed (if the driver ever cares).
714    * [3] max_rretries and max_wretries are driver anachronisms.
715    */
716   {                           /* Structure member Description                 */
717                               /* ---------------- -----------                 */
718     "Exabyte 4mm Helical Scan",
719                               /* .name            Display ("pretty") name     */
720     15,                       /* .length          Length of next item...      */
721     "EXABYTE EXB-420*",       /* .vid             Vendor-product ID string    */
722     ST_TYPE_EXABYTE,          /* .type            Numeric type (cf. mtio.h)   */
723     0,                        /* .bsize           Block size (0 = variable)   */
724                               /* .options         Drive option flags:         */
725     ST_VARIABLE   |           /*    00001           Supports variable length  */
726     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
727     ST_BSR        |           /*    00010           Supports SPACE block rev  */
728     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
729     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
730                               /*    -----                                     */
731                               /*    00439                                     */
732     400,                      /* .max_rretries    [Note 3]                    */
733     400,                      /* .max_wretries    [Note 3]                    */
734     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
735     MT_DENSITY2,              /* .default_density (.densities[x])             */
736     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
737   },
738 
739   /*
740    * Fujitsu 1/2" cartridge
741    *
742    *     NOTES
743    *     -----
744    *  o This is an unsupported drive.
745    *
746    * [1] The Fujitsu 1/2" drive uses 0 or the "default" density code.
747    * [2] The Fujitsu 1/2" drive has only one speed (if the driver ever cares).
748    * [3] max_rretries and max_wretries are driver anachronisms.
749    */
750   {                           /* Structure member Description                 */
751                               /* ---------------- -----------                 */
752     "Fujitsu 1/2\" Cartridge",/* .name            Display ("pretty") name     */
753     2,                        /* .length          Length of next item...      */
754     "\076\000",               /* .vid             Vendor-product ID string    */
755     ST_TYPE_FUJI,             /* .type            Numeric type (cf. mtio.h)   */
756     0,                        /* .bsize           Block size (0 = variable)   */
757                               /* .options         Drive option flags:         */
758     ST_VARIABLE   |           /*    00001           Supports variable length  */
759     ST_QIC        |           /*    00002           QIC tape device           */
760     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
761     ST_BSR        |           /*    00010           Supports SPACE block rev  */
762     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
763     ST_KNOWS_EOD  |           /*    00200           Recognizes end-of-data    */
764     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
765                               /*    -----                                     */
766                               /*    0063B                                     */
767     300,                      /* .max_rretries    [Note 3]                    */
768     300,                      /* .max_wretries    [Note 3]                    */
769     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
770     MT_DENSITY2,              /* .default_density (.densities[x])             */
771     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
772   },
773 
774   /*
775    * HP 1/2" reel
776    *
777    *     NOTES
778    *     -----
779    * [1] The HP 1/2" reel uses the vendor unique density '0xC3':
780    *     this is compressed 6250 mode. Beware that using large
781    *     data sets consisting of repeated data compresses *too*
782    *     well and one can run into the unix 2 gb file offset limit
783    *     this way.
784    * [2] The HP 1/2" reel has only one speed (if the driver ever cares).
785    * [3] max_rretries and max_wretries are driver anachronisms.
786    */
787   {                           /* Structure member Description                 */
788                               /* ---------------- -----------                 */
789     "HP-88780 1/2\" Reel",    /* .name            Display ("pretty") name     */
790     13,                       /* .length          Length of next item...      */
791     "HP      88780",          /* .vid             Vendor-product ID string    */
792     ST_TYPE_HP,               /* .type            Numeric type (cf. mtio.h)   */
793     0,                        /* .bsize           Block size (0 = variable)   */
794                               /* .options         Drive option flags:         */
795     ST_VARIABLE  |            /*    00001           Supports variable length  */
796     ST_REEL      |            /*    00004           1/2-inch reel tape device */
797     ST_BSF       |            /*    00008           Supports SPACE block fwd  */
798     ST_BSR       |            /*    00010           Supports SPACE block rev  */
799     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
800                               /*    -----                                     */
801                               /*    0041D                                     */
802     400,                      /* .max_rretries    [Note 3]                    */
803     400,                      /* .max_wretries    [Note 3]                    */
804     {0x01, 0x02, 0x03, 0xC3}, /* .densities       Density codes [Note 1]      */
805     MT_DENSITY2,              /* .default_density (.densities[x])             */
806     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
807   },
808 
809   /*
810    * HP 35470A 4mm DAT
811    *
812    *     NOTES
813    *     -----
814    *  o This is an unsupported drive.
815    *
816    * [1] The HP 35470A uses 0 or the "default" density code.
817    * [2] The HP 35470A has only one speed (if the driver ever cares).
818    * [3] max_rretries and max_wretries are driver anachronisms.
819    */
820   {                           /* Structure member Description                 */
821                               /* ---------------- -----------                 */
822     "HP 35470A 4mm DAT",      /* .name            Display ("pretty") name     */
823     16,                       /* .length          Length of next item...      */
824     "HP      HP35470A",       /* .vid             Vendor-product ID string    */
825     ST_TYPE_DAT,              /* .type            Numeric type (cf. mtio.h)   */
826     0,                        /* .bsize           Block size (0 = variable)   */
827                               /* .options         Drive option flags:         */
828     ST_VARIABLE         |     /*    00001           Supports variable length  */
829     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
830     ST_BSR              |     /*    00010           Supports SPACE block rev  */
831     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
832     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
833     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
834     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
835     ST_LONG_TIMEOUTS,         /*    01000           More time for some ops    */
836                               /*    -----                                     */
837                               /*    01679                                     */
838     400,                      /* .max_rretries    [Note 3]                    */
839     400,                      /* .max_wretries    [Note 3]                    */
840     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
841     MT_DENSITY2,              /* .default_density (.densities[x])             */
842     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
843   },
844 
845   /*
846    * HP 35480A 4mm DAT
847    *
848    *     NOTES
849    *     -----
850    *  o This is an unsupported drive.
851    *
852    * [1] The HP 35480A uses 0 or the "default" density code.
853    * [2] The HP 35480A has only one speed (if the driver ever cares).
854    * [3] max_rretries and max_wretries are driver anachronisms.
855    */
856   {                           /* Structure member Description                 */
857                               /* ---------------- -----------                 */
858     "HP 35480A 4mm DAT",      /* .name            Display ("pretty") name     */
859     16,                       /* .length          Length of next item...      */
860     "HP      HP35480A",       /* .vid             Vendor-product ID string    */
861     ST_TYPE_DAT,              /* .type            Numeric type (cf. mtio.h)   */
862     0,                        /* .bsize           Block size (0 = variable)   */
863                               /* .options         Drive option flags:         */
864     ST_VARIABLE   |           /*    00001           Supports variable length  */
865     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
866     ST_BSR        |           /*    00010           Supports SPACE block rev  */
867     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
868     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
869                               /*    -----                                     */
870                               /*    00439                                     */
871     400,                      /* .max_rretries    [Note 1]                    */
872     400,                      /* .max_wretries    [Note 1]                    */
873     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 2]      */
874     MT_DENSITY2,              /* .default_density (.densities[x])             */
875     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 3]        */
876   },
877 
878   /*
879    * HP JetStore 6000 C1533
880    *
881    *     NOTES
882    *     -----
883    *  o This is only supported for x86.
884    *
885    * [1] The HP JetStore 6000 uses 0 or the "default" density code.
886    * [2] The HP JetStore 6000 has only one speed (if the driver ever cares).
887    * [3] max_rretries and max_wretries are driver anachronisms.
888    */
889   {                           /* Structure member Description                 */
890                               /* ---------------- -----------                 */
891     "HP JetStore 6000 C1533", /* .name            Display ("pretty") name     */
892     14,                       /* .length          Length of next item...      */
893     "HP      C1533A",         /* .vid             Vendor-product ID string    */
894     ST_TYPE_DAT,              /* .type            Numeric type (cf. mtio.h)   */
895     0,                        /* .bsize           Block size (0 = variable)   */
896                               /* .options         Drive option flags:         */
897     ST_VARIABLE   |           /*    00001           Supports variable length  */
898     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
899     ST_BSR        |           /*    00010           Supports SPACE block rev  */
900     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
901     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
902                               /*    -----                                     */
903                               /*    00639                                     */
904     400,                      /* .max_rretries    [Note 3]                    */
905     400,                      /* .max_wretries    [Note 3]                    */
906     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
907     MT_DENSITY2,              /* .default_density (.densities[x])             */
908     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
909   },
910 
911   /*
912    * HP DDS-3 4mm DAT
913    *
914    *     NOTES
915    *     -----
916    *  o This is an unsupported drive.
917    *
918    * [1] Compression on the HP DDS-3 is controlled
919    *     via the Device Configuration mode page.
920    * [2] The HP DDS-3 has only one density, 0x8c (or 0 for "default").
921    * [3] The HP DDS-3 has only one speed (if the driver ever cares).
922    * [4] max_rretries and max_wretries are driver anachronisms.
923    */
924   {                           /* Structure member Description                 */
925                               /* ---------------- -----------                 */
926     "HP DDS-3 4MM DAT",       /* .name            Display ("pretty") name     */
927     14,                       /* .length          Length of next item...      */
928     "HP      C1537A",         /* .vid             Vendor-product ID string    */
929     MT_ISDAT,                 /* .type            Numeric type (cf. mtio.h)   */
930     0,                        /* .bsize           Block size (0 = variable)   */
931                               /* .options         Drive option flags:         */
932     ST_VARIABLE        |      /*    00001           Supports variable length  */
933     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
934     ST_BSR             |      /*    00010           Supports SPACE block rev  */
935     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
936     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
937     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
938     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
939     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
940                               /*    -----                                     */
941                               /*    09639                                     */
942     400,                      /* .max_rretries    [Note 4]                    */
943     400,                      /* .max_wretries    [Note 4]                    */
944     {0x00, 0x8C, 0x8C, 0x8C}, /* .densities       Density codes [Note 2]      */
945     MT_DENSITY2,              /* .default_density (.densities[x])             */
946     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 3]        */
947   },
948 
949   /*
950    * HP DDS-3 4mm DAT loader
951    *
952    *     NOTES
953    *     -----
954    *  o This is an unsupported drive.
955    *
956    * [1] Compression on the DDS-3 Loader is controlled
957    *     via the Device Configuration mode page.
958    * [2] The DDS-3 Loader has only one density, 0x8c (or 0 for "default").
959    * [3] The DDS-3 Loader has only one speed (if the driver ever cares).
960    * [4] max_rretries and max_wretries are driver anachronisms.
961    */
962   {                           /* Structure member Description                 */
963                               /* ---------------- -----------                 */
964     "HP DDS-3 4MM DAT loader",/* .name            Display ("pretty") name     */
965     14,                       /* .length          Length of next item...      */
966     "HP      C1557A",         /* .vid             Vendor-product ID string    */
967     MT_ISDAT,                 /* .type            Numeric type (cf. mtio.h)   */
968     0,                        /* .bsize           Block size (0 = variable)   */
969                               /* .options         Drive option flags:         */
970     ST_VARIABLE        |      /*    00001           Supports variable length  */
971     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
972     ST_BSR             |      /*    00010           Supports SPACE block rev  */
973     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
974     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
975     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
976     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
977     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
978                               /*    -----                                     */
979                               /*    09639                                     */
980     400,                      /* .max_rretries    [Note 4]                    */
981     400,                      /* .max_wretries    [Note 4]                    */
982     {0x00, 0x8C, 0x8C, 0x8C}, /* .densities       Density codes [Note 2]      */
983     MT_DENSITY2,              /* .default_density (.densities[x])             */
984     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 3]        */
985   },
986 
987   /*
988    * HP C5683A DDS-4 DAT drives with Sun-specific behavior
989    *
990    * When the configuration switches on the drive are set appropriately, the
991    * HP C5683A: interprets a density code of 8Ch to mean "enable compression",
992    * 00h to mean "disable compression"; senses the tape type automatically;
993    * adjusts to match the tape type. (That is, compression is controlled via
994    * the Sun-unique 8Ch density code, rather than using the Data Compression
995    * mode page).
996    *
997    *     NOTES
998    *     -----
999    * [1] 00h = compression disabled, 8Ch = compression enabled, and all DDS-x
1000    *     format-related adjustments are performed automatically by the drive.
1001    * [2] The 5683 has only one speed (if the driver ever cares).
1002    * [3] max_rretries and max_wretries are driver anachronisms.
1003    */
1004   {                           /* Structure member Description                 */
1005                               /* ---------------- -----------                 */
1006     "HP DDS-4 DAT (Sun)",     /* .name            Display ("pretty") name     */
1007     14,                       /* .length          Length of next item...      */
1008     "HP      C5683A",         /* .vid             Vendor-product ID string    */
1009     MT_ISDAT,                 /* .type            Numeric type (cf. mtio.h)   */
1010     0,                        /* .bsize           Block size (0 = variable)   */
1011                               /* .options         Drive option flags:         */
1012     ST_VARIABLE         |     /*    00001           Supports variable length  */
1013     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1014     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1015     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
1016     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1017     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1018     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
1019     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
1020                               /*    -----                                     */
1021                               /*    09639                                     */
1022     -1,                       /* .max_rretries    [Note 3]                    */
1023     -1,                       /* .max_wretries    [Note 3]                    */
1024     {0x00, 0x8C, 0x8C, 0x8C}, /* .densities       Density codes [Note 1]      */
1025     MT_DENSITY2,              /* .default_density (.densities[x])             */
1026     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1027   },
1028 
1029   /*
1030    * HP C5713A DDS-4 DAT autochangers with Sun-specific behavior
1031    *
1032    * When the configuration switches on the drive are set appropriately, the
1033    * HP C5713A: interprets a density code of 8Ch to mean "enable compression",
1034    * 00h to mean "disable compression"; senses the tape type automatically;
1035    * adjusts to match the tape type. (That is, compression is controlled via
1036    * the Sun-unique 8Ch density code, rather than using the Data Compression
1037    * mode page).
1038    *
1039    *     NOTES
1040    *     -----
1041    * [1] 00h = compression disabled, 8Ch = compression enabled, and all DDS-x
1042    *     format-related adjustments are performed automatically by the drive.
1043    * [2] The 5713 has only one speed (if the driver ever cares).
1044    * [3] max_rretries and max_wretries are driver anachronisms.
1045    */
1046   {                           /* Structure member Description                 */
1047                               /* ---------------- -----------                 */
1048     "HP DDS-4 DAT (Sun)",     /* .name            Display ("pretty") name     */
1049     14,                       /* .length          Length of next item...      */
1050     "HP      C5713A",         /* .vid             Vendor-product ID string    */
1051     MT_ISDAT,                 /* .type            Numeric type (cf. mtio.h)   */
1052     0,                        /* .bsize           Block size (0 = variable)   */
1053                               /* .options         Drive option flags:         */
1054     ST_VARIABLE         |     /*    00001           Supports variable length  */
1055     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1056     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1057     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
1058     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1059     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1060     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
1061     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
1062                               /*    -----                                     */
1063                               /*    09639                                     */
1064     -1,                       /* .max_rretries    [Note 3]                    */
1065     -1,                       /* .max_wretries    [Note 3]                    */
1066     {0x00, 0x8C, 0x8C, 0x8C}, /* .densities       Density codes [Note 1]      */
1067     MT_DENSITY2,              /* .default_density (.densities[x])             */
1068     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1069   },
1070 
1071    /*
1072     * HP C7438A
1073     */
1074   {                           /* Structure member Description                 */
1075                               /* ---------------- -----------                 */
1076     "HP DAT-72",              /* .name            Display ("pretty") name     */
1077     14,                       /* .length          Length of next item...      */
1078     "HP      C7438A",         /* .vid             Vendor-product ID string    */
1079     MT_ISDAT,                 /* .type            Numeric type (cf. mtio.h)   */
1080     0,                        /* .bsize           Block size (0 = variable)   */
1081                               /* .options         Drive option flags:         */
1082     ST_VARIABLE         |     /*    00001           Supports variable length  */
1083     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1084     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1085     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1086     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1087     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1088     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1089                               /*    -----                                     */
1090                               /*    18619                                     */
1091     -1,                       /* .max_rretries      Not Used                  */
1092     -1,                       /* .max_wretries      Not Used                  */
1093     {0x47, 0x47, 0x47, 0x47}, /* .densities       Density codes               */
1094     MT_DENSITY4,              /* .default_density (.densities[x])             */
1095     {0, 0, 0, 0},             /* .speeds          Speed codes Not Used        */
1096     0,                        /* .non_motion_timeout Nothing Special          */
1097     MINUTES(7),               /* .io_timeout         7 minutes (recover read) */
1098     0,                        /* .rewind_timeout     Nothing Special          */
1099     MINUTES(600),             /* .space_timeout      10 Hours (space seq file)*/
1100     0,                        /* .load_timeout       Nothing Special          */
1101     0,                        /* .unload_timeout     Nothing Special          */
1102     MINUTES(290)              /* .erase_timeout      4 hours 50 minutes       */
1103   },
1104 
1105   /*
1106    * HP Ultrium LTO Gen 3
1107    * [1] This drive supports two densites at this time.
1108    *     In reality the type of media GEN 2 or GEN 3 selects the density.
1109    *     ST_MODE_SEL_COMP controls compression.
1110    * [2] The Ultrium LTO has one speed.
1111    * [3] max_rretries and max_wretries are not used but kept for
1112    *     backward compatibility.
1113    */
1114   {                           /* Structure member Description                 */
1115                               /* ---------------- -----------                 */
1116     "HP Ultrium LTO 3",       /* .name            Display ("pretty") name     */
1117     17,                       /* .length          Length of next item...      */
1118     "HP      Ultrium 3*",     /* .vid             handles SCSI or FC          */
1119     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1120     0,                        /* .bsize           Block size (0 = variable)   */
1121                               /* .options         Drive option flags:         */
1122     ST_VARIABLE         |     /*    00001           Supports variable length  */
1123     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1124     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1125     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1126     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1127     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1128     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1129                               /*    -----                                     */
1130                               /*    18619                                     */
1131     -1,                       /* .max_rretries    [Note 3]                    */
1132     -1,                       /* .max_wretries    [Note 3]                    */
1133     {0x42, 0x42, 0x44, 0x44}, /* .densities       Density codes [Note 1]      */
1134     MT_DENSITY4,              /* .default_density (.densities[x])             */
1135     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1136     MINUTES(1),               /* .non_motion_timeout                          */
1137     MINUTES(20),              /* .io_timeout                                  */
1138     MINUTES(10),              /* .rewind_timeout                              */
1139     MINUTES(20),              /* .space_timeout                               */
1140     MINUTES(10),              /* .load_timeout                                */
1141     MINUTES(10),              /* .unload_timeout                              */
1142     MINUTES(300)              /* .erase_timeout      Five Hours               */
1143   },
1144 
1145   /*
1146    * HP Ultrium LTO Gen 2
1147    * [1] This drive supports two densites at this time.
1148    *     In reality the type of media GEN 1 or GEN 2 selects the density.
1149    *     ST_MODE_SEL_COMP controls compression.
1150    * [2] The Ultrium LTO has one speed.
1151    * [3] max_rretries and max_wretries are not used but kept for
1152    *     backward compatibility.
1153    */
1154   {                           /* Structure member Description                 */
1155                               /* ---------------- -----------                 */
1156     "HP Ultrium LTO 2",       /* .name            Display ("pretty") name     */
1157     17,                       /* .length          Length of next item...      */
1158     "HP      Ultrium 2*",     /* .vid             handles SCSI or FC          */
1159     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1160     0,                        /* .bsize           Block size (0 = variable)   */
1161                               /* .options         Drive option flags:         */
1162     ST_VARIABLE         |     /*    00001           Supports variable length  */
1163     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1164     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1165     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1166     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1167     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1168     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1169                               /*    -----                                     */
1170                               /*    18619                                     */
1171     -1,                       /* .max_rretries    [Note 3]                    */
1172     -1,                       /* .max_wretries    [Note 3]                    */
1173     {0x40, 0x40, 0x42, 0x42}, /* .densities       Density codes [Note 1]      */
1174     MT_DENSITY4,              /* .default_density (.densities[x])             */
1175     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1176     MINUTES(1),               /* .non_motion_timeout                          */
1177     MINUTES(5),               /* .io_timeout Four                             */
1178     MINUTES(10),              /* .rewind_timeout                              */
1179     MINUTES(20),              /* .space_timeout                               */
1180     MINUTES(10),              /* .load_timeout                                */
1181     MINUTES(10),              /* .unload_timeout                              */
1182     MINUTES(300)              /* .erase_timeout      Five Hours               */
1183   },
1184 
1185   /*
1186    * HP Ultrium LTO
1187    * [1] This drive supports only one density at this time.
1188          ST_MODE_SEL_COMP controls compression.
1189    * [2] The Ultrium LTO has one speed.
1190    * [3] max_rretries and max_wretries are not used but kept for
1191    *     backward compatibility.
1192    */
1193   {                           /* Structure member Description                 */
1194                               /* ---------------- -----------                 */
1195     "HP Ultrium LTO",         /* .name            Display ("pretty") name     */
1196     17,                       /* .length          Length of next item...      */
1197     "HP      Ultrium 1*",     /* .vid             handles SCSI and FC         */
1198     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1199     0,                        /* .bsize           Block size (0 = variable)   */
1200                               /* .options         Drive option flags:         */
1201     ST_VARIABLE         |     /*    00001           Supports variable length  */
1202     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1203     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1204     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1205     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1206     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1207     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1208                               /*    -----                                     */
1209                               /*    18619                                     */
1210     -1,                       /* .max_rretries    [Note 3]                    */
1211     -1,                       /* .max_wretries    [Note 3]                    */
1212     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
1213     MT_DENSITY4,              /* .default_density (.densities[x])             */
1214     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1215     MINUTES(1),               /* .non_motion_timeout                          */
1216     MINUTES(5),               /* .io_timeout Four                             */
1217     MINUTES(10),              /* .rewind_timeout                              */
1218     MINUTES(20),              /* .space_timeout                               */
1219     MINUTES(10),              /* .load_timeout                                */
1220     MINUTES(10),              /* .unload_timeout                              */
1221     MINUTES(300)              /* .erase_timeout      Five Hours               */
1222   },
1223 
1224   /*
1225    * Kennedy 1/2" reel
1226    *
1227    *     NOTES
1228    *     -----
1229    *  o This is an unsupported drive.
1230    *
1231    *  o This entry uses a shortened Vendor-product ID string for the
1232    *    INQUIRY match.
1233    *
1234    * [1] The density code entry requires four values, even if there are less
1235    *     than four values for the drive.
1236    * [2] The Kennedy 1/2" reel has only one speed (if the driver ever cares).
1237    * [3] max_rretries and max_wretries are driver anachronisms.
1238    */
1239   {                           /* Structure member Description                 */
1240                               /* ---------------- -----------                 */
1241     "Kennedy 1/2\" Reel",     /* .name            Display ("pretty") name     */
1242     4,                        /* .length          Length of next item...      */
1243     "KENN***",                /* .vid             Vendor-product ID string    */
1244     ST_TYPE_KENNEDY,          /* .type            Numeric type (cf. mtio.h)   */
1245     0,                        /* .bsize           Block size (0 = variable)   */
1246                               /* .options         Drive option flags:         */
1247     ST_VARIABLE |             /*    00001           Supports variable length  */
1248     ST_REEL     |             /*    00004           1/2-inch reel tape device */
1249     ST_BSF      |             /*    00008           Supports SPACE block fwd  */
1250     ST_BSR      |             /*    00010           Supports SPACE block rev  */
1251     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
1252                               /*    -----                                     */
1253                               /*    0041D                                     */
1254     400,                      /* .max_rretries    [Note 3]                    */
1255     400,                      /* .max_wretries    [Note 3]                    */
1256     {0x01, 0x02, 0x03, 0x03}, /* .densities       Density codes [Note 1]      */
1257     MT_DENSITY2,              /* .default_density (.densities[x])             */
1258     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1259   },
1260 
1261   /*
1262    * M4 Data Systems 9303 transport with 9700 512k i/f
1263    *
1264    *     NOTES
1265    *     -----
1266    *  o  The M4 Data 9303 is in non-buffered mode because it doesn't
1267    *     flush the buffer at end of tape writes. If you don't care
1268    *     about end of tape conditions (e.g., you use dump(8) which
1269    *     cannot handle end-of-tape anyhow), take out the ST_NOBUF.
1270    *
1271    *  o This is an unsupported drive.
1272    *
1273    * [1] The density code entry requires four values, even if there are less
1274    *     than four values for the drive.
1275    * [2] The M4 Data has only one speed (if the driver ever cares).
1276    * [3] max_rretries and max_wretries are driver anachronisms.
1277    */
1278   {                           /* Structure member Description                 */
1279                               /* ---------------- -----------                 */
1280     "M4-Data 1/2\" Reel",     /* .name            Display ("pretty") name     */
1281     19,                       /* .length          Length of next item...      */
1282     "M4 DATA 123107 SCSI",    /* .vid             Vendor-product ID string    */
1283     ST_TYPE_REEL,             /* .type            Numeric type (cf. mtio.h)   */
1284     0,                        /* .bsize           Block size (0 = variable)   */
1285                               /* .options         Drive option flags:         */
1286     ST_VARIABLE  |            /*    00001           Supports variable length  */
1287     ST_REEL      |            /*    00004           1/2-inch reel tape device */
1288     ST_BSF       |            /*    00008           Supports SPACE block fwd  */
1289     ST_BSR       |            /*    00010           Supports SPACE block rev  */
1290     ST_NOBUF     |            /*    00080           Don't use buffered mode.  */
1291     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
1292                               /*    -----                                     */
1293                               /*    0049D                                     */
1294     500,                      /* .max_rretries    [Note 3]                    */
1295     500,                      /* .max_wretries    [Note 3]                    */
1296     {0x01, 0x02, 0x06, 0x06}, /* .densities       Density codes [Note 1]      */
1297     MT_DENSITY2,              /* .default_density (.densities[x])             */
1298     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1299   },
1300 
1301   /*
1302    * Quantum VS 160
1303    *
1304    * Notes
1305    * [1] The VS160 reads several formats which the drive autodetects.
1306    *     It can write only in VS160 format so all densities set ro 0x50.
1307    * [2] The speed field is not used and the VS160's speed is not setable.
1308    * [3] Retry counts are not used any more and set to -1.
1309    */
1310   {                           /* Structure member Description                 */
1311                               /* ---------------- -----------                 */
1312     "Quantum VS160",          /* .name            Display ("pretty") name     */
1313     17,                       /* .length          Length of next item...      */
1314     "QUANTUM DLT VS160",      /* .vid             Vendor-product ID string    */
1315     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1316     0,                        /* .bsize           Block size (0 = variable)   */
1317                               /* .options         Drive option flags:         */
1318     ST_VARIABLE         |     /*    00001         Supports variable length    */
1319     ST_BSF              |     /*    00008         Supports SPACE block fwd    */
1320     ST_BSR              |     /*    00010         Supports SPACE block rev    */
1321     ST_AUTODEN_OVERRIDE |     /*    00040         Has only one density        */
1322     ST_KNOWS_EOD        |     /*    00200         Recognizes end-of-data      */
1323     ST_UNLOADABLE       |     /*    00400         Driver can be unloaded      */
1324     ST_NO_RECSIZE_LIMIT |     /*    08000         Supports blocks > 64KB      */
1325     ST_MODE_SEL_COMP,         /*    10000         Uses Mode select Compress   */
1326                               /* --------                                     */
1327                               /* 00018659                                     */
1328     -1,                       /* .max_rretries    [Note 3]                    */
1329     -1,                       /* .max_wretries    [Note 3]                    */
1330     {0x50, 0x50, 0x50, 0x50}, /* .densities       [Note 1]                    */
1331     MT_DENSITY4,              /* .default_density (.densities[x])             */
1332     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1333     MINUTES(2),               /* .non_motion_timeout Nothing special          */
1334     MINUTES(15),              /* .io_timeout         First write to new tape  */
1335     MINUTES(15),              /* .rewind_timeout     15 minutes               */
1336     MINUTES(15),              /* .space_timeout      15 minutes               */
1337     MINUTES(15),              /* .load_timeout       read catalog             */
1338     MINUTES(15),              /* .unload_timeout     write catalog + unthread */
1339     MINUTES(180)              /* .erase_timeout      3 hours                  */
1340   },
1341   /*
1342    * Quantum Super DLT600
1343    *
1344    *    NOTES
1345    *    -----
1346    *
1347    * [1] The Super DLT 600 supports many tape formats, Most are media selected.
1348    *     Previous DLT drives had density codes for compress and non-compress,
1349          This drive uses mode select to control compression.
1350    * [2] The Super DLT has only one speed (if the driver ever cares).
1351    * [3] max_rretries and max_wretries are driver anachronisms.
1352    */
1353   {                           /* Structure member Description                 */
1354                               /* ---------------- -----------                 */
1355     "Quantum Super DLT 600",  /* .name            Display ("pretty") name     */
1356     15,                       /* .length          Length of next item...      */
1357     "QUANTUM SDLT600",        /* .vid             Vendor-product ID string    */
1358     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1359     0,                        /* .bsize           Block size (0 = variable)   */
1360                               /* .options         Drive option flags:         */
1361     ST_VARIABLE         |     /*    00001         Supports variable length    */
1362     ST_BSF              |     /*    00008         Supports SPACE block fwd    */
1363     ST_BSR              |     /*    00010         Supports SPACE block rev    */
1364     ST_KNOWS_EOD        |     /*    00200         Recognizes end-of-data      */
1365     ST_UNLOADABLE       |     /*    00400         Driver can be unloaded      */
1366     ST_NO_RECSIZE_LIMIT |     /*    08000         Supports blocks > 64KB      */
1367     ST_MODE_SEL_COMP,         /*    10000         Uses Mode select Compress   */
1368                               /* --------                                     */
1369                               /* 00018619                                     */
1370     -1,                       /* .max_rretries    [Note 3]                    */
1371     -1,                       /* .max_wretries    [Note 3]                    */
1372     {0x4a, 0x4a, 0x4a, 0x4a}, /* .densities       [Note 1]                    */
1373     MT_DENSITY4,              /* .default_density (.densities[x])             */
1374     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1375     0,                        /* .non_motion_timeout Nothing special          */
1376     MINUTES(60),              /* .io_timeout Four    One Hour                 */
1377     MINUTES(4),               /* .rewind_timeout     Four Minutes             */
1378     MINUTES(360),             /* .space_timeout      6 Hour if Directory bad  */
1379     MINUTES(16),              /* .load_timeout       Nothing Special          */
1380     MINUTES(16),              /* .unload_timeout     Nothing Special          */
1381     MINUTES(360)              /* .erase_timeout      Six hours                */
1382   },
1383 
1384  /*
1385    * Quantum Super DLT320
1386    *
1387    *    NOTES
1388    *    -----
1389    *  o  There is not going to be a SUN version of this drive. It will
1390    *     be released as QUANTUM only.
1391    *
1392    * [1] The Super DLT implements many tape formats, but the st driver supports
1393    *     only the four highest densities.
1394    * [2] The Super DLT has only one speed (if the driver ever cares).
1395    * [3] max_rretries and max_wretries are driver anachronisms.
1396    */
1397   {                           /* Structure member Description                 */
1398                               /* ---------------- -----------                 */
1399     "Quantum Super DLT 320",  /* .name            Display ("pretty") name     */
1400     15,                       /* .length          Length of next item...      */
1401     "QUANTUM SDLT320",        /* .vid             Vendor-product ID string    */
1402     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1403     0,                        /* .bsize           Block size (0 = variable)   */
1404                               /* .options         Drive option flags:         */
1405     ST_VARIABLE         |     /*    00001         Supports variable length    */
1406     ST_BSF              |     /*    00008         Supports SPACE block fwd    */
1407     ST_BSR              |     /*    00010         Supports SPACE block rev    */
1408     ST_KNOWS_EOD        |     /*    00200         Recognizes end-of-data      */
1409     ST_UNLOADABLE       |     /*    00400         Driver can be unloaded      */
1410     ST_NO_RECSIZE_LIMIT,      /*    08000         Supports blocks > 64KB      */
1411                               /* --------                                     */
1412                               /* 00008619                                     */
1413     -1,                       /* .max_rretries    [Note 3]                    */
1414     -1,                       /* .max_wretries    [Note 3]                    */
1415     {0x90, 0x91, 0x92, 0x93}, /* .densities       [Note 1]                    */
1416     MT_DENSITY4,              /* .default_density (.densities[x])             */
1417     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1418     0,                        /* .non_motion_timeout Default 2 minutes        */
1419     MINUTES(60),              /* .io_timeout Four    Now 1 hour               */
1420     MINUTES(4),               /* .rewind_timeout     Four Minutes             */
1421     MINUTES(360),             /* .space_timeout      Six Hours                */
1422     MINUTES(16),              /* .load_timeout       Sixteen Minutes          */
1423     MINUTES(16),              /* .unload_timeout     Sixteen Minutes          */
1424     MINUTES(360)              /* .erase_timeout      Six hours                */
1425   },
1426 
1427   /*
1428    * Quantum Super DLT
1429    *
1430    *    NOTES
1431    *    -----
1432    *  o  There is not going to be a SUN version of this drive. It will
1433    *     be released as QUANTUM only.
1434    *
1435    * [1] The Super DLT implements many tape formats, but the st driver supports
1436    *     only the four highest densities.
1437    * [2] The Super DLT has only one speed (if the driver ever cares).
1438    * [3] max_rretries and max_wretries are driver anachronisms.
1439    */
1440   {                           /* Structure member Description                 */
1441                               /* ---------------- -----------                 */
1442     "Quantum Super DLT 220",  /* .name            Display ("pretty") name     */
1443     17,                       /* .length          Length of next item...      */
1444     "QUANTUM SuperDLT1",      /* .vid             Vendor-product ID string    */
1445     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1446     0,                        /* .bsize           Block size (0 = variable)   */
1447                               /* .options         Drive option flags:         */
1448     ST_VARIABLE         |     /*    00001         Supports variable length    */
1449     ST_BSF              |     /*    00008         Supports SPACE block fwd    */
1450     ST_BSR              |     /*    00010         Supports SPACE block rev    */
1451     ST_KNOWS_EOD        |     /*    00200         Recognizes end-of-data      */
1452     ST_UNLOADABLE       |     /*    00400         Driver can be unloaded      */
1453     ST_NO_RECSIZE_LIMIT,      /*    08000         Supports blocks > 64KB      */
1454                               /* --------                                     */
1455                               /* 00008619                                     */
1456     -1,                       /* .max_rretries    [Note 3]                    */
1457     -1,                       /* .max_wretries    [Note 3]                    */
1458     {0x88, 0x89, 0x90, 0x91}, /* .densities       [Note 1]                    */
1459     MT_DENSITY4,              /* .default_density (.densities[x])             */
1460     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1461     0,                        /* .non_motion_timeout Default 2 minutes        */
1462     MINUTES(60),              /* .io_timeout Four    Now 1 hour               */
1463     MINUTES(4),               /* .rewind_timeout     Four Minutes             */
1464     MINUTES(360),             /* .space_timeout      Six Hours                */
1465     MINUTES(16),              /* .load_timeout       Sixteen Minutes          */
1466     MINUTES(16),              /* .unload_timeout     Sixteen Minutes          */
1467     MINUTES(360)              /* .erase_timeout      Six hours                */
1468   },
1469 
1470   /*
1471    * Quantum DLT8000
1472    *
1473    *    NOTES
1474    *    -----
1475    *  o  There is not going to be a SUN version of this drive. It will
1476    *     be released as QUANTUM only.
1477    *
1478    * [1] The DLT8000 implements many tape formats, but the st driver supports
1479    *     only the four highest densities.
1480    * [2] The DLT8000 has only one speed (if the driver ever cares).
1481    * [3] max_rretries and max_wretries are driver anachronisms.
1482    */
1483   {                           /* Structure member Description                 */
1484                               /* ---------------- -----------                 */
1485     "Quantum DLT8000",        /* .name            Display ("pretty") name     */
1486     15,                       /* .length          Length of next item...      */
1487     "QUANTUM DLT8000",        /* .vid             Vendor-product ID string    */
1488     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1489     0,                        /* .bsize           Block size (0 = variable)   */
1490                               /* .options         Drive option flags:         */
1491     ST_VARIABLE         |     /*    00001           Supports variable length  */
1492     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1493     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1494     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1495     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1496     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
1497     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1498     ST_CLN_TYPE_3,            /* 40000000                                     */
1499                               /*    -----                                     */
1500                               /* 40009619                                     */
1501     400,                      /* .max_rretries    [Note 3]                    */
1502     400,                      /* .max_wretries    [Note 3]                    */
1503     {0x84, 0x85, 0x88, 0x89}, /* .densities       [Note 1]                    */
1504     MT_DENSITY4,              /* .default_density (.densities[x])             */
1505     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1506     0,                        /* .non_motion_timeout Nothing special          */
1507     0,                        /* .io_timeout Four    Nothing Special          */
1508     0,                        /* .rewind_timeout     Nothing Special          */
1509     0,                        /* .space_timeout      Nothing Special          */
1510     0,                        /* .load_timeout       Nothing Special          */
1511     0,                        /* .unload_timeout     Nothing Special          */
1512     MINUTES(360)              /* .erase_timeout      Six hours                */
1513   },
1514 
1515   /*
1516    * Quantum DLT7000
1517    *
1518    *     NOTES
1519    *     -----
1520    * [1] The DLT7000 implements many tape formats, but the st driver supports
1521    *     only the four highest densities.
1522    * [2] The DLT7000 has only one speed (if the driver ever cares).
1523    * [3] max_rretries and max_wretries are driver anachronisms.
1524    * [4] Data is buffered in the driver and pre-acked to the application. This
1525    *      is only supported in Solaris 2.5.1.
1526    */
1527   {                           /* Structure member Description                 */
1528                               /* ---------------- -----------                 */
1529     "Quantum DLT7000",        /* .name            Display ("pretty") name     */
1530     15,                       /* .length          Length of next item...      */
1531     "QUANTUM DLT7000",        /* .vid             Vendor-product ID string    */
1532     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1533     0,                        /* .bsize           Block size (0 = variable)   */
1534                               /* .options         Drive option flags:         */
1535     ST_VARIABLE         |     /*    00001           Supports variable length  */
1536     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1537     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1538     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1539     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1540     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
1541     ST_BUFFERED_WRITES  |     /*    04000           [Note 4]                  */
1542     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1543     ST_CLN_TYPE_3,            /* 40000000         Asks to be cleaned this way */
1544                               /* --------                                     */
1545                               /* 4000D619                                     */
1546     400,                      /* .max_rretries    [Note 3]                    */
1547     400,                      /* .max_wretries    [Note 3]                    */
1548     {0x82, 0x83, 0x84, 0x85}, /* .densities       Density codes [Note 1]      */
1549     MT_DENSITY3,              /* .default_density (.densities[x])             */
1550     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1551     0,                        /* .non_motion_timeout Nothing special          */
1552     0,                        /* .io_timeout Four    Nothing Special          */
1553     0,                        /* .rewind_timeout     Nothing Special          */
1554     0,                        /* .space_timeout      Nothing Special          */
1555     0,                        /* .load_timeout       Nothing Special          */
1556     0,                        /* .unload_timeout     Nothing Special          */
1557     MINUTES(360)              /* .erase_timeout      Six hours                */
1558   },
1559 
1560   /*
1561    * Quantum DLT4000
1562    *
1563    *     NOTES
1564    *     -----
1565    * [1] The DLT4000 implements many tape formats, but the st driver supports
1566    *     only the four highest densities.
1567    * [2] The DLT4000 has only one speed (if the driver ever cares).
1568    * [3] max_rretries and max_wretries are driver anachronisms.
1569    * [4] Data is buffered in the driver and pre-acked to the application. This
1570    *     is only supported in 2.5.1.
1571    */
1572   {                           /* Structure member Description                 */
1573                               /* ---------------- -----------                 */
1574     "Quantum DLT4000",        /* .name            Display ("pretty") name     */
1575     15,                       /* .length          Length of next item...      */
1576     "Quantum DLT4000",        /* .vid             Vendor-product ID string    */
1577     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1578     0,                        /* .bsize           Block size (0 = variable)   */
1579                               /* .options         Drive option flags:         */
1580     ST_VARIABLE        |      /*    00001           Supports variable length  */
1581     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
1582     ST_BSR             |      /*    00010           Supports SPACE block rev  */
1583     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
1584     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
1585     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
1586     ST_BUFFERED_WRITES |      /*    04000           [Note 4]                  */
1587     ST_NO_RECSIZE_LIMIT|      /*    08000           Supports blocks > 64KB    */
1588     ST_CLN_TYPE_3,            /* 40000000         Asks to be cleaned this way */
1589                               /* --------                                     */
1590                               /* 4000D619                                     */
1591     400,                      /* .max_rretries    [Note 3]                    */
1592     400,                      /* .max_wretries    [Note 3]                    */
1593     {0x80, 0x81, 0x82, 0x83}, /* .densities       Density codes [Note 1]      */
1594     MT_DENSITY3,              /* .default_density (.densities[x])             */
1595     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1596     0,                        /* .non_motion_timeout Nothing special          */
1597     0,                        /* .io_timeout Four    Nothing Special          */
1598     0,                        /* .rewind_timeout     Nothing Special          */
1599     0,                        /* .space_timeout      Nothing Special          */
1600     0,                        /* .load_timeout       Nothing Special          */
1601     0,                        /* .unload_timeout     Nothing Special          */
1602     MINUTES(360)              /* .erase_timeout      Six hours                */
1603   },
1604 
1605   /*
1606    * Seagate Hornet NS20 Travan
1607    *
1608    *     NOTES
1609    *     -----
1610    *  o This is an unsupported drive.
1611    *
1612    * [1] The NS20 Travan uses 0 or the "default" density code.
1613    * [2] The NS20 Travan has only one speed (if the driver ever cares).
1614    * [3] max_rretries and max_wretries are driver anachronisms.
1615    */
1616   {                           /* Structure member Description                 */
1617                               /* ---------------- -----------                 */
1618     "Seagate Hornet NS20 Travan",
1619                               /* .name            Display ("pretty") name     */
1620     17,                       /* .length          Length of next item...      */
1621     "Seagate STT20000N",      /* .vid             Vendor-product ID string    */
1622     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
1623     512,                      /* .bsize           Block size (0 = variable)   */
1624                               /* .options         Drive option flags:         */
1625     ST_QIC              |     /*    00002           QIC tape device           */
1626     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1627     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1628     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
1629                               /*    -----                                     */
1630                               /*    0840A                                     */
1631     400,                      /* .max_rretries    [Note 3]                    */
1632     400,                      /* .max_wretries    [Note 3]                    */
1633     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
1634     MT_DENSITY1,              /* .default_density (.densities[x])             */
1635     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1636   },
1637 
1638   /*
1639    * Seagate DAT 72
1640    *
1641    *  [1] Has only one density, Uses Mode Select to enable-disable compression.
1642    *  [2] Only one speed.
1643    */
1644 
1645   {                           /* Structure member Description                 */
1646                               /* ---------------- -----------                 */
1647     "Seagate DAT 72",         /* .name            Display ("pretty") name     */
1648     23,                       /* .length          Length of next item...      */
1649     "SEAGATE DAT    DAT72-00",/* .vid             Vendor-product ID string    */
1650     MT_ISDAT,                 /* .type            Numeric type (cf. mtio.h)   */
1651     0,                        /* .bsize           Block size (0 = variable)   */
1652                               /* .options         Drive option flags:         */
1653     ST_VARIABLE         |     /*    00001           variable length records   */
1654     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1655     ST_BSR              |     /*    00010           Supports backspace record */
1656     ST_KNOWS_EOD        |     /*    00200           Knows EOD when it sees it */
1657     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1658     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1659     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1660                               /*    -----                                     */
1661                               /*    18619                                     */
1662     -1,                       /* .max_rretries    Not used any more.          */
1663     -1,                       /* .max_wretries    Not Used any more.          */
1664     {0x47, 0x47, 0x47, 0x47}, /* .densities       Density codes [Note 1]      */
1665     MT_DENSITY4,              /* .default_density (.densities[x])             */
1666     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1667     0,                        /* .non_motion_timeout                          */
1668     MINUTES(15),              /* .io_timeout                                  */
1669     MINUTES(2),               /* .rewind_timeout                              */
1670     MINUTES(15),              /* .space_timeout                               */
1671     0,                        /* .load_timeout                                */
1672     0,                        /* .unload_timeout                              */
1673     MINUTES(240)              /* .erase_timeout                               */
1674   },
1675 
1676   /*
1677    * Seagate Ultrium LTO
1678    *
1679    *  [1] Has only one density, Uses Mode Select to enable-disable compression.
1680    *  [2] Only one speed.
1681    */
1682 
1683   {                           /* Structure member Description                 */
1684                               /* ---------------- -----------                 */
1685     "Seagate Ultrium LTO",    /* .name            Display ("pretty") name     */
1686     23,                       /* .length          Length of next item...      */
1687     "SEAGATE ULTRIUM06242-XX",/* .vid             Vendor-product ID string    */
1688     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1689     0,                        /* .bsize           Block size (0 = variable)   */
1690                               /* .options         Drive option flags:         */
1691     ST_VARIABLE         |     /*    00001           variable length records   */
1692     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1693     ST_BSR              |     /*    00010           Supports backspace record */
1694     ST_KNOWS_EOD        |     /*    00200           Knows EOD when it sees it */
1695     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1696     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1697     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1698                               /*    -----                                     */
1699                               /*    18619                                     */
1700     -1,                       /* .max_rretries    Not used any more.          */
1701     -1,                       /* .max_wretries    Not Used any more.          */
1702     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
1703     MT_DENSITY4,              /* .default_density (.densities[x])             */
1704     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1705     0,                        /* .non_motion_timeout                          */
1706     MINUTES(10),              /* .io_timeout                                  */
1707     MINUTES(15),              /* .rewind_timeout                              */
1708     MINUTES(120),             /* .space_timeout                               */
1709     MINUTES(5),               /* .load_timeout                                */
1710     MINUTES(2),               /* .unload_timeout                              */
1711     MINUTES(120)              /* .erase_timeout                               */
1712   },
1713 
1714   /*
1715    * SONY 4mm DAT
1716    *
1717    *     NOTES
1718    *     -----
1719    *  o This is an unsupported drive.
1720    *
1721    *  o This entry uses a shortened Vendor-product ID string for the
1722    *    INQUIRY match.
1723    *
1724    * [1] The SDT-5000 uses 0 or the "default" density code.
1725    * [2] The SDT-5000 has only one speed (if the driver ever cares).
1726    * [3] max_rretries and max_wretries are driver anachronisms.
1727    */
1728   {                           /* Structure member Description                 */
1729                               /* ---------------- -----------                 */
1730     "SONY 4mm DAT",           /* .name            Display ("pretty") name     */
1731     12,                       /* .length          Length of next item...      */
1732     "SONY    SDT-****",       /* .vid             Vendor-product ID string    */
1733     ST_TYPE_DAT,              /* .type            Numeric type (cf. mtio.h)   */
1734     0,                        /* .bsize           Block size (0 = variable)   */
1735                               /* .options         Drive option flags:         */
1736     ST_VARIABLE   |           /*    00001           Supports variable length  */
1737     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
1738     ST_BSR        |           /*    00010           Supports SPACE block rev  */
1739     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
1740     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
1741                               /*    -----                                     */
1742                               /*    00439                                     */
1743     400,                      /* .max_rretries    [Note 3]                    */
1744     400,                      /* .max_wretries    [Note 3]                    */
1745     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
1746     MT_DENSITY2,              /* .default_density (.densities[x])             */
1747     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1748   },
1749 
1750   /*
1751    * Sun StorageTek T10000A tape drive.
1752    *
1753    *     NOTES
1754    *     -----
1755    *  o  The T10000A has special needs - support for SCSI LOCATE and
1756    *     READ POSITION commands - so we must be sure to place this
1757    *     entry before the one for ST_TYPE_STC3490 (generic STK
1758    *     half-inch cartridge drives).
1759    * [1] Compression on the T10000A is controlled
1760    *     via the Device Configuration mode page.
1761    * [2] The T10000A has only one writable density, 0x4A.
1762    * [3] The T10000A has only one speed (if the driver ever cares).
1763    * [4] max_rretries and max_wretries are driver anachronisms.
1764    */
1765   {                           /* Structure member    Description              */
1766                               /* ----------------    -----------              */
1767     "Sun StorageTek T10000A", /* .name               Display ("pretty") name  */
1768     15,                       /* .length             Length of next item...   */
1769     "STK     T10000A",        /* .vid                Vendor-product ID string */
1770     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
1771     0,                        /* .bsize              Block size (0 = variable)*/
1772                               /* .options            Drive option flags:      */
1773     ST_VARIABLE         |     /*    00001            Supports variable length */
1774     ST_BSF              |     /*    00008            Supports SPACE block fwd */
1775     ST_BSR              |     /*    00010            Supports SPACE block rev */
1776     ST_AUTODEN_OVERRIDE |     /*    00040            Autodensity override flag*/
1777     ST_KNOWS_EOD        |     /*    00200            Recognizes end-of-data   */
1778     ST_UNLOADABLE       |     /*    00400            Driver can be unloaded   */
1779     ST_NO_RECSIZE_LIMIT |     /*    08000            Supports blocks > 64KB   */
1780     ST_MODE_SEL_COMP,         /*    10000            [Note 1]                 */
1781                               /*    -----                                     */
1782                               /*    18659                                     */
1783     -1,                       /* .max_rretries       [Note 4]                 */
1784     -1,                       /* .max_wretries       [Note 4]                 */
1785     {0x4A,0x4A,0x4A,0x4A},    /* .densities          Density codes [Note 2]   */
1786     MT_DENSITY4,              /* .default_density    (.densities[x])          */
1787     {0,0,0,0},                /* .speeds             Speed codes [Note 3]     */
1788     0,                        /* .non_motion_timeout Nothing Special          */
1789     MINUTES(5),               /* .io_timeout Five    Five Minutes             */
1790     0,                        /* .rewind_timeout     Nothing Special          */
1791     0,                        /* .space_timeout      Nothing Special          */
1792     0,                        /* .load_timeout       Nothing Special          */
1793     0,                        /* .unload_timeout     Nothing Special          */
1794     MINUTES(180)              /* .erase_timeout      Three Hours              */
1795   },
1796 
1797   /*
1798    * STK 9840C cartridge drive.
1799    *
1800    *     NOTES
1801    *     -----
1802    *  o  The 9840C has special needs - support for SCSI LOCATE and
1803    *     READ POSITION commands - so we must be sure to place this
1804    *     entry before the one for ST_TYPE_STC3490 (generic STK
1805    *     half-inch cartridge drives).
1806    * [1] Compression on the 9840C is controlled
1807    *     via the Device Configuration mode page.
1808    * [2] The 9840C has only one writable density, 0x45. I can read tapes writen
1809    *     with 9840 and 9840B writen with there density code 0x42.
1810    * [3] The 9840C has only one speed (if the driver ever cares).
1811    * [4] max_rretries and max_wretries are driver anachronisms.
1812    */
1813   {                           /* Structure member    Description              */
1814                               /* ----------------    -----------              */
1815     "StorageTek 9840C",       /* .name               Display ("pretty") name  */
1816     14,                       /* .length             Length of next item...   */
1817     "STK     T9840C",         /* .vid                Vendor-product ID string */
1818     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
1819     0,                        /* .bsize              Block size (0 = variable)*/
1820                               /* .options            Drive option flags:      */
1821     ST_VARIABLE         |     /*    00001            Supports variable length */
1822     ST_BSF              |     /*    00008            Supports SPACE block fwd */
1823     ST_BSR              |     /*    00010            Supports SPACE block rev */
1824     ST_KNOWS_EOD        |     /*    00200            Recognizes end-of-data   */
1825     ST_UNLOADABLE       |     /*    00400            Driver can be unloaded   */
1826     ST_NO_RECSIZE_LIMIT |     /*    08000            Supports blocks > 64KB   */
1827     ST_MODE_SEL_COMP,         /*    10000            [Note 1]                 */
1828                               /*    -----                                     */
1829                               /*    18619                                     */
1830     -1,                       /* .max_rretries       [Note 4]                 */
1831     -1,                       /* .max_wretries       [Note 4]                 */
1832     {0x45,0x45,0x45,0x45},    /* .densities          Density codes [Note 2]   */
1833     MT_DENSITY1,              /* .default_density    (.densities[x])          */
1834     {0,0,0,0},                /* .speeds             Speed codes [Note 3]     */
1835     0,                        /* .non_motion_timeout Nothing Special          */
1836     MINUTES(5),               /* .io_timeout Five    Five Minutes             */
1837     0,                        /* .rewind_timeout     Nothing Special          */
1838     0,                        /* .space_timeout      Nothing Special          */
1839     0,                        /* .load_timeout       Nothing Special          */
1840     0,                        /* .unload_timeout     Nothing Special          */
1841     MINUTES(70)               /* .erase_timeout      One Hour and ten Minutes */
1842   },
1843 
1844   /*
1845    * STK 9840B cartridge drive.
1846    *
1847    *     NOTES
1848    *     -----
1849    *  o  The 9840B has special needs - support for SCSI LOCATE and
1850    *     READ POSITION commands - so we must be sure to place this
1851    *     entry before the one for ST_TYPE_STC3490 (generic STK
1852    *     half-inch cartridge drives).
1853    * [1] Compression on the 9840B is controlled
1854    *     via the Device Configuration mode page.
1855    * [2] The 9840B has only one density, 0x42 (or 0 for "default").
1856    * [3] The 9840B has only one speed (if the driver ever cares).
1857    * [4] max_rretries and max_wretries are driver anachronisms.
1858    */
1859   {                           /* Structure member    Description              */
1860                               /* ----------------    -----------              */
1861     "StorageTek 9840B",       /* .name               Display ("pretty") name  */
1862     14,                       /* .length             Length of next item...   */
1863     "STK     T9840B",         /* .vid                Vendor-product ID string */
1864     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
1865     0,                        /* .bsize              Block size (0 = variable)*/
1866                               /* .options            Drive option flags:      */
1867     ST_VARIABLE         |     /*    00001            Supports variable length */
1868     ST_BSF              |     /*    00008            Supports SPACE block fwd */
1869     ST_BSR              |     /*    00010            Supports SPACE block rev */
1870     ST_KNOWS_EOD        |     /*    00200            Recognizes end-of-data   */
1871     ST_UNLOADABLE       |     /*    00400            Driver can be unloaded   */
1872     ST_NO_RECSIZE_LIMIT |     /*    08000            Supports blocks > 64KB   */
1873     ST_MODE_SEL_COMP,         /*    10000            [Note 1]                 */
1874                               /*    -----                                     */
1875                               /*    18619                                     */
1876     -1,                       /* .max_rretries       [Note 4]                 */
1877     -1,                       /* .max_wretries       [Note 4]                 */
1878     {0x42,0x42,0x42,0x42},    /* .densities          Density codes [Note 2]   */
1879     MT_DENSITY1,              /* .default_density    (.densities[x])          */
1880     {0,0,0,0},                /* .speeds             Speed codes [Note 3]     */
1881     0,                        /* .non_motion_timeout Nothing Special          */
1882     MINUTES(5),               /* .io_timeout Five    Five Minutes             */
1883     0,                        /* .rewind_timeout     Nothing Special          */
1884     0,                        /* .space_timeout      Nothing Special          */
1885     0,                        /* .load_timeout       Nothing Special          */
1886     0,                        /* .unload_timeout     Nothing Special          */
1887     MINUTES(70)               /* .erase_timeout      One Hour and ten Minutes */
1888   },
1889 
1890   /*
1891    * STK 9940B cartridge drive.
1892    *
1893    *     NOTES
1894    *     -----
1895    * [1] Compression on the 9940 is controlled
1896    *     via the Device Configuration mode page.
1897    * [2] The 9940 has only one density, 0x44.
1898    * [3] The 9940 has only one speed (if the driver ever cares).
1899    * [4] max_rretries and max_wretries are driver not used.
1900    */
1901   {                           /* Structure member    Description               */
1902                               /* ----------------    -----------               */
1903     "StorageTek 9940B",       /* .name               Display ("pretty") name   */
1904     14,                       /* .length             Length of next item...    */
1905     "STK     T9940B",         /* .vid                Vendor-product ID string  */
1906     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h) */
1907     0,                        /* .bsize              Block size (0 = variable) */
1908                               /* .options            Drive option flags:       */
1909     ST_VARIABLE         |     /*    00001            Supports variable length  */
1910     ST_BSF              |     /*    00008            Supports SPACE block fwd  */
1911     ST_BSR              |     /*    00010            Supports SPACE block rev  */
1912     ST_AUTODEN_OVERRIDE |     /*    00040            Autodensity override flag */
1913     ST_KNOWS_EOD        |     /*    00200            Recognizes end-of-data    */
1914     ST_UNLOADABLE       |     /*    00400            Driver can be unloaded    */
1915     ST_NO_RECSIZE_LIMIT |     /*    08000            Supports blocks > 64KB    */
1916     ST_MODE_SEL_COMP,         /*    10000            [Note 1]                  */
1917                               /*    -----                                      */
1918                               /*    18659                                      */
1919     -1,                       /* .max_rretries       [Note 4]                  */
1920     -1,                       /* .max_wretries       [Note 4]                  */
1921     {0x44,0x44,0x44,0x44},    /* .densities          Density codes [Note 2]    */
1922     MT_DENSITY1,              /* .default_density    (.densities[x])           */
1923     {0, 0, 0, 0},             /* .speeds             Speed codes [Note 3]      */
1924     0,                        /* .non_motion_timeout Nothing Special           */
1925     MINUTES(5),               /* .io_timeout         Five minutes              */
1926     0,                        /* .rewind_timeout     Nothing Special           */
1927     MINUTES(180),             /* .space_timeout      Three Hours     3 x 9840  */
1928     0,                        /* .load_timeout       Nothing Special           */
1929     0,                        /* .unload_timeout     Nothing Special           */
1930     MINUTES(210)              /* .erase_timeout      Three and a half hours    */
1931   },
1932 
1933   /*
1934    * STK 9940 cartridge drive.
1935    *
1936    *     NOTES
1937    *     -----
1938    * [1] Compression on the 9940 is controlled
1939    *     via the Device Configuration mode page.
1940    * [2] The 9940 has only one density, 0x43.
1941    * [3] The 9940 has only one speed (if the driver ever cares).
1942    * [4] max_rretries and max_wretries are driver not used.
1943    */
1944   {                           /* Structure member    Description              */
1945                               /* ----------------    -----------              */
1946     "StorageTek 9940",        /* .name               Display ("pretty") name  */
1947     14,                       /* .length             Length of next item...   */
1948     "STK     T9940A",         /* .vid                Vendor-product ID string */
1949     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
1950     0,                        /* .bsize              Block size (0 = variable)*/
1951                               /* .options            Drive option flags:      */
1952     ST_VARIABLE         |     /*    00001            Supports variable length */
1953     ST_BSF              |     /*    00008            Supports SPACE block fwd */
1954     ST_BSR              |     /*    00010            Supports SPACE block rev */
1955     ST_KNOWS_EOD        |     /*    00200            Recognizes end-of-data   */
1956     ST_UNLOADABLE       |     /*    00400            Driver can be unloaded   */
1957     ST_NO_RECSIZE_LIMIT |     /*    08000            Supports blocks > 64KB   */
1958     ST_MODE_SEL_COMP,         /*    10000            [Note 1]                 */
1959                               /*    -----                                     */
1960                               /*    18619                                     */
1961     -1,                       /* .max_rretries       [Note 4]                 */
1962     -1,                       /* .max_wretries       [Note 4]                 */
1963     {0x43,0x43,0x43,0x43},    /* .densities          Density codes [Note 2]   */
1964     MT_DENSITY1,              /* .default_density    (.densities[x])          */
1965     {0, 0, 0, 0},             /* .speeds             Speed codes [Note 3]     */
1966     0,                        /* .non_motion_timeout Nothing Special          */
1967     MINUTES(5),               /* .io_timeout         Five Minutes             */
1968     0,                        /* .rewind_timeout     Nothing Special          */
1969     MINUTES(180),             /* .space_timeout      Three Hours     3 x 9840 */
1970     0,                        /* .load_timeout       Nothing Special          */
1971     0,                        /* .unload_timeout     Nothing Special          */
1972     MINUTES(210)              /* .erase_timeout      Three and a half hours   */
1973   },
1974 
1975   /*
1976    * STK 9840 cartridge drive (Sun codename: Ironsides)
1977    *
1978    *     NOTES
1979    *     -----
1980    *  o  The 9840 has special needs - support for SCSI LOCATE and
1981    *     READ POSITION commands - so we must be sure to place this
1982    *     entry before the one for ST_TYPE_STC3490 (generic STK
1983    *     half-inch cartridge drives).
1984    * [1] Compression on the 9840 is controlled
1985    *     via the Device Configuration mode page.
1986    * [2] The 9840 has only one density, 0x42 (or 0 for "default").
1987    * [3] The 9840 has only one speed (if the driver ever cares).
1988    * [4] max_rretries and max_wretries are driver anachronisms.
1989    * [5] ST_LONG_ERASE is not needed or used when .erase_timeout
1990    *     is non-zero.
1991    */
1992   {                           /* Structure member    Description              */
1993                               /* ----------------    -----------              */
1994     "StorageTek 9840",        /* .name               Display ("pretty") name  */
1995     12,                       /* .length             Length of next item...   */
1996     "STK     9840",           /* .vid                Vendor-product ID string */
1997     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
1998     0,                        /* .bsize              Block size (0 = variable)*/
1999                               /* .options            Drive option flags:      */
2000     ST_VARIABLE         |     /*    00001            Supports variable length */
2001     ST_BSF              |     /*    00008            Supports SPACE block fwd */
2002     ST_BSR              |     /*    00010            Supports SPACE block rev */
2003     ST_KNOWS_EOD        |     /*    00200            Recognizes end-of-data   */
2004     ST_UNLOADABLE       |     /*    00400            Driver can be unloaded   */
2005     ST_NO_RECSIZE_LIMIT |     /*    08000            Supports blocks > 64KB   */
2006     ST_MODE_SEL_COMP,         /*    10000            [Note 1]                 */
2007                               /*    -----                                     */
2008                               /*    18619                                     */
2009     10,                       /* .max_rretries       [Note 4]                 */
2010     10,                       /* .max_wretries       [Note 4]                 */
2011     {0x00, 0x00, 0x00, 0x00}, /* .densities          Density codes [Note 2]   */
2012     MT_DENSITY1,              /* .default_density    (.densities[x])          */
2013     {0, 0, 0, 0},             /* .speeds             Speed codes [Note 3]     */
2014     0,                        /* .non_motion_timeout Nothing Special          */
2015     MINUTES(5),               /* .io_timeout         Five Minutes             */
2016     0,                        /* .rewind_timeout     Nothing Special          */
2017     0,                        /* .space_timeout      Nothing Special          */
2018     0,                        /* .load_timeout       Nothing Special          */
2019     0,                        /* .unload_timeout     Nothing Special          */
2020     MINUTES(70)               /* .erase_timeout      One Hour and ten Minutes */
2021   },
2022 
2023   /*
2024    * STC 3490 1/2" cartridge
2025    *
2026    *     NOTES
2027    *     -----
2028    *  o This is an unsupported drive.
2029    *
2030    *  o This is the generic StorageTek (STK) entry. Any special or drive
2031    *    specific entries must be placed ahead of this entry in the file, to
2032    *    ensure that the driver will "see" and use them; otherwise this entry
2033    *    will be used as the default.
2034    *
2035    * [1] The STC 3490 uses 0 or "default" for the desnity code.
2036    * [2] The STC 3490 has only one speed (if the driver ever cares).
2037    * [3] max_rretries and max_wretries are driver anachronisms.
2038    */
2039   {                           /* Structure member Description                 */
2040                               /* ---------------- -----------                 */
2041     "STK 1/2\" Cartridge",    /* .name            Display ("pretty") name     */
2042     3,                        /* .length          Length of next item...      */
2043     "STK",                    /* .vid             Vendor-product ID string    */
2044     ST_TYPE_STC3490,          /* .type            Numeric type (cf. mtio.h)   */
2045     0,                        /* .bsize           Block size (0 = variable)   */
2046     ST_VARIABLE         |     /*    00001           Supports variable length  */
2047     ST_REEL             |     /*    00004           1/2-inch reel tape device */
2048     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2049     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2050     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
2051     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2052     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2053     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
2054                               /*    -----                                     */
2055                               /*    1843D                                     */
2056     400,                      /* .max_rretries    [Note 3]                    */
2057     400,                      /* .max_wretries    [Note 3]                    */
2058     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2059     MT_DENSITY1,              /* .default_density (.densities[x])             */
2060     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2061   },
2062 
2063   /*
2064    * Sun DLT7000
2065    *
2066    *     NOTES
2067    *     -----
2068    * [1] The DLT7000 implements many tape formats, but the st driver supports
2069    *     only the four highest densities.
2070    * [2] The DLT7000 has only one speed (if the driver ever cares).
2071    * [3] max_rretries and max_wretries are driver anachronisms.
2072    * [4] Data is buffered in the driver and pre-acked to the application. This
2073    *     is only supported in 2.5.1.
2074    */
2075   {                           /* Structure member Description                 */
2076                               /* ---------------- -----------                 */
2077     "Sun DLT7000",            /* .name            Display ("pretty") name     */
2078     15,                       /* .length          Length of next item...      */
2079     "SUN     DLT7000",        /* .vid             Vendor-product ID string    */
2080     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
2081     0,                        /* .bsize           Block size (0 = variable)   */
2082                               /* .options         Drive option flags:         */
2083     ST_VARIABLE         |     /*    00001           Supports variable length  */
2084     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2085     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2086     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2087     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2088     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
2089     ST_BUFFERED_WRITES  |     /*    04000           [Note 4]                  */
2090     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2091     ST_CLN_TYPE_3,            /* 40000000         Asks to be cleaned this way */
2092                               /* --------                                     */
2093                               /* 4000D619                                     */
2094     400,                      /* .max_rretries    [Note 3]                    */
2095     400,                      /* .max_wretries    [Note 3]                    */
2096     {0x82, 0x83, 0x84, 0x85}, /* .densities       Density codes [Note 1]      */
2097     MT_DENSITY3,              /* .default_density (.densities[x])             */
2098     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
2099     0,                        /* .non_motion_timeout Nothing special          */
2100     0,                        /* .io_timeout Four    Nothing Special          */
2101     0,                        /* .rewind_timeout     Nothing Special          */
2102     0,                        /* .space_timeout      Nothing Special          */
2103     0,                        /* .load_timeout       Nothing Special          */
2104     0,                        /* .unload_timeout     Nothing Special          */
2105     MINUTES(360)              /* .erase_timeout      Six hours                */
2106   },
2107 
2108   /*
2109    * Sun DLT4000
2110    *
2111    *     NOTES
2112    *     -----
2113    * [1] The DLT4000 implements many tape formats, but the st driver supports
2114    *     only the four highest densities.
2115    * [2] The DLT4000 has only one speed (if the driver ever cares).
2116    * [3] max_rretries and max_wretries are driver anachronisms.
2117    * [4] Data is buffered in the driver and pre-acked to the application. This
2118    *     is only supported in 2.5.1.
2119    */
2120   {                           /* Structure member Description                 */
2121                               /* ---------------- -----------                 */
2122     "DLT4000",                /* .name            Display ("pretty") name     */
2123     15,                       /* .length          Length of next item...      */
2124     "SUN     DLT4000",        /* .vid             Vendor-product ID string    */
2125     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
2126     0,                        /* .bsize           Block size (0 = variable)   */
2127                               /* .options         Drive option flags:         */
2128     ST_VARIABLE        |      /*    00001           Supports variable length  */
2129     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2130     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2131     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2132     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2133     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2134     ST_BUFFERED_WRITES |      /*    04000           [Note 4]                  */
2135     ST_NO_RECSIZE_LIMIT|      /*    08000           Supports blocks > 64KB    */
2136     ST_CLN_TYPE_3,            /* 40000000         Asks to be cleaned this way */
2137                               /* --------                                     */
2138                               /* 4000D619                                     */
2139     400,                      /* .max_rretries    [Note 3]                    */
2140     400,                      /* .max_wretries    [Note 3]                    */
2141     {0x80, 0x81, 0x82, 0x83}, /* .densities       Density codes [Note 1]      */
2142     MT_DENSITY3,              /* .default_density (.densities[x])             */
2143     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
2144     0,                        /* .non_motion_timeout Nothing special          */
2145     0,                        /* .io_timeout Four    Nothing Special          */
2146     0,                        /* .rewind_timeout     Nothing Special          */
2147     0,                        /* .space_timeout      Nothing Special          */
2148     0,                        /* .load_timeout       Nothing Special          */
2149     0,                        /* .unload_timeout     Nothing Special          */
2150     MINUTES(360)              /* .erase_timeout      Six hours                */
2151   },
2152 
2153   /*
2154    * Sun DLT4700
2155    *
2156    *     NOTES
2157    *     -----
2158    * [1] Compression on the DLT4700 is controlled via the Device Configuration
2159    *     mode page or the Data Compression page (either one).
2160    * [2] The DLT4700 implements many tape formats, but the st driver supports
2161    *     only the four highest densities.
2162    * [3] The DLT4700 has only one speed (if the driver ever cares).
2163    * [4] max_rretries and max_wretries are driver anachronisms.
2164    * [5] Data is buffered in the driver and pre-acked to the application. This
2165    *     is only supported in 2.5.1.
2166    */
2167   {                           /* Structure member Description                 */
2168                               /* ---------------- -----------                 */
2169     "DLT4700 Library",        /* .name            Display ("pretty") name     */
2170     15,                       /* .length          Length of next item...      */
2171     "SUN     DLT4700",        /* .vid             Vendor-product ID string    */
2172     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
2173     0,                        /* .bsize           Block size (0 = variable)   */
2174                               /* .options         Drive option flags:         */
2175     ST_VARIABLE        |      /*    00001           Supports variable length  */
2176     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2177     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2178     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2179     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2180     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2181     ST_BUFFERED_WRITES |      /*    04000           [Note 5]                  */
2182     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2183                               /*    -----                                     */
2184                               /*    0D619                                     */
2185     400,                      /* .max_rretries    [Note 4]                    */
2186     400,                      /* .max_wretries    [Note 4]                    */
2187     {0x80, 0x81, 0x82, 0x83}, /* .densities       Density codes [Note 2]      */
2188     MT_DENSITY3,              /* .default_density (.densities[x])             */
2189     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
2190     0,                        /* .non_motion_timeout Nothing special          */
2191     0,                        /* .io_timeout Four    Nothing Special          */
2192     0,                        /* .rewind_timeout     Nothing Special          */
2193     0,                        /* .space_timeout      Nothing Special          */
2194     0,                        /* .load_timeout       Nothing Special          */
2195     0,                        /* .unload_timeout     Nothing Special          */
2196     MINUTES(360)              /* .erase_timeout      Six hours                */
2197   },
2198 
2199   /*
2200    * Tandberg SLR5 4/8G (standard firmware)
2201    *
2202    *     NOTES
2203    *     -----
2204    * [1] The density code entry requires four values, even if there are less
2205    *     than four values for the drive.
2206    * [2] The Tandberg SLR5 4/8G has only one speed (if the driver ever cares).
2207    * [3] max_rretries and max_wretries are driver anachronisms.
2208    */
2209   {                           /* Structure member Description                 */
2210                               /* ---------------- -----------                 */
2211     "Tandberg 4/8 Gig QIC",   /* .name            Display ("pretty") name     */
2212     19,                       /* .length          Length of next item...      */
2213     "TANDBERG SLR5 4/8GB",    /* .vid             Vendor-product ID string    */
2214     ST_TYPE_TAND25G,          /* .type            Numeric type (cf. mtio.h)   */
2215     0,                        /* .bsize           Block size (0 = variable)   */
2216                               /* .options         Drive option flags:         */
2217     ST_VARIABLE        |      /*    00001           Supports variable length  */
2218     ST_QIC             |      /*    00002           QIC tape device           */
2219     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2220     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2221     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
2222     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2223     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2224     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2225     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2226                               /*    -----                                     */
2227                               /*    0963B                                     */
2228     400,                      /* .max_rretries    [Note 3]                    */
2229     400,                      /* .max_wretries    [Note 3]                    */
2230     {0x22, 0x22, 0x26, 0x26}, /* .densities       Density codes [Note 1]      */
2231     MT_DENSITY4,              /* .default_density (.densities[x])             */
2232     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2233   },
2234 
2235   /*
2236    * Tandberg SLR5 (SMI firmware).
2237    *
2238    *     NOTES
2239    *     -----
2240    *  o The inquiry string for this drive is actually padded with blanks, but
2241    *    we only check the first 13 characters so that this will act as a default
2242    *    to cover other revisions of firmware on SLR5s which may show up.
2243    *
2244    * [1] The density code entry requires four values, even if there are less
2245    *     than four values for the drive.
2246    * [2] The Tandberg SLR5 has only one speed (if the driver ever cares).
2247    * [3] max_rretries and max_wretries are driver anachronisms.
2248    */
2249   {                           /* Structure member Description                 */
2250                               /* ---------------- -----------                 */
2251     "Tandberg 8 Gig QIC",     /* .name            Display ("pretty") name     */
2252     13,                       /* .length          Length of next item...      */
2253     "TANDBERG SLR5",          /* .vid             Vendor-product ID string    */
2254     ST_TYPE_TAND25G,          /* .type            Numeric type (cf. mtio.h)   */
2255     0,                        /* .bsize           Block size (0 = variable)   */
2256                               /* .options         Drive option flags:         */
2257     ST_VARIABLE        |      /*    00001           Supports variable length  */
2258     ST_QIC             |      /*    00002           QIC tape device           */
2259     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2260     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2261     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
2262     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2263     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2264     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2265     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2266                               /*    -----                                     */
2267                               /*    0963B                                     */
2268     400,                      /* .max_rretries    [Note 3]                    */
2269     400,                      /* .max_wretries    [Note 3]                    */
2270     {0xA0, 0xD0, 0xD0, 0xD0}, /* .densities       Density codes [Note 1]      */
2271     MT_DENSITY4,              /* .default_density (.densities[x])             */
2272     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2273   },
2274 
2275   /*
2276    * Tandberg 4100 QIC
2277    *
2278    *     NOTES
2279    *     -----
2280    *  o This is an unsupported drive.
2281    *
2282    * [1] The Tandberg 4100 uses 0 or the "default" density code.
2283    * [2] The Tandberg 4100 has only one speed (if the driver ever cares).
2284    * [3] max_rretries and max_wretries are driver anachronisms.
2285    */
2286   {                           /* Structure member Description                 */
2287                               /* ---------------- -----------                 */
2288     "Tandberg 4100 QIC",      /* .name            Display ("pretty") name     */
2289     13,                       /* .length          Length of next item...      */
2290     "TANDBERG 4100",          /* .vid             Vendor-product ID string    */
2291     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2292     512,                      /* .bsize           Block size (0 = variable)   */
2293                               /* .options         Drive option flags:         */
2294     ST_QIC        |           /*    00002           QIC tape device           */
2295     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
2296     ST_BSR        |           /*    00010           Supports SPACE block rev  */
2297     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
2298     ST_KNOWS_EOD  |           /*    00200           Recognizes end-of-data    */
2299     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2300                               /*    -----                                     */
2301                               /*    0063A                                     */
2302     400,                      /* .max_rretries    [Note 3]                    */
2303     400,                      /* .max_wretries    [Note 3]                    */
2304     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2305     MT_DENSITY2,              /* .default_density (.densities[x])             */
2306     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2307   },
2308 
2309   /*
2310    * Tandberg 4200 QIC
2311    *
2312    *     NOTES
2313    *     -----
2314    *  o This is an unsupported drive.
2315    *
2316    * [1] The Tandberg 4200 uses 0 or the "default" density code.
2317    * [2] The Tandberg 4200 has only one speed (if the driver ever cares).
2318    * [3] max_rretries and max_wretries are driver anachronisms.
2319    */
2320   {                           /* Structure member Description                 */
2321                               /* ---------------- -----------                 */
2322     "Tandberg 4200 QIC",      /* .name            Display ("pretty") name     */
2323     13,                       /* .length          Length of next item...      */
2324     "TANDBERG 4200",          /* .vid             Vendor-product ID string    */
2325     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2326     512,                      /* .bsize           Block size (0 = variable)   */
2327                               /* .options         Drive option flags:         */
2328     ST_QIC        |           /*    00002           QIC tape device           */
2329     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
2330     ST_BSR        |           /*    00010           Supports SPACE block rev  */
2331     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
2332     ST_KNOWS_EOD  |           /*    00200           Recognizes end-of-data    */
2333     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2334                               /*    -----                                     */
2335                               /*    0063A                                     */
2336     400,                      /* .max_rretries    [Note 3]                    */
2337     400,                      /* .max_wretries    [Note 3]                    */
2338     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2339     MT_DENSITY2,              /* .default_density (.densities[x])             */
2340     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2341   },
2342 
2343   /*
2344    * Tandberg QIC 2.5 Gig Tape Drive
2345    *
2346    *     NOTES
2347    *     -----
2348    * [1] The TDC 4200 uses 0 or the "default" density code.
2349    * [2] The TDC 4200 has only one speed (if the driver ever cares).
2350    * [3] max_rretries and max_wretries are driver anachronisms.
2351    * [4] Data is buffered in the driver and pre-acked to the application. This
2352    *     is only supported in 2.5.1.
2353    */
2354   {                           /* Structure member Description                 */
2355                               /* ---------------- -----------                 */
2356     "Tandberg QIC 2.5 Gig Tape Drive",
2357                               /* .name            Display ("pretty") name     */
2358     16,                       /* .length          Length of next item...      */
2359     "TANDBERG TDC 420*",      /* .vid             Vendor-product ID string    */
2360     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2361     0,                        /* .bsize           Block size (0 = variable)   */
2362                               /* .options         Drive option flags:         */
2363     ST_VARIABLE          |    /*    00001           Supports variable length  */
2364     ST_QIC               |    /*    00002           QIC tape device           */
2365     ST_BSF               |    /*    00008           Supports SPACE block fwd  */
2366     ST_BSR               |    /*    00010           Supports SPACE block rev  */
2367     ST_LONG_ERASE        |    /*    00020           Needs extra time to erase */
2368     ST_AUTODEN_OVERRIDE  |    /*    00040           Autodensity override flag */
2369     ST_KNOWS_EOD         |    /*    00200           Recognizes end-of-data    */
2370     ST_UNLOADABLE        |    /*    00400           Driver can be unloaded    */
2371     ST_LONG_TIMEOUTS     |    /*    01000           More time for some ops    */
2372     ST_BUFFERED_WRITES   |    /*    04000           [Note 4]                  */
2373     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2374                               /*    -----                                     */
2375                               /*    0D67B                                     */
2376     400,                      /* .max_rretries    [Note 3]                    */
2377     400,                      /* .max_wretries    [Note 3]                    */
2378     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2379     MT_DENSITY1,              /* .default_density (.densities[x])             */
2380     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2381   },
2382 
2383   /*
2384    * Tandberg MLR1 QIC
2385    *
2386    *     NOTES
2387    *     -----
2388    * [1] The MLR1 uses 0 or the "default" density code.
2389    * [2] The MLR1 has only one speed (if the driver ever cares).
2390    * [3] max_rretries and max_wretries are driver anachronisms.
2391    * [4] Data is buffered in the driver and pre-acked to the application. This
2392    *     is only supported in 2.5.1.
2393    */
2394   {                           /* Structure member Description                 */
2395                               /* ---------------- -----------                 */
2396     "Tandberg MLR1 QIC",      /* .name            Display ("pretty") name     */
2397     12,                       /* .length          Length of next item...      */
2398     "TANDBERGMLR1",           /* .vid             Vendor-product ID string    */
2399     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2400     512,                      /* .bsize           Block size (0 = variable)   */
2401                               /* .options         Drive option flags:         */
2402     ST_QIC            |       /*    00002         QIC tape device             */
2403     ST_BSF            |       /*    00008         Supports SPACE block fwd    */
2404     ST_BSR            |       /*    00010         Supports SPACE block rev    */
2405     ST_LONG_ERASE     |       /*    00020         Needs extra time to erase   */
2406     ST_KNOWS_EOD      |       /*    00200         Recognizes end-of-data      */
2407     ST_UNLOADABLE     |       /*    00400         Driver can be unloaded      */
2408     ST_BUFFERED_WRITES,       /*    04000         [Note 4]                    */
2409                               /*    -----                                     */
2410                               /*    0463A                                     */
2411     400,                      /* .max_rretries    [Note 3]                    */
2412     400,                      /* .max_wretries    [Note 3]                    */
2413     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2414     MT_DENSITY1,              /* .default_density (.densities[x])             */
2415     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2416   },
2417 
2418   /*
2419    * Tandberg MLR3 QIC
2420    *
2421    *     NOTES
2422    *     -----
2423    * [1] The density code entry requires four values, even if there are less
2424    *     than four values for the drive.
2425    * [2] The MLR3 has only one speed (if the driver ever cares).
2426    * [3] max_rretries and max_wretries are driver anachronisms.
2427    */
2428   {                           /* Structure member Description                 */
2429                               /* ---------------- -----------                 */
2430     "Tandberg 50 Gig QIC",    /* .name            Display ("pretty") name     */
2431     12,                       /* .length          Length of next item...      */
2432     "TANDBERGMLR3",           /* .vid             Vendor-product ID string    */
2433     MT_ISTAND25G,             /* .type            Numeric type (cf. mtio.h)   */
2434     0,                        /* .bsize           Block size (0 = variable)   */
2435                               /* .options         Drive option flags:         */
2436     ST_VARIABLE        |      /*    00001           Supports variable length  */
2437     ST_QIC             |      /*    00002           QIC tape device           */
2438     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2439     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2440     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
2441     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2442     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2443     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2444     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2445                               /*    -----                                     */
2446                               /*    0963B                                     */
2447     400,                      /* .max_rretries    [Note 3]                    */
2448     400,                      /* .max_wretries    [Note 3]                    */
2449     {0xA0, 0xD0, 0xD0, 0xD0}, /* .densities       Density codes [Note 1]      */
2450     MT_DENSITY3,              /* .default_density (.densities[x])             */
2451     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2452   },
2453 
2454   /*
2455    * WangDAT 3.81mm cartridge
2456    *
2457    *     NOTES
2458    *     -----
2459    *  o This is an unsupported drive.
2460    *
2461    * [1] The WangDAT 3.81mm uses 0 or the "default" density code.
2462    * [2] The WangDAT 3.81mm has only one speed (if the driver ever cares).
2463    * [3] max_rretries and max_wretries are driver anachronisms.
2464    */
2465   {                           /* Structure member Description                 */
2466                               /* ---------------- -----------                 */
2467     "Wang DAT 3.81 Helical Scan",
2468                               /* .name            Display ("pretty") name     */
2469     7,                        /* .length          Length of next item...      */
2470     "WangDAT",                /* .vid             Vendor-product ID string    */
2471     ST_TYPE_WANGDAT,          /* .type            Numeric type (cf. mtio.h)   */
2472     0,                        /* .bsize           Block size (0 = variable)   */
2473                               /* .options         Drive option flags:         */
2474     ST_VARIABLE         |     /*    00001           Supports variable length  */
2475     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2476     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2477     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
2478     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2479     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2480                               /*    -----                                     */
2481                               /*    00659                                     */
2482     5000,                     /* .max_rretries    [Note 3]                    */
2483     5000,                     /* .max_wretries    [Note 3]                    */
2484     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2485     MT_DENSITY2,              /* .default_density (.densities[x])             */
2486     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2487   },
2488 
2489   /*
2490    * Wangtek QIC-150 1/4" cartridge
2491    *
2492    *     NOTES
2493    *     -----
2494    *  o This is an unsupported drive.
2495    *
2496    * [1] The Wangtek QIC-150 uses 0 or the "default" density code.
2497    * [2] The Wangtek QIC-150 has only one speed (if the driver ever cares).
2498    * [3] max_rretries and max_wretries are driver anachronisms.
2499    */
2500   {                           /* Structure member Description                 */
2501                               /* ---------------- -----------                 */
2502     "Wangtek QIC-150",        /* .name            Display ("pretty") name     */
2503     14,                       /* .length          Length of next item...      */
2504     "WANGTEK 5150ES",         /* .vid             Vendor-product ID string    */
2505     ST_TYPE_WANGTEK,          /* .type            Numeric type (cf. mtio.h)   */
2506     512,                      /* .bsize           Block size (0 = variable)   */
2507                               /* .options         Drive option flags:         */
2508     ST_QIC              |     /*    00002           QIC tape device           */
2509     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
2510     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2511     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2512                               /*    -----                                     */
2513                               /*    00642                                     */
2514     400,                      /* .max_rretries    [Note 3]                    */
2515     400,                      /* .max_wretries    [Note 3]                    */
2516     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2517     MT_DENSITY2,              /* .default_density (.densities[x])             */
2518     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2519   },
2520 
2521   /*
2522    * Wangtek 4mm RDAT drive
2523    *
2524    *     NOTES
2525    *     -----
2526    *  o This is an unsupported drive.
2527    *
2528    *  o This entry uses a shortened Vendor-product ID string for the
2529    *    INQUIRY match.
2530    *
2531    * [1] The Wangtek 4mm RDAT uses 0 or the "default" density code.
2532    * [2] The Wangtek 4mm RDAT has only one speed (if the driver ever cares).
2533    * [3] max_rretries and max_wretries are driver anachronisms.
2534    */
2535   {                           /* Structure member Description                 */
2536                               /* ---------------- -----------                 */
2537     "Wangtek 4mm Helical Scan",
2538                               /* .name            Display ("pretty") name     */
2539     14,                       /* .length          Length of next item...      */
2540     "WANGTEK 6130-H*",        /* .vid             Vendor-product ID string    */
2541     ST_TYPE_WANGTHS,          /* .type            Numeric type (cf. mtio.h)   */
2542     0,                        /* .bsize           Block size (0 = variable)   */
2543                               /* .options         Drive option flags:         */
2544     ST_VARIABLE         |     /*    00001           Supports variable length  */
2545     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2546     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2547     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
2548     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2549     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2550                               /*    -----                                     */
2551                               /*    00659                                     */
2552     400,                      /* .max_rretries    [Note 3]                    */
2553     400,                      /* .max_wretries    [Note 3]                    */
2554     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2555     MT_DENSITY2,              /* .default_density (.densities[x])             */
2556     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2557   },
2558 
2559   /*
2560    * Wangtek QIC-150 1/4" cartridge
2561    *
2562    *     NOTES
2563    *     -----
2564    *  o This is an unsupported drive.
2565    *
2566    * [1] The Wangtek QIC-150 uses 0 or the "default" density code.
2567    * [2] The Wangtek QIC-150 has only one speed (if the driver ever cares).
2568    * [3] max_rretries and max_wretries are driver anachronisms.
2569    */
2570   {                           /* Structure member Description                 */
2571                               /* ---------------- -----------                 */
2572     "Wangtek 5525ES SCSI",    /* .name            Display ("pretty") name     */
2573     19,                       /* .length          Length of next item...      */
2574     "WANGTEK 5525ES SCSI",    /* .vid             Vendor-product ID string    */
2575     ST_TYPE_WANGTEK,          /* .type            Numeric type (cf. mtio.h)   */
2576     512,                      /* .bsize           Block size (0 = variable)   */
2577                               /* .options         Drive option flags:         */
2578     ST_QIC              |     /*    00002           QIC tape device           */
2579     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2580     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2581     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
2582     ST_AUTODEN_OVERRIDE |     /*    00040           Autdensity override flag  */
2583     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2584     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2585                               /*    -----                                     */
2586                               /*    0067A                                     */
2587     400,                      /* .max_rretries    [Note 3]                    */
2588     400,                      /* .max_wretries    [Note 3]                    */
2589     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2590     MT_DENSITY2,              /* .default_density (.densities[x])             */
2591     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2592   },
2593 
2594   /*
2595    * [1] The Ecrix VXA-1 has only one density at this time,
2596    *     Compression is controlled via the Device Configuration
2597    *     mode page.
2598    * [2] The Ecrix VXA-1 is a veriable speed device. The drive determines
2599    *     the optimum speed. (if the driver ever cares).
2600    */
2601   {                           /* Structure member Description                 */
2602                               /* ---------------- -----------                 */
2603     "Ecrix VXA-1",            /* .name            Display ("pretty") name     */
2604     13,                       /* .length          Length of next item...      */
2605     "ECRIX   VXA-1",          /* .vid             Vendor-product ID string    */
2606     MT_ISOTHER,               /* .type            Numeric type (cf. mtio.h)   */
2607     0,                        /* .bsize           Block size (0 = variable)   */
2608                               /* .options         Drive option flags:         */
2609     ST_VARIABLE             | /*    00001           Supports variable length  */
2610     ST_BSF                  | /*    00008           Supports SPACE block fwd  */
2611     ST_BSR                  | /*    00010           Supports SPACE block rev  */
2612     ST_LONG_ERASE           | /*    00020           Needs extra time to erase */
2613     ST_KNOWS_EOD            | /*    00200           Recognizes end-of-data    */
2614     ST_UNLOADABLE           | /*    00400           Driver can be unloaded    */
2615     ST_SOFT_ERROR_REPORTING | /*    00800           Reports errors on close   */
2616     ST_LONG_TIMEOUTS        | /*    01000           More time for some ops    */
2617     ST_NO_RECSIZE_LIMIT     | /*    08000           Supports blocks > 64KB    */
2618     ST_MODE_SEL_COMP        | /*    10000         Mode Select to enable comp  */
2619     ST_CLN_TYPE_1,            /* 10000000         Asks to be cleaned this way */
2620                               /* --------                                     */
2621                               /* 10019E39                                     */
2622     -1,                       /* .max_rretries                                */
2623     -1,                       /* .max_wretries                                */
2624     {0x80, 0x80, 0x80, 0x80}, /* .densities       Density codes [Note 1]      */
2625     MT_DENSITY4,              /* .default_density (.densities[x])             */
2626     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2627   },
2628 
2629   /*
2630    * [1] The IBM Ultrium Gen 3 "OEM" version has three densites at this time,
2631    *     One for Gen 1 0x40, One for Gen 2 0x42 and for Gen 3 0x44.
2632    *     This drive is configured with ST_KNOWS_MEDIA.
2633    *     That means that it will look at the mediatype from the mode sense
2634    *     to select the density code. The compression will be selected based
2635    *     on the minor node the user opened.
2636    * [2] The IBM LTO reports a medium type that is used to select the density.
2637    */
2638   {                           /* Structure member Description                 */
2639                               /* ---------------- -----------                 */
2640     "IBM Ultrium Gen 3 LTO",  /* .name            Display ("pretty") name     */
2641     19,                       /* .length          Length of next item...      */
2642     "IBM     ULTRIUM-TD3",    /* .vid             Vendor-product ID string    */
2643     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
2644     0,                        /* .bsize           Block size (0 = variable)   */
2645                               /* .options         Drive option flags:         */
2646     ST_VARIABLE         |     /*   000001           Supports variable length  */
2647     ST_BSF              |     /*   000008           Supports SPACE block fwd  */
2648     ST_BSR              |     /*   000010           Supports SPACE block rev  */
2649     ST_KNOWS_EOD        |     /*   000200           Recognizes end-of-data    */
2650     ST_UNLOADABLE       |     /*   000400           Driver can be unloaded    */
2651     ST_NO_RECSIZE_LIMIT |     /*   008000           Supports blocks > 64KB    */
2652     ST_MODE_SEL_COMP    |     /*   010000           [Note 1]                  */
2653     ST_KNOWS_MEDIA,           /*   800000         Media detrmines density     */
2654                               /*    -----                                     */
2655                               /*   818619                                     */
2656     -1,                       /* .max_rretries    Not used any more.          */
2657     -1,                       /* .max_wretries    Not used any more.          */
2658     {0x40, 0x42, 0x44, 0x44}, /* .densities       Density codes [Note 1]      */
2659     MT_DENSITY4,              /* .default_density (.densities[x])             */
2660     {0x18, 0x28, 0x38, 0x38}, /* .mediatype       Media type  [Note 2]        */
2661     MINUTES(1),               /* .non_motion_time                             */
2662     MINUTES(18),              /* .io_time                                     */
2663     MINUTES(9),               /* .rewind_time                                 */
2664     MINUTES(165),             /* .space_time      worst case directory invalid*/
2665     MINUTES(9),               /* .load_time                                   */
2666     MINUTES(12),              /* .unload_time                                 */
2667     MINUTES(160)              /* .erase_time                                  */
2668   },
2669 
2670   /*
2671    * [1] The IBM Ultrium Gen 3 "IBM" version has three densites at this time,
2672    *     One for Gen 1 0x40, One for Gen 2 0x42 and Gen 3 0x44.
2673    *     This drive is configured with ST_KNOWS_MEDIA.
2674    *     That means that it will look at the mediatype from the mode sense
2675    *     to select the density code. The compression will be selected based
2676    *     on the minor node the user opened.
2677    * [2] The IBM LTO reports a medium type that is used to select the density.
2678    */
2679   {                           /* Structure member Description                 */
2680                               /* ---------------- -----------                 */
2681     "IBM Ultrium Gen 3 LTO",  /* .name            Display ("pretty") name     */
2682     19,                       /* .length          Length of next item...      */
2683     "IBM     ULT3580-TD3",    /* .vid             Vendor-product ID string    */
2684     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
2685     0,                        /* .bsize           Block size (0 = variable)   */
2686                               /* .options         Drive option flags:         */
2687     ST_VARIABLE         |     /*   000001           Supports variable length  */
2688     ST_BSF              |     /*   000008           Supports SPACE block fwd  */
2689     ST_BSR              |     /*   000010           Supports SPACE block rev  */
2690     ST_KNOWS_EOD        |     /*   000200           Recognizes end-of-data    */
2691     ST_UNLOADABLE       |     /*   000400           Driver can be unloaded    */
2692     ST_NO_RECSIZE_LIMIT |     /*   008000           Supports blocks > 64KB    */
2693     ST_MODE_SEL_COMP    |     /*   010000           [Note 1]                  */
2694     ST_KNOWS_MEDIA,           /*   800000         Media detrmines density     */
2695                               /*    -----                                     */
2696                               /*   818619                                     */
2697     -1,                       /* .max_rretries    Not used any more.          */
2698     -1,                       /* .max_wretries    Not used any more.          */
2699     {0x40, 0x42, 0x44, 0x44}, /* .densities       Density codes [Note 1]      */
2700     MT_DENSITY4,              /* .default_density (.densities[x])             */
2701     {0x18, 0x28, 0x38, 0x38}, /* .mediatype       Media type  [Note 2]        */
2702     MINUTES(1),               /* .non_motion_time                             */
2703     MINUTES(18),              /* .io_time                                     */
2704     MINUTES(9),               /* .rewind_time                                 */
2705     MINUTES(165),             /* .space_time      worst case directory invalid*/
2706     MINUTES(9),               /* .load_time                                   */
2707     MINUTES(12),              /* .unload_time                                 */
2708     MINUTES(160)              /* .erase_time                                  */
2709   },
2710 
2711   /*
2712    * [1] The IBM Ultrium Gen 2 "OEM" version has two densites at this time,
2713    *     One for Gen 1 0x40, One for Gen 2 0x42. In reallity The media
2714    *     Selects which density code is used but this documents the codes
2715    *     for those who care to know.
2716    *     Compression is controlled via the Compression mode page.
2717    * [2] The IBM Ultrium has only one speed (if the driver ever cares).
2718    */
2719   {                           /* Structure member Description                 */
2720                               /* ---------------- -----------                 */
2721     "IBM Ultrium Gen 2 LTO",  /* .name            Display ("pretty") name     */
2722     19,                       /* .length          Length of next item...      */
2723     "IBM     ULTRIUM-TD2",    /* .vid             Vendor-product ID string    */
2724     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
2725     0,                        /* .bsize           Block size (0 = variable)   */
2726                               /* .options         Drive option flags:         */
2727     ST_VARIABLE         |     /*    00001           Supports variable length  */
2728     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2729     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2730     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2731     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2732     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2733     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
2734                               /*    -----                                     */
2735                               /*    18619                                     */
2736     -1,                       /* .max_rretries    Not used any more.          */
2737     -1,                       /* .max_wretries    Not used any more.          */
2738     {0x40, 0x40, 0x42, 0x42}, /* .densities       Density codes [Note 1]      */
2739     MT_DENSITY4,              /* .default_density (.densities[x])             */
2740     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2741     MINUTES(1),               /* .non_motion_time                             */
2742     MINUTES(18),              /* .io_time                                     */
2743     MINUTES(9),               /* .rewind_time                                 */
2744     MINUTES(151),             /* .space_time      worst case directory invalid*/
2745     MINUTES(12),              /* .load_time                                   */
2746     MINUTES(11),              /* .unload_time                                 */
2747     MINUTES(151)              /* .erase_time                                  */
2748   },
2749 
2750   /*
2751    * [1] The IBM Ultrium Gen 2 "IBM" version has two densites at this time,
2752    *     One for Gen 1 0x40, One for Gen 2 0x42. In reallity The media
2753    *     Selects which density code is used but this documents the codes
2754    *     for those who care to know.
2755    *     Compression is controlled via the Compression mode page.
2756    * [2] The IBM Ultrium has only one speed (if the driver ever cares).
2757    */
2758   {                           /* Structure member Description                 */
2759                               /* ---------------- -----------                 */
2760     "IBM Ultrium Gen 2 LTO",  /* .name            Display ("pretty") name     */
2761     19,                       /* .length          Length of next item...      */
2762     "IBM     ULT3580-TD2",    /* .vid             Vendor-product ID string    */
2763     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
2764     0,                        /* .bsize           Block size (0 = variable)   */
2765                               /* .options         Drive option flags:         */
2766     ST_VARIABLE         |     /*    00001           Supports variable length  */
2767     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2768     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2769     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2770     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2771     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2772     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
2773                               /*    -----                                     */
2774                               /*    18619                                     */
2775     -1,                       /* .max_rretries    Not used any more.          */
2776     -1,                       /* .max_wretries    Not used any more.          */
2777     {0x40, 0x40, 0x42, 0x42}, /* .densities       Density codes [Note 1]      */
2778     MT_DENSITY4,              /* .default_density (.densities[x])             */
2779     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2780     MINUTES(1),               /* .non_motion_time                             */
2781     MINUTES(18),              /* .io_time                                     */
2782     MINUTES(9),               /* .rewind_time                                 */
2783     MINUTES(151),             /* .space_time      worst case directory invalid*/
2784     MINUTES(12),              /* .load_time                                   */
2785     MINUTES(11),              /* .unload_time                                 */
2786     MINUTES(151)              /* .erase_time                                  */
2787   },
2788 
2789   /*
2790    * [1] The IBM Ultrium has only one density at this time,
2791    *     Compression is controlled via the Device Configuration mode page.
2792    * [2] The IBM Ultrium has only one speed (if the driver ever cares).
2793    */
2794   {                           /* Structure member Description                 */
2795                               /* ---------------- -----------                 */
2796     "IBM Ultrium LTO",        /* .name            Display ("pretty") name     */
2797     19,                       /* .length          Length of next item...      */
2798     "IBM     ULTRIUM-TD1",    /* .vid             Vendor-product ID string    */
2799     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
2800     0,                        /* .bsize           Block size (0 = variable)   */
2801                               /* .options         Drive option flags:         */
2802     ST_VARIABLE         |     /*    00001           Supports variable length  */
2803     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2804     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2805     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2806     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2807     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2808     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
2809                               /*    -----                                     */
2810                               /*    18619                                     */
2811     -1,                       /* .max_rretries    Not used any more.          */
2812     -1,                       /* .max_wretries    Not used any more.          */
2813     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
2814     MT_DENSITY4,              /* .default_density (.densities[x])             */
2815     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2816     MINUTES(1),               /* .non_motion_time                             */
2817     MINUTES(18),              /* .io_time                                     */
2818     MINUTES(8),               /* .rewind_time                                 */
2819     MINUTES(173),             /* .space_time      worst case directory invalid*/
2820     MINUTES(11),              /* .load_time                                   */
2821     MINUTES(11),              /* .unload_time                                 */
2822     MINUTES(173)              /* .erase_time                                  */
2823   },
2824 
2825   /*
2826    * This is the same drive as the above except for the inquiry string and
2827    * that it is a "End User Version".
2828    * [1] The IBM Ultrium has only one density at this time,
2829    *     Compression is controlled via the Device Configuration mode page.
2830    * [2] The IBM Ultrium has only one speed (if the driver ever cares).
2831    */
2832   {                           /* Structure member Description                 */
2833                               /* ---------------- -----------                 */
2834     "IBM Ultrium LTO",        /* .name            Display ("pretty") name     */
2835     19,                       /* .length          Length of next item...      */
2836     "IBM     ULT3580-TD1",    /* .vid             Vendor-product ID string    */
2837     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
2838     0,                        /* .bsize           Block size (0 = variable)   */
2839                               /* .options         Drive option flags:         */
2840     ST_VARIABLE         |     /*    00001           Supports variable length  */
2841     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2842     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2843     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2844     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2845     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2846     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
2847                               /*    -----                                     */
2848                               /*    18619                                     */
2849     -1,                       /* .max_rretries    Not used any more.          */
2850     -1,                       /* .max_wretries    Not used any more.          */
2851     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
2852     MT_DENSITY4,              /* .default_density (.densities[x])             */
2853     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2854     MINUTES(1),               /* .non_motion_time                             */
2855     MINUTES(18),              /* .io_time                                     */
2856     MINUTES(8),               /* .rewind_time                                 */
2857     MINUTES(173),             /* .space_time      worst case directory invalid*/
2858     MINUTES(11),              /* .load_time                                   */
2859     MINUTES(11),              /* .unload_time                                 */
2860     MINUTES(173)              /* .erase_time                                  */
2861   },
2862 
2863   /*
2864    * [1] The IBM 3592 Cartridge has only one density at this time,
2865    *     Compression is controlled via the Device Configuration mode page.
2866    * [2] The IBM 3592 Cartridge has only one speed (if the driver ever cares).
2867    */
2868   {                           /* Structure member Description                 */
2869                               /* ---------------- -----------                 */
2870     "IBM 3592 Cartridge",     /* .name            Display ("pretty") name     */
2871     13,                       /* .length          Length of next item...      */
2872     "IBM     03592",          /* .vid             Vendor-product ID string    */
2873     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
2874     0,                        /* .bsize           Block size (0 = variable)   */
2875                               /* .options         Drive option flags:         */
2876     ST_VARIABLE         |     /*    00001           Supports variable length  */
2877     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2878     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2879     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
2880     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2881     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2882     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2883     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
2884                               /*    -----                                     */
2885                               /*    18659                                     */
2886     -1,                       /* .max_rretries    Not used any more.          */
2887     -1,                       /* .max_wretries    Not used any more.          */
2888     {0x51, 0x51, 0x51, 0x51}, /* .densities       Density codes [Note 1]      */
2889     MT_DENSITY4,              /* .default_density (.densities[x])             */
2890     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2891     MINUTES(1),               /* .non_motion_time                             */
2892     MINUTES(18),              /* .io_time                                     */
2893     MINUTES(8),               /* .rewind_time                                 */
2894     MINUTES(14),              /* .space_time      worst case directory invalid*/
2895     MINUTES(12),              /* .load_time                                   */
2896     MINUTES(12),              /* .unload_time                                 */
2897     MINUTES(235)              /* .erase_time                                  */
2898   },
2899 
2900   /*
2901    * Seagate Hornet NS20 USB Travan
2902    *
2903    *     NOTES
2904    *     -----
2905    *  o This drive is not OEM'ed or qualified by Sun.
2906    *
2907    * [1] The NS20 Travan uses 0 or the "default" density code.
2908    * [2] The NS20 Travan has only one speed (if the driver ever cares).
2909    * [3] max_rretries and max_wretries are driver anachronisms.
2910    */
2911   {                           /* Structure member Description                 */
2912                               /* ---------------- -----------                 */
2913     "Seagate Hornet NS20 Travan",
2914                               /* .name            Display ("pretty") name     */
2915     17,                       /* .length          Length of next item...      */
2916     "Seagate STT20000A",      /* .vid             Vendor-product ID string    */
2917     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2918     512,                      /* .bsize           Block size (0 = variable)   */
2919                               /* .options         Drive option flags:         */
2920     ST_QIC              |     /*    00002           QIC tape device           */
2921     ST_BSF              |     /*    00008           Supports back SPACE file  */
2922     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2923                               /*    -----                                     */
2924                               /*    0040A                                     */
2925     400,                      /* .max_rretries    [Note 3]                    */
2926     400,                      /* .max_wretries    [Note 3]                    */
2927     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2928     MT_DENSITY1,              /* .default_density (.densities[x])             */
2929     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2930   },
2931 
2932 
2933   /*
2934    * Seagate Hornet Travan 40
2935    *
2936    *     NOTES
2937    *     -----
2938    *  o This drive is not OEM'ed or qualified by Sun.
2939    *
2940    * [1] The Travan uses 0 or the "default" density code.
2941    * [2] The Travan has only one speed (if the driver ever cares).
2942    * [3] max_rretries and max_wretries are driver anachronisms.
2943    */
2944   {                           /* Structure member Description                 */
2945                               /* ---------------- -----------                 */
2946     "Seagate Hornet Travan 40",
2947                               /* .name            Display ("pretty") name     */
2948     16,                       /* .length          Length of next item...      */
2949     "Seagate STT3401A",       /* .vid             Vendor-product ID string    */
2950     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2951     512,                      /* .bsize           Block size (0 = variable)   */
2952                               /* .options         Drive option flags:         */
2953     ST_QIC              |     /*    00002           QIC tape device           */
2954     ST_BSF              |     /*    00008           Supports back SPACE file  */
2955     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2956                               /*    -----                                     */
2957                               /*    0040A                                     */
2958     400,                      /* .max_rretries    [Note 3]                    */
2959     400,                      /* .max_wretries    [Note 3]                    */
2960     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2961     MT_DENSITY1,              /* .default_density (.densities[x])             */
2962     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2963   }
2964 
2965 	/* END CSTYLED */
2966 
2967 };
2968 
2969 
2970 const int st_ndrivetypes = (sizeof (st_drivetypes)/sizeof (st_drivetypes[0]));
2971