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 (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 
22 /*
23  * Copyright 2007 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 4
1107    * [1] This drive supports two densites at this time.
1108    *     In reality the type of media GEN 3 or GEN 4 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 4",       /* .name            Display ("pretty") name     */
1117     17,                       /* .length          Length of next item...      */
1118     "HP      Ultrium 4*",     /* .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         |     /*  0000001           Supports variable length  */
1123     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
1124     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
1125     ST_KNOWS_EOD        |     /*  0000200           Recognizes end-of-data    */
1126     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
1127     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
1128     ST_MODE_SEL_COMP    |     /*  0010000           Mode select compression   */
1129     ST_WORMABLE,              /*  1000000           Drive is WORM capable     */
1130                               /*  -------                                     */
1131                               /*  1018619                                     */
1132     -1,                       /* .max_rretries    [Note 3]                    */
1133     -1,                       /* .max_wretries    [Note 3]                    */
1134     {0x44, 0x44, 0x46, 0x46}, /* .densities       Density codes [Note 1]      */
1135     MT_DENSITY4,              /* .default_density (.densities[x])             */
1136     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1137     MINUTES(1),               /* .non_motion_timeout                          */
1138     MINUTES(20),              /* .io_timeout                                  */
1139     MINUTES(10),              /* .rewind_timeout                              */
1140     MINUTES(20),              /* .space_timeout                               */
1141     MINUTES(10),              /* .load_timeout                                */
1142     MINUTES(10),              /* .unload_timeout                              */
1143     MINUTES(300)              /* .erase_timeout      Five Hours               */
1144   },
1145 
1146   /*
1147    * HP Ultrium LTO Gen 3
1148    * [1] This drive supports two densites at this time.
1149    *     In reality the type of media GEN 2 or GEN 3 selects the density.
1150    *     ST_MODE_SEL_COMP controls compression.
1151    * [2] The Ultrium LTO has one speed.
1152    * [3] max_rretries and max_wretries are not used but kept for
1153    *     backward compatibility.
1154    */
1155   {                           /* Structure member Description                 */
1156                               /* ---------------- -----------                 */
1157     "HP Ultrium LTO 3",       /* .name            Display ("pretty") name     */
1158     17,                       /* .length          Length of next item...      */
1159     "HP      Ultrium 3*",     /* .vid             handles SCSI or FC          */
1160     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1161     0,                        /* .bsize           Block size (0 = variable)   */
1162                               /* .options         Drive option flags:         */
1163     ST_VARIABLE         |     /*  0000001           Supports variable length  */
1164     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
1165     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
1166     ST_KNOWS_EOD        |     /*  0000200           Recognizes end-of-data    */
1167     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
1168     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
1169     ST_MODE_SEL_COMP    |     /*  0010000           Mode select compression   */
1170     ST_WORMABLE,              /*  1000000           Drive is WORM capable     */
1171                               /*  -------                                     */
1172                               /*  1018619                                     */
1173     -1,                       /* .max_rretries    [Note 3]                    */
1174     -1,                       /* .max_wretries    [Note 3]                    */
1175     {0x42, 0x42, 0x44, 0x44}, /* .densities       Density codes [Note 1]      */
1176     MT_DENSITY4,              /* .default_density (.densities[x])             */
1177     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1178     MINUTES(1),               /* .non_motion_timeout                          */
1179     MINUTES(20),              /* .io_timeout                                  */
1180     MINUTES(10),              /* .rewind_timeout                              */
1181     MINUTES(20),              /* .space_timeout                               */
1182     MINUTES(10),              /* .load_timeout                                */
1183     MINUTES(10),              /* .unload_timeout                              */
1184     MINUTES(300)              /* .erase_timeout      Five Hours               */
1185   },
1186 
1187   /*
1188    * HP Ultrium LTO Gen 2
1189    * [1] This drive supports two densites at this time.
1190    *     In reality the type of media GEN 1 or GEN 2 selects the density.
1191    *     ST_MODE_SEL_COMP controls compression.
1192    * [2] The Ultrium LTO has one speed.
1193    * [3] max_rretries and max_wretries are not used but kept for
1194    *     backward compatibility.
1195    */
1196   {                           /* Structure member Description                 */
1197                               /* ---------------- -----------                 */
1198     "HP Ultrium LTO 2",       /* .name            Display ("pretty") name     */
1199     17,                       /* .length          Length of next item...      */
1200     "HP      Ultrium 2*",     /* .vid             handles SCSI or FC          */
1201     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1202     0,                        /* .bsize           Block size (0 = variable)   */
1203                               /* .options         Drive option flags:         */
1204     ST_VARIABLE         |     /*    00001           Supports variable length  */
1205     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1206     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1207     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1208     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1209     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1210     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1211                               /*    -----                                     */
1212                               /*    18619                                     */
1213     -1,                       /* .max_rretries    [Note 3]                    */
1214     -1,                       /* .max_wretries    [Note 3]                    */
1215     {0x40, 0x40, 0x42, 0x42}, /* .densities       Density codes [Note 1]      */
1216     MT_DENSITY4,              /* .default_density (.densities[x])             */
1217     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1218     MINUTES(1),               /* .non_motion_timeout                          */
1219     MINUTES(5),               /* .io_timeout Four                             */
1220     MINUTES(10),              /* .rewind_timeout                              */
1221     MINUTES(20),              /* .space_timeout                               */
1222     MINUTES(10),              /* .load_timeout                                */
1223     MINUTES(10),              /* .unload_timeout                              */
1224     MINUTES(300)              /* .erase_timeout      Five Hours               */
1225   },
1226 
1227   /*
1228    * HP Ultrium LTO
1229    * [1] This drive supports only one density at this time.
1230          ST_MODE_SEL_COMP controls compression.
1231    * [2] The Ultrium LTO has one speed.
1232    * [3] max_rretries and max_wretries are not used but kept for
1233    *     backward compatibility.
1234    */
1235   {                           /* Structure member Description                 */
1236                               /* ---------------- -----------                 */
1237     "HP Ultrium LTO",         /* .name            Display ("pretty") name     */
1238     17,                       /* .length          Length of next item...      */
1239     "HP      Ultrium 1*",     /* .vid             handles SCSI and FC         */
1240     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1241     0,                        /* .bsize           Block size (0 = variable)   */
1242                               /* .options         Drive option flags:         */
1243     ST_VARIABLE         |     /*    00001           Supports variable length  */
1244     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1245     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1246     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1247     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1248     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1249     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1250                               /*    -----                                     */
1251                               /*    18619                                     */
1252     -1,                       /* .max_rretries    [Note 3]                    */
1253     -1,                       /* .max_wretries    [Note 3]                    */
1254     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
1255     MT_DENSITY4,              /* .default_density (.densities[x])             */
1256     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1257     MINUTES(1),               /* .non_motion_timeout                          */
1258     MINUTES(5),               /* .io_timeout Four                             */
1259     MINUTES(10),              /* .rewind_timeout                              */
1260     MINUTES(20),              /* .space_timeout                               */
1261     MINUTES(10),              /* .load_timeout                                */
1262     MINUTES(10),              /* .unload_timeout                              */
1263     MINUTES(300)              /* .erase_timeout      Five Hours               */
1264   },
1265 
1266   /*
1267    * Kennedy 1/2" reel
1268    *
1269    *     NOTES
1270    *     -----
1271    *  o This is an unsupported drive.
1272    *
1273    *  o This entry uses a shortened Vendor-product ID string for the
1274    *    INQUIRY match.
1275    *
1276    * [1] The density code entry requires four values, even if there are less
1277    *     than four values for the drive.
1278    * [2] The Kennedy 1/2" reel has only one speed (if the driver ever cares).
1279    * [3] max_rretries and max_wretries are driver anachronisms.
1280    */
1281   {                           /* Structure member Description                 */
1282                               /* ---------------- -----------                 */
1283     "Kennedy 1/2\" Reel",     /* .name            Display ("pretty") name     */
1284     4,                        /* .length          Length of next item...      */
1285     "KENN***",                /* .vid             Vendor-product ID string    */
1286     ST_TYPE_KENNEDY,          /* .type            Numeric type (cf. mtio.h)   */
1287     0,                        /* .bsize           Block size (0 = variable)   */
1288                               /* .options         Drive option flags:         */
1289     ST_VARIABLE |             /*    00001           Supports variable length  */
1290     ST_REEL     |             /*    00004           1/2-inch reel tape device */
1291     ST_BSF      |             /*    00008           Supports SPACE block fwd  */
1292     ST_BSR      |             /*    00010           Supports SPACE block rev  */
1293     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
1294                               /*    -----                                     */
1295                               /*    0041D                                     */
1296     400,                      /* .max_rretries    [Note 3]                    */
1297     400,                      /* .max_wretries    [Note 3]                    */
1298     {0x01, 0x02, 0x03, 0x03}, /* .densities       Density codes [Note 1]      */
1299     MT_DENSITY2,              /* .default_density (.densities[x])             */
1300     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1301   },
1302 
1303   /*
1304    * M4 Data Systems 9303 transport with 9700 512k i/f
1305    *
1306    *     NOTES
1307    *     -----
1308    *  o  The M4 Data 9303 is in non-buffered mode because it doesn't
1309    *     flush the buffer at end of tape writes. If you don't care
1310    *     about end of tape conditions (e.g., you use dump(8) which
1311    *     cannot handle end-of-tape anyhow), take out the ST_NOBUF.
1312    *
1313    *  o This is an unsupported drive.
1314    *
1315    * [1] The density code entry requires four values, even if there are less
1316    *     than four values for the drive.
1317    * [2] The M4 Data has only one speed (if the driver ever cares).
1318    * [3] max_rretries and max_wretries are driver anachronisms.
1319    */
1320   {                           /* Structure member Description                 */
1321                               /* ---------------- -----------                 */
1322     "M4-Data 1/2\" Reel",     /* .name            Display ("pretty") name     */
1323     19,                       /* .length          Length of next item...      */
1324     "M4 DATA 123107 SCSI",    /* .vid             Vendor-product ID string    */
1325     ST_TYPE_REEL,             /* .type            Numeric type (cf. mtio.h)   */
1326     0,                        /* .bsize           Block size (0 = variable)   */
1327                               /* .options         Drive option flags:         */
1328     ST_VARIABLE  |            /*    00001           Supports variable length  */
1329     ST_REEL      |            /*    00004           1/2-inch reel tape device */
1330     ST_BSF       |            /*    00008           Supports SPACE block fwd  */
1331     ST_BSR       |            /*    00010           Supports SPACE block rev  */
1332     ST_NOBUF     |            /*    00080           Don't use buffered mode.  */
1333     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
1334                               /*    -----                                     */
1335                               /*    0049D                                     */
1336     500,                      /* .max_rretries    [Note 3]                    */
1337     500,                      /* .max_wretries    [Note 3]                    */
1338     {0x01, 0x02, 0x06, 0x06}, /* .densities       Density codes [Note 1]      */
1339     MT_DENSITY2,              /* .default_density (.densities[x])             */
1340     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1341   },
1342 
1343   /*
1344    * Quantum VS 160
1345    *
1346    * Notes
1347    * [1] The VS160 reads several formats which the drive autodetects.
1348    *     It can write only in VS160 format so all densities set ro 0x50.
1349    * [2] The speed field is not used and the VS160's speed is not setable.
1350    * [3] Retry counts are not used any more and set to -1.
1351    */
1352   {                           /* Structure member Description                 */
1353                               /* ---------------- -----------                 */
1354     "Quantum VS160",          /* .name            Display ("pretty") name     */
1355     17,                       /* .length          Length of next item...      */
1356     "QUANTUM DLT VS160",      /* .vid             Vendor-product ID string    */
1357     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1358     0,                        /* .bsize           Block size (0 = variable)   */
1359                               /* .options         Drive option flags:         */
1360     ST_VARIABLE         |     /*    00001         Supports variable length    */
1361     ST_BSF              |     /*    00008         Supports SPACE block fwd    */
1362     ST_BSR              |     /*    00010         Supports SPACE block rev    */
1363     ST_AUTODEN_OVERRIDE |     /*    00040         Has only one density        */
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                               /* 00018659                                     */
1370     -1,                       /* .max_rretries    [Note 3]                    */
1371     -1,                       /* .max_wretries    [Note 3]                    */
1372     {0x50, 0x50, 0x50, 0x50}, /* .densities       [Note 1]                    */
1373     MT_DENSITY4,              /* .default_density (.densities[x])             */
1374     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1375     MINUTES(2),               /* .non_motion_timeout Nothing special          */
1376     MINUTES(15),              /* .io_timeout         First write to new tape  */
1377     MINUTES(15),              /* .rewind_timeout     15 minutes               */
1378     MINUTES(15),              /* .space_timeout      15 minutes               */
1379     MINUTES(15),              /* .load_timeout       read catalog             */
1380     MINUTES(15),              /* .unload_timeout     write catalog + unthread */
1381     MINUTES(180)              /* .erase_timeout      3 hours                  */
1382   },
1383   /*
1384    * Quantum Super DLT600
1385    *
1386    *    NOTES
1387    *    -----
1388    *
1389    * [1] The Super DLT 600 supports many tape formats, Most are media selected.
1390    *     Previous DLT drives had density codes for compress and non-compress,
1391          This drive uses mode select to control compression.
1392    * [2] The Super DLT has only one speed (if the driver ever cares).
1393    * [3] max_rretries and max_wretries are driver anachronisms.
1394    */
1395   {                           /* Structure member Description                 */
1396                               /* ---------------- -----------                 */
1397     "Quantum Super DLT 600",  /* .name            Display ("pretty") name     */
1398     15,                       /* .length          Length of next item...      */
1399     "QUANTUM SDLT600",        /* .vid             Vendor-product ID string    */
1400     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1401     0,                        /* .bsize           Block size (0 = variable)   */
1402                               /* .options         Drive option flags:         */
1403     ST_VARIABLE         |     /*  0000001         Supports variable length    */
1404     ST_BSF              |     /*  0000008         Supports SPACE block fwd    */
1405     ST_BSR              |     /*  0000010         Supports SPACE block rev    */
1406     ST_KNOWS_EOD        |     /*  0000200         Recognizes end-of-data      */
1407     ST_UNLOADABLE       |     /*  0000400         Driver can be unloaded      */
1408     ST_NO_RECSIZE_LIMIT |     /*  0008000         Supports blocks > 64KB      */
1409     ST_MODE_SEL_COMP    |     /*  0010000         Uses Mode select Compress   */
1410     ST_WORMABLE,              /*  1000000         Is capable of WORM          */
1411                               /*  -------                                     */
1412                               /*  1018619                                     */
1413     -1,                       /* .max_rretries    [Note 3]                    */
1414     -1,                       /* .max_wretries    [Note 3]                    */
1415     {0x4a, 0x4a, 0x4a, 0x4a}, /* .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 Nothing special          */
1419     MINUTES(60),              /* .io_timeout Four    One Hour                 */
1420     MINUTES(4),               /* .rewind_timeout     Four Minutes             */
1421     MINUTES(360),             /* .space_timeout      6 Hour if Directory bad  */
1422     MINUTES(16),              /* .load_timeout       Nothing Special          */
1423     MINUTES(16),              /* .unload_timeout     Nothing Special          */
1424     MINUTES(360)              /* .erase_timeout      Six hours                */
1425   },
1426 
1427  /*
1428    * Quantum Super DLT320
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 320",  /* .name            Display ("pretty") name     */
1443     15,                       /* .length          Length of next item...      */
1444     "QUANTUM SDLT320",        /* .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     {0x90, 0x91, 0x92, 0x93}, /* .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 Super DLT
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 Super DLT implements many tape formats, but the st driver supports
1479    *     only the four highest densities.
1480    * [2] The Super DLT 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 Super DLT 220",  /* .name            Display ("pretty") name     */
1486     17,                       /* .length          Length of next item...      */
1487     "QUANTUM SuperDLT1",      /* .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_NO_RECSIZE_LIMIT,      /*    08000         Supports blocks > 64KB      */
1497                               /* --------                                     */
1498                               /* 00008619                                     */
1499     -1,                       /* .max_rretries    [Note 3]                    */
1500     -1,                       /* .max_wretries    [Note 3]                    */
1501     {0x88, 0x89, 0x90, 0x91}, /* .densities       [Note 1]                    */
1502     MT_DENSITY4,              /* .default_density (.densities[x])             */
1503     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1504     0,                        /* .non_motion_timeout Default 2 minutes        */
1505     MINUTES(60),              /* .io_timeout Four    Now 1 hour               */
1506     MINUTES(4),               /* .rewind_timeout     Four Minutes             */
1507     MINUTES(360),             /* .space_timeout      Six Hours                */
1508     MINUTES(16),              /* .load_timeout       Sixteen Minutes          */
1509     MINUTES(16),              /* .unload_timeout     Sixteen Minutes          */
1510     MINUTES(360)              /* .erase_timeout      Six hours                */
1511   },
1512 
1513   /*
1514    * Quantum DLT8000
1515    *
1516    *    NOTES
1517    *    -----
1518    *  o  There is not going to be a SUN version of this drive. It will
1519    *     be released as QUANTUM only.
1520    *
1521    * [1] The DLT8000 implements many tape formats, but the st driver supports
1522    *     only the four highest densities.
1523    * [2] The DLT8000 has only one speed (if the driver ever cares).
1524    * [3] max_rretries and max_wretries are driver anachronisms.
1525    */
1526   {                           /* Structure member Description                 */
1527                               /* ---------------- -----------                 */
1528     "Quantum DLT8000",        /* .name            Display ("pretty") name     */
1529     15,                       /* .length          Length of next item...      */
1530     "QUANTUM DLT8000",        /* .vid             Vendor-product ID string    */
1531     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1532     0,                        /* .bsize           Block size (0 = variable)   */
1533                               /* .options         Drive option flags:         */
1534     ST_VARIABLE         |     /*    00001           Supports variable length  */
1535     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1536     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1537     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1538     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1539     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
1540     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1541     ST_CLN_TYPE_3,            /* 40000000                                     */
1542                               /*    -----                                     */
1543                               /* 40009619                                     */
1544     400,                      /* .max_rretries    [Note 3]                    */
1545     400,                      /* .max_wretries    [Note 3]                    */
1546     {0x84, 0x85, 0x88, 0x89}, /* .densities       [Note 1]                    */
1547     MT_DENSITY4,              /* .default_density (.densities[x])             */
1548     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1549     0,                        /* .non_motion_timeout Nothing special          */
1550     0,                        /* .io_timeout Four    Nothing Special          */
1551     0,                        /* .rewind_timeout     Nothing Special          */
1552     0,                        /* .space_timeout      Nothing Special          */
1553     0,                        /* .load_timeout       Nothing Special          */
1554     0,                        /* .unload_timeout     Nothing Special          */
1555     MINUTES(360)              /* .erase_timeout      Six hours                */
1556   },
1557 
1558   /*
1559    * Quantum DLT7000
1560    *
1561    *     NOTES
1562    *     -----
1563    * [1] The DLT7000 implements many tape formats, but the st driver supports
1564    *     only the four highest densities.
1565    * [2] The DLT7000 has only one speed (if the driver ever cares).
1566    * [3] max_rretries and max_wretries are driver anachronisms.
1567    * [4] Data is buffered in the driver and pre-acked to the application. This
1568    *      is only supported in Solaris 2.5.1.
1569    */
1570   {                           /* Structure member Description                 */
1571                               /* ---------------- -----------                 */
1572     "Quantum DLT7000",        /* .name            Display ("pretty") name     */
1573     15,                       /* .length          Length of next item...      */
1574     "QUANTUM DLT7000",        /* .vid             Vendor-product ID string    */
1575     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1576     0,                        /* .bsize           Block size (0 = variable)   */
1577                               /* .options         Drive option flags:         */
1578     ST_VARIABLE         |     /*    00001           Supports variable length  */
1579     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1580     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1581     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1582     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1583     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
1584     ST_BUFFERED_WRITES  |     /*    04000           [Note 4]                  */
1585     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1586     ST_CLN_TYPE_3,            /* 40000000         Asks to be cleaned this way */
1587                               /* --------                                     */
1588                               /* 4000D619                                     */
1589     400,                      /* .max_rretries    [Note 3]                    */
1590     400,                      /* .max_wretries    [Note 3]                    */
1591     {0x82, 0x83, 0x84, 0x85}, /* .densities       Density codes [Note 1]      */
1592     MT_DENSITY3,              /* .default_density (.densities[x])             */
1593     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1594     0,                        /* .non_motion_timeout Nothing special          */
1595     0,                        /* .io_timeout Four    Nothing Special          */
1596     0,                        /* .rewind_timeout     Nothing Special          */
1597     0,                        /* .space_timeout      Nothing Special          */
1598     0,                        /* .load_timeout       Nothing Special          */
1599     0,                        /* .unload_timeout     Nothing Special          */
1600     MINUTES(360)              /* .erase_timeout      Six hours                */
1601   },
1602 
1603   /*
1604    * Quantum DLT4000
1605    *
1606    *     NOTES
1607    *     -----
1608    * [1] The DLT4000 implements many tape formats, but the st driver supports
1609    *     only the four highest densities.
1610    * [2] The DLT4000 has only one speed (if the driver ever cares).
1611    * [3] max_rretries and max_wretries are driver anachronisms.
1612    * [4] Data is buffered in the driver and pre-acked to the application. This
1613    *     is only supported in 2.5.1.
1614    */
1615   {                           /* Structure member Description                 */
1616                               /* ---------------- -----------                 */
1617     "Quantum DLT4000",        /* .name            Display ("pretty") name     */
1618     15,                       /* .length          Length of next item...      */
1619     "Quantum DLT4000",        /* .vid             Vendor-product ID string    */
1620     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1621     0,                        /* .bsize           Block size (0 = variable)   */
1622                               /* .options         Drive option flags:         */
1623     ST_VARIABLE        |      /*    00001           Supports variable length  */
1624     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
1625     ST_BSR             |      /*    00010           Supports SPACE block rev  */
1626     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
1627     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
1628     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
1629     ST_BUFFERED_WRITES |      /*    04000           [Note 4]                  */
1630     ST_NO_RECSIZE_LIMIT|      /*    08000           Supports blocks > 64KB    */
1631     ST_CLN_TYPE_3,            /* 40000000         Asks to be cleaned this way */
1632                               /* --------                                     */
1633                               /* 4000D619                                     */
1634     400,                      /* .max_rretries    [Note 3]                    */
1635     400,                      /* .max_wretries    [Note 3]                    */
1636     {0x80, 0x81, 0x82, 0x83}, /* .densities       Density codes [Note 1]      */
1637     MT_DENSITY3,              /* .default_density (.densities[x])             */
1638     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
1639     0,                        /* .non_motion_timeout Nothing special          */
1640     0,                        /* .io_timeout Four    Nothing Special          */
1641     0,                        /* .rewind_timeout     Nothing Special          */
1642     0,                        /* .space_timeout      Nothing Special          */
1643     0,                        /* .load_timeout       Nothing Special          */
1644     0,                        /* .unload_timeout     Nothing Special          */
1645     MINUTES(360)              /* .erase_timeout      Six hours                */
1646   },
1647 
1648   /*
1649    * [1] The DLT-S4 has three densites at this time,
1650    *     0x49 for SuperDLT tape I, 0x4a for SuperDLT tape II,
1651    *     0x4b for SuperDLT tape III.
1652    *     This drive is configured with ST_KNOWS_MEDIA.
1653    *     That means that it will look at the mediatype from the mode sense
1654    *     to select the density code. The compression will be selected based
1655    *     on the minor node the user opened.
1656    * [2] S4 reports a medium type that is used to select the density.
1657    */
1658   {                           /* Structure member Description                 */
1659                               /* ---------------- -----------                 */
1660     "Quantum DLT-S4",         /* .name            Display ("pretty") name     */
1661     14,                       /* .length          Length of next item...      */
1662     "QUANTUM DLT-S4",         /* .vid             Vendor-product ID string    */
1663     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
1664     0,                        /* .bsize           Block size (0 = variable)   */
1665                               /* .options         Drive option flags:         */
1666     ST_VARIABLE         |     /*  0000001           Supports variable length  */
1667     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
1668     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
1669     ST_KNOWS_EOD        |     /*  0000200           Recognizes end-of-data    */
1670     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
1671     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
1672     ST_MODE_SEL_COMP    |     /*  0010000           [Note 1]                  */
1673     ST_KNOWS_MEDIA      |     /*  0800000         Media detrmines density     */
1674     ST_WORMABLE,              /*  1000000            Supports WORM            */
1675                               /*    -----                                     */
1676                               /*  1818619                                     */
1677     -1,                       /* .max_rretries    Not used any more.          */
1678     -1,                       /* .max_wretries    Not used any more.          */
1679     {0x49, 0x4a, 0x4b, 0x4b}, /* .densities       Density codes [Note 1]      */
1680     MT_DENSITY4,              /* .default_density (.densities[x])             */
1681     {0x86, 0x87, 0x91, 0x91}, /* .mediatype       Media type  [Note 2]        */
1682     0,                        /* .non_motion_time                             */
1683     MINUTES(60),              /* .io_time                                     */
1684     MINUTES(4),               /* .rewind_time                                 */
1685     MINUTES(360),             /* .space_time                                  */
1686     MINUTES(16),              /* .load_time                                   */
1687     MINUTES(16),              /* .unload_time                                 */
1688     MINUTES(360)              /* .erase_time                                  */
1689   },
1690 
1691   /*
1692    * Seagate Hornet NS20 Travan
1693    *
1694    *     NOTES
1695    *     -----
1696    *  o This is an unsupported drive.
1697    *
1698    * [1] The NS20 Travan uses 0 or the "default" density code.
1699    * [2] The NS20 Travan has only one speed (if the driver ever cares).
1700    * [3] max_rretries and max_wretries are driver anachronisms.
1701    */
1702   {                           /* Structure member Description                 */
1703                               /* ---------------- -----------                 */
1704     "Seagate Hornet NS20 Travan",
1705                               /* .name            Display ("pretty") name     */
1706     17,                       /* .length          Length of next item...      */
1707     "Seagate STT20000N",      /* .vid             Vendor-product ID string    */
1708     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
1709     512,                      /* .bsize           Block size (0 = variable)   */
1710                               /* .options         Drive option flags:         */
1711     ST_QIC              |     /*    00002           QIC tape device           */
1712     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1713     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1714     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
1715                               /*    -----                                     */
1716                               /*    0840A                                     */
1717     400,                      /* .max_rretries    [Note 3]                    */
1718     400,                      /* .max_wretries    [Note 3]                    */
1719     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
1720     MT_DENSITY1,              /* .default_density (.densities[x])             */
1721     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1722   },
1723 
1724   /*
1725    * Seagate DAT 72
1726    *
1727    *  [1] Has only one density, Uses Mode Select to enable-disable compression.
1728    *  [2] Only one speed.
1729    */
1730 
1731   {                           /* Structure member Description                 */
1732                               /* ---------------- -----------                 */
1733     "Seagate DAT 72",         /* .name            Display ("pretty") name     */
1734     23,                       /* .length          Length of next item...      */
1735     "SEAGATE DAT    DAT72-00",/* .vid             Vendor-product ID string    */
1736     MT_ISDAT,                 /* .type            Numeric type (cf. mtio.h)   */
1737     0,                        /* .bsize           Block size (0 = variable)   */
1738                               /* .options         Drive option flags:         */
1739     ST_VARIABLE         |     /*    00001           variable length records   */
1740     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1741     ST_BSR              |     /*    00010           Supports backspace record */
1742     ST_KNOWS_EOD        |     /*    00200           Knows EOD when it sees it */
1743     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1744     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1745     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1746                               /*    -----                                     */
1747                               /*    18619                                     */
1748     -1,                       /* .max_rretries    Not used any more.          */
1749     -1,                       /* .max_wretries    Not Used any more.          */
1750     {0x47, 0x47, 0x47, 0x47}, /* .densities       Density codes [Note 1]      */
1751     MT_DENSITY4,              /* .default_density (.densities[x])             */
1752     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1753     0,                        /* .non_motion_timeout                          */
1754     MINUTES(15),              /* .io_timeout                                  */
1755     MINUTES(2),               /* .rewind_timeout                              */
1756     MINUTES(15),              /* .space_timeout                               */
1757     0,                        /* .load_timeout                                */
1758     0,                        /* .unload_timeout                              */
1759     MINUTES(240)              /* .erase_timeout                               */
1760   },
1761 
1762   /*
1763    * Certance Ultrium LTO 3
1764    * [1] This drive supports 3 densites at this time.
1765    *     ST_MODE_SEL_COMP controls compression.
1766    * [2] max_rretries and max_wretries are not used but kept for
1767    *     backward compatibility.
1768    */
1769   {                           /* Structure member Description                 */
1770                               /* ---------------- -----------                 */
1771     "Certance Ultrium 3",     /* .name            Display ("pretty") name     */
1772     17,                       /* .length          Length of next item...      */
1773     "CERTANCEULTRIUM 3",      /* .vid             handles SCSI or FC          */
1774     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1775     0,                        /* .bsize           Block size (0 = variable)   */
1776                               /* .options         Drive option flags:         */
1777     ST_VARIABLE         |     /*    00001           Supports variable length  */
1778     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1779     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1780     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1781     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1782     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1783     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1784                               /*    -----                                     */
1785                               /*    18619                                     */
1786     -1,                       /* .max_rretries    [Note 2]                    */
1787     -1,                       /* .max_wretries    [Note 2]                    */
1788     {0x40, 0x42, 0x44, 0x44}, /* .densities       Density codes [Note 1]      */
1789     MT_DENSITY4,              /* .default_density (.densities[x])             */
1790     {0, 0, 0, 0},             /* .speeds          Speed codes                 */
1791     0,                        /* .non_motion_timeout                          */
1792     MINUTES(60),              /* .io_timeout                                  */
1793     MINUTES(35),              /* .rewind_timeout                              */
1794     MINUTES(60),              /* .space_timeout                               */
1795     MINUTES(35),              /* .load_timeout                                */
1796     MINUTES(35),              /* .unload_timeout                              */
1797     MINUTES(180)              /* .erase_timeout                               */
1798   },
1799 
1800   /*
1801    * Certance Ultrium LTO 2
1802    * [1] This drive supports two densites at this time.
1803    *     0x40 for Ultrium 1 and 0x42 for Ultrium 2.
1804    *     ST_MODE_SEL_COMP controls compression.
1805    * [2] max_rretries and max_wretries are not used but kept for
1806    *     backward compatibility.
1807    */
1808   {                           /* Structure member Description                 */
1809                               /* ---------------- -----------                 */
1810     "Certance Ultrium 2", /* .name            Display ("pretty") name     */
1811     17,                       /* .length          Length of next item...      */
1812     "CERTANCEULTRIUM 2",      /* .vid             handles SCSI or FC          */
1813     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1814     0,                        /* .bsize           Block size (0 = variable)   */
1815                               /* .options         Drive option flags:         */
1816     ST_VARIABLE         |     /*    00001           Supports variable length  */
1817     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1818     ST_BSR              |     /*    00010           Supports SPACE block rev  */
1819     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
1820     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1821     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1822     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1823                               /*    -----                                     */
1824                               /*    18619                                     */
1825     -1,                       /* .max_rretries    [Note 2]                    */
1826     -1,                       /* .max_wretries    [Note 2]                    */
1827     {0x40, 0x40, 0x42, 0x42}, /* .densities       Density codes [Note 1]      */
1828     MT_DENSITY4,              /* .default_density (.densities[x])             */
1829     {0, 0, 0, 0},             /* .speeds          Speed codes                 */
1830     0,                        /* .non_motion_timeout                          */
1831     MINUTES(60),              /* .io_timeout                                  */
1832     MINUTES(35),              /* .rewind_timeout                              */
1833     MINUTES(60),              /* .space_timeout                               */
1834     MINUTES(35),              /* .load_timeout                                */
1835     MINUTES(35),              /* .unload_timeout                              */
1836     MINUTES(180)              /* .erase_timeout                               */
1837   },
1838 
1839   /*
1840    * Seagate Ultrium LTO
1841    *
1842    *  [1] Has only one density, Uses Mode Select to enable-disable compression.
1843    *  [2] Only one speed.
1844    */
1845 
1846   {                           /* Structure member Description                 */
1847                               /* ---------------- -----------                 */
1848     "Seagate Ultrium LTO",    /* .name            Display ("pretty") name     */
1849     23,                       /* .length          Length of next item...      */
1850     "SEAGATE ULTRIUM06242-XX",/* .vid             Vendor-product ID string    */
1851     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
1852     0,                        /* .bsize           Block size (0 = variable)   */
1853                               /* .options         Drive option flags:         */
1854     ST_VARIABLE         |     /*    00001           variable length records   */
1855     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
1856     ST_BSR              |     /*    00010           Supports backspace record */
1857     ST_KNOWS_EOD        |     /*    00200           Knows EOD when it sees it */
1858     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
1859     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
1860     ST_MODE_SEL_COMP,         /*    10000           Mode select compression   */
1861                               /*    -----                                     */
1862                               /*    18619                                     */
1863     -1,                       /* .max_rretries    Not used any more.          */
1864     -1,                       /* .max_wretries    Not Used any more.          */
1865     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
1866     MT_DENSITY4,              /* .default_density (.densities[x])             */
1867     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
1868     0,                        /* .non_motion_timeout                          */
1869     MINUTES(10),              /* .io_timeout                                  */
1870     MINUTES(15),              /* .rewind_timeout                              */
1871     MINUTES(120),             /* .space_timeout                               */
1872     MINUTES(5),               /* .load_timeout                                */
1873     MINUTES(2),               /* .unload_timeout                              */
1874     MINUTES(120)              /* .erase_timeout                               */
1875   },
1876 
1877   /*
1878    * SONY 4mm DAT
1879    *
1880    *     NOTES
1881    *     -----
1882    *  o This is an unsupported drive.
1883    *
1884    *  o This entry uses a shortened Vendor-product ID string for the
1885    *    INQUIRY match.
1886    *
1887    * [1] The SDT-5000 uses 0 or the "default" density code.
1888    * [2] The SDT-5000 has only one speed (if the driver ever cares).
1889    * [3] max_rretries and max_wretries are driver anachronisms.
1890    */
1891   {                           /* Structure member Description                 */
1892                               /* ---------------- -----------                 */
1893     "SONY 4mm DAT",           /* .name            Display ("pretty") name     */
1894     12,                       /* .length          Length of next item...      */
1895     "SONY    SDT-****",       /* .vid             Vendor-product ID string    */
1896     ST_TYPE_DAT,              /* .type            Numeric type (cf. mtio.h)   */
1897     0,                        /* .bsize           Block size (0 = variable)   */
1898                               /* .options         Drive option flags:         */
1899     ST_VARIABLE   |           /*    00001           Supports variable length  */
1900     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
1901     ST_BSR        |           /*    00010           Supports SPACE block rev  */
1902     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
1903     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
1904                               /*    -----                                     */
1905                               /*    00439                                     */
1906     400,                      /* .max_rretries    [Note 3]                    */
1907     400,                      /* .max_wretries    [Note 3]                    */
1908     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
1909     MT_DENSITY2,              /* .default_density (.densities[x])             */
1910     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
1911   },
1912 
1913   /*
1914    * Sun StorageTek T10000A tape drive.
1915    *
1916    *     NOTES
1917    *     -----
1918    *  o  The T10000A has special needs - support for SCSI LOCATE and
1919    *     READ POSITION commands - so we must be sure to place this
1920    *     entry before the one for ST_TYPE_STC3490 (generic STK
1921    *     half-inch cartridge drives).
1922    * [1] Compression on the T10000A is controlled
1923    *     via the Device Configuration mode page.
1924    * [2] The T10000A has only one writable density, 0x4A.
1925    * [3] The T10000A has only one speed (if the driver ever cares).
1926    * [4] max_rretries and max_wretries are driver anachronisms.
1927    */
1928   {                           /* Structure member    Description              */
1929                               /* ----------------    -----------              */
1930     "Sun StorageTek T10000A", /* .name               Display ("pretty") name  */
1931     15,                       /* .length             Length of next item...   */
1932     "STK     T10000A",        /* .vid                Vendor-product ID string */
1933     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
1934     0,                        /* .bsize              Block size (0 = variable)*/
1935                               /* .options            Drive option flags:      */
1936     ST_VARIABLE         |     /*  0000001            Supports variable length */
1937     ST_BSF              |     /*  0000008            Supports SPACE block fwd */
1938     ST_BSR              |     /*  0000010            Supports SPACE block rev */
1939     ST_AUTODEN_OVERRIDE |     /*  0000040            Autodensity override flag*/
1940     ST_KNOWS_EOD        |     /*  0000200            Recognizes end-of-data   */
1941     ST_UNLOADABLE       |     /*  0000400            Driver can be unloaded   */
1942     ST_NO_RECSIZE_LIMIT |     /*  0008000            Supports blocks > 64KB   */
1943     ST_MODE_SEL_COMP    |     /*  0010000            [Note 1]                 */
1944     ST_WORMABLE,              /*  1000000            Supports WORM            */
1945                               /*  -------                                     */
1946                               /*  1018659                                     */
1947     -1,                       /* .max_rretries       [Note 4]                 */
1948     -1,                       /* .max_wretries       [Note 4]                 */
1949     {0x4A,0x4A,0x4A,0x4A},    /* .densities          Density codes [Note 2]   */
1950     MT_DENSITY4,              /* .default_density    (.densities[x])          */
1951     {0,0,0,0},                /* .speeds             Speed codes [Note 3]     */
1952     0,                        /* .non_motion_timeout Nothing Special          */
1953     MINUTES(5),               /* .io_timeout Five    Five Minutes             */
1954     0,                        /* .rewind_timeout     Nothing Special          */
1955     0,                        /* .space_timeout      Nothing Special          */
1956     0,                        /* .load_timeout       Nothing Special          */
1957     0,                        /* .unload_timeout     Nothing Special          */
1958     MINUTES(180)              /* .erase_timeout      Three Hours              */
1959   },
1960 
1961   /*
1962    * STK 9840C cartridge drive.
1963    *
1964    *     NOTES
1965    *     -----
1966    *  o  The 9840C has special needs - support for SCSI LOCATE and
1967    *     READ POSITION commands - so we must be sure to place this
1968    *     entry before the one for ST_TYPE_STC3490 (generic STK
1969    *     half-inch cartridge drives).
1970    * [1] Compression on the 9840C is controlled
1971    *     via the Device Configuration mode page.
1972    * [2] The 9840C has only one writable density, 0x45. I can read tapes writen
1973    *     with 9840 and 9840B writen with there density code 0x42.
1974    * [3] The 9840C has only one speed (if the driver ever cares).
1975    * [4] max_rretries and max_wretries are driver anachronisms.
1976    */
1977   {                           /* Structure member    Description              */
1978                               /* ----------------    -----------              */
1979     "StorageTek 9840C",       /* .name               Display ("pretty") name  */
1980     14,                       /* .length             Length of next item...   */
1981     "STK     T9840C",         /* .vid                Vendor-product ID string */
1982     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
1983     0,                        /* .bsize              Block size (0 = variable)*/
1984                               /* .options            Drive option flags:      */
1985     ST_VARIABLE         |     /*  0000001            Supports variable length */
1986     ST_BSF              |     /*  0000008            Supports SPACE block fwd */
1987     ST_BSR              |     /*  0000010            Supports SPACE block rev */
1988     ST_KNOWS_EOD        |     /*  0000200            Recognizes end-of-data   */
1989     ST_UNLOADABLE       |     /*  0000400            Driver can be unloaded   */
1990     ST_NO_RECSIZE_LIMIT |     /*  0008000            Supports blocks > 64KB   */
1991     ST_MODE_SEL_COMP    |     /*  0010000            [Note 1]                 */
1992     ST_WORMABLE,              /*  1000000            Supports WORM            */
1993                               /*  -------                                     */
1994                               /*  1018619                                     */
1995     -1,                       /* .max_rretries       [Note 4]                 */
1996     -1,                       /* .max_wretries       [Note 4]                 */
1997     {0x45,0x45,0x45,0x45},    /* .densities          Density codes [Note 2]   */
1998     MT_DENSITY1,              /* .default_density    (.densities[x])          */
1999     {0,0,0,0},                /* .speeds             Speed codes [Note 3]     */
2000     0,                        /* .non_motion_timeout Nothing Special          */
2001     MINUTES(5),               /* .io_timeout Five    Five Minutes             */
2002     0,                        /* .rewind_timeout     Nothing Special          */
2003     0,                        /* .space_timeout      Nothing Special          */
2004     0,                        /* .load_timeout       Nothing Special          */
2005     0,                        /* .unload_timeout     Nothing Special          */
2006     MINUTES(70)               /* .erase_timeout      One Hour and ten Minutes */
2007   },
2008 
2009   /*
2010    * STK 9840B cartridge drive.
2011    *
2012    *     NOTES
2013    *     -----
2014    *  o  The 9840B has special needs - support for SCSI LOCATE and
2015    *     READ POSITION commands - so we must be sure to place this
2016    *     entry before the one for ST_TYPE_STC3490 (generic STK
2017    *     half-inch cartridge drives).
2018    * [1] Compression on the 9840B is controlled
2019    *     via the Device Configuration mode page.
2020    * [2] The 9840B has only one density, 0x42 (or 0 for "default").
2021    * [3] The 9840B has only one speed (if the driver ever cares).
2022    * [4] max_rretries and max_wretries are driver anachronisms.
2023    */
2024   {                           /* Structure member    Description              */
2025                               /* ----------------    -----------              */
2026     "StorageTek 9840B",       /* .name               Display ("pretty") name  */
2027     14,                       /* .length             Length of next item...   */
2028     "STK     T9840B",         /* .vid                Vendor-product ID string */
2029     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
2030     0,                        /* .bsize              Block size (0 = variable)*/
2031                               /* .options            Drive option flags:      */
2032     ST_VARIABLE         |     /*  0000001            Supports variable length */
2033     ST_BSF              |     /*  0000008            Supports SPACE block fwd */
2034     ST_BSR              |     /*  0000010            Supports SPACE block rev */
2035     ST_KNOWS_EOD        |     /*  0000200            Recognizes end-of-data   */
2036     ST_UNLOADABLE       |     /*  0000400            Driver can be unloaded   */
2037     ST_NO_RECSIZE_LIMIT |     /*  0008000            Supports blocks > 64KB   */
2038     ST_MODE_SEL_COMP    |     /*  0010000            [Note 1]                 */
2039     ST_WORMABLE,              /*  1000000            Supports WORM            */
2040                               /*  -------                                     */
2041                               /*  1018619                                     */
2042     -1,                       /* .max_rretries       [Note 4]                 */
2043     -1,                       /* .max_wretries       [Note 4]                 */
2044     {0x42,0x42,0x42,0x42},    /* .densities          Density codes [Note 2]   */
2045     MT_DENSITY1,              /* .default_density    (.densities[x])          */
2046     {0,0,0,0},                /* .speeds             Speed codes [Note 3]     */
2047     0,                        /* .non_motion_timeout Nothing Special          */
2048     MINUTES(5),               /* .io_timeout Five    Five Minutes             */
2049     0,                        /* .rewind_timeout     Nothing Special          */
2050     0,                        /* .space_timeout      Nothing Special          */
2051     0,                        /* .load_timeout       Nothing Special          */
2052     0,                        /* .unload_timeout     Nothing Special          */
2053     MINUTES(70)               /* .erase_timeout      One Hour and ten Minutes */
2054   },
2055 
2056   /*
2057    * STK 9940B cartridge drive.
2058    *
2059    *     NOTES
2060    *     -----
2061    * [1] Compression on the 9940 is controlled
2062    *     via the Device Configuration mode page.
2063    * [2] The 9940 has only one density, 0x44.
2064    * [3] The 9940 has only one speed (if the driver ever cares).
2065    * [4] max_rretries and max_wretries are driver not used.
2066    */
2067   {                           /* Structure member    Description               */
2068                               /* ----------------    -----------               */
2069     "StorageTek 9940B",       /* .name               Display ("pretty") name   */
2070     14,                       /* .length             Length of next item...    */
2071     "STK     T9940B",         /* .vid                Vendor-product ID string  */
2072     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h) */
2073     0,                        /* .bsize              Block size (0 = variable) */
2074                               /* .options            Drive option flags:       */
2075     ST_VARIABLE         |     /*  0000001            Supports variable length  */
2076     ST_BSF              |     /*  0000008            Supports SPACE block fwd  */
2077     ST_BSR              |     /*  0000010            Supports SPACE block rev  */
2078     ST_AUTODEN_OVERRIDE |     /*  0000040            Autodensity override flag */
2079     ST_KNOWS_EOD        |     /*  0000200            Recognizes end-of-data    */
2080     ST_UNLOADABLE       |     /*  0000400            Driver can be unloaded    */
2081     ST_NO_RECSIZE_LIMIT |     /*  0008000            Supports blocks > 64KB    */
2082     ST_MODE_SEL_COMP    |     /*  0010000            [Note 1]                  */
2083     ST_WORMABLE,              /*  1000000            Supports WORM             */
2084                               /*  -------                                      */
2085                               /*  1018659                                      */
2086     -1,                       /* .max_rretries       [Note 4]                  */
2087     -1,                       /* .max_wretries       [Note 4]                  */
2088     {0x44,0x44,0x44,0x44},    /* .densities          Density codes [Note 2]    */
2089     MT_DENSITY1,              /* .default_density    (.densities[x])           */
2090     {0, 0, 0, 0},             /* .speeds             Speed codes [Note 3]      */
2091     0,                        /* .non_motion_timeout Nothing Special           */
2092     MINUTES(5),               /* .io_timeout         Five minutes              */
2093     0,                        /* .rewind_timeout     Nothing Special           */
2094     MINUTES(180),             /* .space_timeout      Three Hours     3 x 9840  */
2095     0,                        /* .load_timeout       Nothing Special           */
2096     0,                        /* .unload_timeout     Nothing Special           */
2097     MINUTES(210)              /* .erase_timeout      Three and a half hours    */
2098   },
2099 
2100   /*
2101    * STK 9940 cartridge drive.
2102    *
2103    *     NOTES
2104    *     -----
2105    * [1] Compression on the 9940 is controlled
2106    *     via the Device Configuration mode page.
2107    * [2] The 9940 has only one density, 0x43.
2108    * [3] The 9940 has only one speed (if the driver ever cares).
2109    * [4] max_rretries and max_wretries are driver not used.
2110    */
2111   {                           /* Structure member    Description              */
2112                               /* ----------------    -----------              */
2113     "StorageTek 9940",        /* .name               Display ("pretty") name  */
2114     14,                       /* .length             Length of next item...   */
2115     "STK     T9940A",         /* .vid                Vendor-product ID string */
2116     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
2117     0,                        /* .bsize              Block size (0 = variable)*/
2118                               /* .options            Drive option flags:      */
2119     ST_VARIABLE         |     /*  0000001            Supports variable length */
2120     ST_BSF              |     /*  0000008            Supports SPACE block fwd */
2121     ST_BSR              |     /*  0000010            Supports SPACE block rev */
2122     ST_KNOWS_EOD        |     /*  0000200            Recognizes end-of-data   */
2123     ST_UNLOADABLE       |     /*  0000400            Driver can be unloaded   */
2124     ST_NO_RECSIZE_LIMIT |     /*  0008000            Supports blocks > 64KB   */
2125     ST_MODE_SEL_COMP    |     /*  0010000            [Note 1]                 */
2126     ST_WORMABLE,              /*  1000000            Supports WORM            */
2127                               /*  -------                                     */
2128                               /*  1018619                                     */
2129     -1,                       /* .max_rretries       [Note 4]                 */
2130     -1,                       /* .max_wretries       [Note 4]                 */
2131     {0x43,0x43,0x43,0x43},    /* .densities          Density codes [Note 2]   */
2132     MT_DENSITY1,              /* .default_density    (.densities[x])          */
2133     {0, 0, 0, 0},             /* .speeds             Speed codes [Note 3]     */
2134     0,                        /* .non_motion_timeout Nothing Special          */
2135     MINUTES(5),               /* .io_timeout         Five Minutes             */
2136     0,                        /* .rewind_timeout     Nothing Special          */
2137     MINUTES(180),             /* .space_timeout      Three Hours     3 x 9840 */
2138     0,                        /* .load_timeout       Nothing Special          */
2139     0,                        /* .unload_timeout     Nothing Special          */
2140     MINUTES(210)              /* .erase_timeout      Three and a half hours   */
2141   },
2142 
2143   /*
2144    * STK 9840 cartridge drive (Sun codename: Ironsides)
2145    *
2146    *     NOTES
2147    *     -----
2148    *  o  The 9840 has special needs - support for SCSI LOCATE and
2149    *     READ POSITION commands - so we must be sure to place this
2150    *     entry before the one for ST_TYPE_STC3490 (generic STK
2151    *     half-inch cartridge drives).
2152    * [1] Compression on the 9840 is controlled
2153    *     via the Device Configuration mode page.
2154    * [2] The 9840 has only one density, 0x42 (or 0 for "default").
2155    * [3] The 9840 has only one speed (if the driver ever cares).
2156    * [4] max_rretries and max_wretries are driver anachronisms.
2157    * [5] ST_LONG_ERASE is not needed or used when .erase_timeout
2158    *     is non-zero.
2159    */
2160   {                           /* Structure member    Description              */
2161                               /* ----------------    -----------              */
2162     "StorageTek 9840",        /* .name               Display ("pretty") name  */
2163     12,                       /* .length             Length of next item...   */
2164     "STK     9840",           /* .vid                Vendor-product ID string */
2165     ST_TYPE_STK9840,          /* .type               Numeric type (cf. mtio.h)*/
2166     0,                        /* .bsize              Block size (0 = variable)*/
2167                               /* .options            Drive option flags:      */
2168     ST_VARIABLE         |     /*  0000001            Supports variable length */
2169     ST_BSF              |     /*  0000008            Supports SPACE block fwd */
2170     ST_BSR              |     /*  0000010            Supports SPACE block rev */
2171     ST_KNOWS_EOD        |     /*  0000200            Recognizes end-of-data   */
2172     ST_UNLOADABLE       |     /*  0000400            Driver can be unloaded   */
2173     ST_NO_RECSIZE_LIMIT |     /*  0008000            Supports blocks > 64KB   */
2174     ST_MODE_SEL_COMP    |     /*  0010000            [Note 1]                 */
2175     ST_WORMABLE,              /*  1000000            Supports WORM            */
2176                               /*  -------                                     */
2177                               /*  1018619                                     */
2178     10,                       /* .max_rretries       [Note 4]                 */
2179     10,                       /* .max_wretries       [Note 4]                 */
2180     {0x00, 0x00, 0x00, 0x00}, /* .densities          Density codes [Note 2]   */
2181     MT_DENSITY1,              /* .default_density    (.densities[x])          */
2182     {0, 0, 0, 0},             /* .speeds             Speed codes [Note 3]     */
2183     0,                        /* .non_motion_timeout Nothing Special          */
2184     MINUTES(5),               /* .io_timeout         Five Minutes             */
2185     0,                        /* .rewind_timeout     Nothing Special          */
2186     0,                        /* .space_timeout      Nothing Special          */
2187     0,                        /* .load_timeout       Nothing Special          */
2188     0,                        /* .unload_timeout     Nothing Special          */
2189     MINUTES(70)               /* .erase_timeout      One Hour and ten Minutes */
2190   },
2191 
2192   /*
2193    * STC 3490 1/2" cartridge
2194    *
2195    *     NOTES
2196    *     -----
2197    *  o This is an unsupported drive.
2198    *
2199    *  o This is the generic StorageTek (STK) entry. Any special or drive
2200    *    specific entries must be placed ahead of this entry in the file, to
2201    *    ensure that the driver will "see" and use them; otherwise this entry
2202    *    will be used as the default.
2203    *
2204    * [1] The STC 3490 uses 0 or "default" for the desnity code.
2205    * [2] The STC 3490 has only one speed (if the driver ever cares).
2206    * [3] max_rretries and max_wretries are driver anachronisms.
2207    */
2208   {                           /* Structure member Description                 */
2209                               /* ---------------- -----------                 */
2210     "STK 1/2\" Cartridge",    /* .name            Display ("pretty") name     */
2211     3,                        /* .length          Length of next item...      */
2212     "STK",                    /* .vid             Vendor-product ID string    */
2213     ST_TYPE_STC3490,          /* .type            Numeric type (cf. mtio.h)   */
2214     0,                        /* .bsize           Block size (0 = variable)   */
2215     ST_VARIABLE         |     /*    00001           Supports variable length  */
2216     ST_REEL             |     /*    00004           1/2-inch reel tape device */
2217     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2218     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2219     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
2220     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2221     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2222     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
2223                               /*    -----                                     */
2224                               /*    1843D                                     */
2225     400,                      /* .max_rretries    [Note 3]                    */
2226     400,                      /* .max_wretries    [Note 3]                    */
2227     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2228     MT_DENSITY1,              /* .default_density (.densities[x])             */
2229     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2230   },
2231 
2232   /*
2233    * Sony SAIT
2234    *
2235    * Only looking at part of the product ID so it will match SDZ-100 and
2236    * SDZ-130. One is SCSI other is Fibre but same configuration otherwise.
2237    *
2238    */
2239   {                           /* Structure member Description                 */
2240                               /* ---------------- -----------                 */
2241     "Sony Super AIT",         /* .name            Display ("pretty") name     */
2242     13,                       /* .length          Length of next item...      */
2243     "SONY    SDZ-1*",         /* .vid             Vendor-product ID string    */
2244     ST_TYPE_AIT,              /* .type            Numeric type (cf. mtio.h)   */
2245     0,
2246     ST_VARIABLE         |     /*  0000001           Supports variable length  */
2247     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
2248     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
2249     ST_AUTODEN_OVERRIDE |     /*  0000040           Suports only one density  */
2250     ST_KNOWS_EOD        |     /*  0000200           Knows End Of Data         */
2251     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
2252     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
2253     ST_MODE_SEL_COMP    |     /*  0010000           mode select compression   */
2254     ST_WORMABLE,              /*  1000000           Drive is WORM capable     */
2255                               /*  -------                                     */
2256                               /*  1018659                                     */
2257     -1,                       /* .max_rretries    Not used                    */
2258     -1,                       /* .max_wretries    Not used                    */
2259     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
2260     MT_DENSITY4,              /* .default_density (.densities[x])             */
2261     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2262     0,                        /* .non_motion_timeout Nothing special          */
2263     0,                        /* .io_timeout Four    Nothing Special          */
2264     0,                        /* .rewind_timeout     Nothing Special          */
2265     0,                        /* .space_timeout      Nothing Special          */
2266     0,                        /* .load_timeout       Nothing Special          */
2267     0,                        /* .unload_timeout     Nothing Special          */
2268     0,                        /* .erase_timeout      Six hours                */
2269   },
2270 
2271   /*
2272    * Sony SDX-420
2273    * This drive is listed before the more generic AIT drives becouse it runs
2274    * only in fixed block mode. It also responds to READ BLOCK LIMITS which
2275    * leads st to beleive its a variable block capable but it will fail any
2276    * i/o that doesn't have the fix bit set in the CDB.
2277    */
2278   {                           /* Structure member Description                 */
2279                               /* ---------------- -----------                 */
2280     "Sony AIT II",            /* .name            Display ("pretty") name     */
2281     15,                       /* .length          Length of next item...      */
2282     "SONY    SDX-420*",       /* .vid             Vendor-product ID string    */
2283     ST_TYPE_AIT,              /* .type            Numeric type (cf. mtio.h)   */
2284     512,
2285     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2286     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2287     ST_AUTODEN_OVERRIDE |     /*    00040           One density code          */
2288     ST_KNOWS_EOD        |     /*    00200           Knows End Of Data         */
2289     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2290     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2291     ST_MODE_SEL_COMP,         /*    10000           mode select compression   */
2292                               /*    -----                                     */
2293                               /*    18658                                     */
2294     -1,                       /* .max_rretries    Not used                    */
2295     -1,                       /* .max_wretries    Not used                    */
2296     {0x30, 0x30, 0x30, 0x30}, /* .densities       Density codes [Note 1]      */
2297     MT_DENSITY4,              /* .default_density (.densities[x])             */
2298     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2299     0,                        /* .non_motion_timeout Nothing special          */
2300     0,                        /* .io_timeout Four    Nothing Special          */
2301     0,                        /* .rewind_timeout     Nothing Special          */
2302     0,                        /* .space_timeout      Nothing Special          */
2303     0,                        /* .load_timeout       Nothing Special          */
2304     0,                        /* .unload_timeout     Nothing Special          */
2305     0,                        /* .erase_timeout      Six hours                */
2306   },
2307 
2308   /*
2309    * Sony SDX-520
2310    * This drive is listed before the more generic AIT drives becouse it runs
2311    * only in fixed block mode. It also responds to READ BLOCK LIMITS which
2312    * leads st to beleive its a variable block capable but it will fail any
2313    * i/o that doesn't have the fix bit set in the CDB.
2314    */
2315   {                           /* Structure member Description                 */
2316                               /* ---------------- -----------                 */
2317     "Sony AIT II",            /* .name            Display ("pretty") name     */
2318     15,                       /* .length          Length of next item...      */
2319     "SONY    SDX-520*",       /* .vid             Vendor-product ID string    */
2320     ST_TYPE_AIT,              /* .type            Numeric type (cf. mtio.h)   */
2321     512,
2322     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2323     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2324     ST_AUTODEN_OVERRIDE |     /*    00040           One density code          */
2325     ST_KNOWS_EOD        |     /*    00200           Knows End Of Data         */
2326     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2327     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2328     ST_MODE_SEL_COMP,         /*    10000           mode select compression   */
2329                               /*    -----                                     */
2330                               /*    18658                                     */
2331     -1,                       /* .max_rretries    Not used                    */
2332     -1,                       /* .max_wretries    Not used                    */
2333     {0x30, 0x30, 0x30, 0x30}, /* .densities       Density codes [Note 1]      */
2334     MT_DENSITY4,              /* .default_density (.densities[x])             */
2335     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2336     0,                        /* .non_motion_timeout Nothing special          */
2337     0,                        /* .io_timeout Four    Nothing Special          */
2338     0,                        /* .rewind_timeout     Nothing Special          */
2339     0,                        /* .space_timeout      Nothing Special          */
2340     0,                        /* .load_timeout       Nothing Special          */
2341     0,                        /* .unload_timeout     Nothing Special          */
2342     0,                        /* .erase_timeout      Six hours                */
2343   },
2344 
2345   /* Sony generic AIT
2346    *
2347    *
2348    */
2349   {                           /* Structure member Description                 */
2350                               /* ---------------- -----------                 */
2351     "Sony AIT",               /* .name            Display ("pretty") name     */
2352     12,                       /* .length          Length of next item...      */
2353     "SONY    SDX-*",          /* .vid             Vendor-product ID string    */
2354     ST_TYPE_AIT,              /* .type            Numeric type (cf. mtio.h)   */
2355     0,
2356     ST_VARIABLE         |     /*  0000001           Supports variable length  */
2357     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
2358     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
2359     ST_AUTODEN_OVERRIDE |     /*  0000040           One density code          */
2360     ST_KNOWS_EOD        |     /*  0000200           Knows End Of Data         */
2361     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
2362     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
2363     ST_MODE_SEL_COMP    |     /*  0010000           mode select compression   */
2364     ST_WORMABLE,              /*  1000000           Drive is WORM capable     */
2365                               /*  -------                                     */
2366                               /*  1018659                                     */
2367     -1,                       /* .max_rretries    Not used                    */
2368     -1,                       /* .max_wretries    Not used                    */
2369     {0x30, 0x30, 0x30, 0x30}, /* .densities       Density codes [Note 1]      */
2370     MT_DENSITY4,              /* .default_density (.densities[x])             */
2371     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
2372     0,                        /* .non_motion_timeout Nothing special          */
2373     0,                        /* .io_timeout Four    Nothing Special          */
2374     0,                        /* .rewind_timeout     Nothing Special          */
2375     0,                        /* .space_timeout      Nothing Special          */
2376     0,                        /* .load_timeout       Nothing Special          */
2377     0,                        /* .unload_timeout     Nothing Special          */
2378     0,                        /* .erase_timeout      Six hours                */
2379   },
2380 
2381   /*
2382    * Sun DLT7000
2383    *
2384    *     NOTES
2385    *     -----
2386    * [1] The DLT7000 implements many tape formats, but the st driver supports
2387    *     only the four highest densities.
2388    * [2] The DLT7000 has only one speed (if the driver ever cares).
2389    * [3] max_rretries and max_wretries are driver anachronisms.
2390    * [4] Data is buffered in the driver and pre-acked to the application. This
2391    *     is only supported in 2.5.1.
2392    */
2393   {                           /* Structure member Description                 */
2394                               /* ---------------- -----------                 */
2395     "Sun DLT7000",            /* .name            Display ("pretty") name     */
2396     15,                       /* .length          Length of next item...      */
2397     "SUN     DLT7000",        /* .vid             Vendor-product ID string    */
2398     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
2399     0,                        /* .bsize           Block size (0 = variable)   */
2400                               /* .options         Drive option flags:         */
2401     ST_VARIABLE         |     /*    00001           Supports variable length  */
2402     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2403     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2404     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2405     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
2406     ST_LONG_TIMEOUTS    |     /*    01000           More time for some ops    */
2407     ST_BUFFERED_WRITES  |     /*    04000           [Note 4]                  */
2408     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
2409     ST_CLN_TYPE_3,            /* 40000000         Asks to be cleaned this way */
2410                               /* --------                                     */
2411                               /* 4000D619                                     */
2412     400,                      /* .max_rretries    [Note 3]                    */
2413     400,                      /* .max_wretries    [Note 3]                    */
2414     {0x82, 0x83, 0x84, 0x85}, /* .densities       Density codes [Note 1]      */
2415     MT_DENSITY3,              /* .default_density (.densities[x])             */
2416     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
2417     0,                        /* .non_motion_timeout Nothing special          */
2418     0,                        /* .io_timeout Four    Nothing Special          */
2419     0,                        /* .rewind_timeout     Nothing Special          */
2420     0,                        /* .space_timeout      Nothing Special          */
2421     0,                        /* .load_timeout       Nothing Special          */
2422     0,                        /* .unload_timeout     Nothing Special          */
2423     MINUTES(360)              /* .erase_timeout      Six hours                */
2424   },
2425 
2426   /*
2427    * Sun DLT4000
2428    *
2429    *     NOTES
2430    *     -----
2431    * [1] The DLT4000 implements many tape formats, but the st driver supports
2432    *     only the four highest densities.
2433    * [2] The DLT4000 has only one speed (if the driver ever cares).
2434    * [3] max_rretries and max_wretries are driver anachronisms.
2435    * [4] Data is buffered in the driver and pre-acked to the application. This
2436    *     is only supported in 2.5.1.
2437    */
2438   {                           /* Structure member Description                 */
2439                               /* ---------------- -----------                 */
2440     "DLT4000",                /* .name            Display ("pretty") name     */
2441     15,                       /* .length          Length of next item...      */
2442     "SUN     DLT4000",        /* .vid             Vendor-product ID string    */
2443     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
2444     0,                        /* .bsize           Block size (0 = variable)   */
2445                               /* .options         Drive option flags:         */
2446     ST_VARIABLE        |      /*    00001           Supports variable length  */
2447     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2448     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2449     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2450     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2451     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2452     ST_BUFFERED_WRITES |      /*    04000           [Note 4]                  */
2453     ST_NO_RECSIZE_LIMIT|      /*    08000           Supports blocks > 64KB    */
2454     ST_CLN_TYPE_3,            /* 40000000         Asks to be cleaned this way */
2455                               /* --------                                     */
2456                               /* 4000D619                                     */
2457     400,                      /* .max_rretries    [Note 3]                    */
2458     400,                      /* .max_wretries    [Note 3]                    */
2459     {0x80, 0x81, 0x82, 0x83}, /* .densities       Density codes [Note 1]      */
2460     MT_DENSITY3,              /* .default_density (.densities[x])             */
2461     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
2462     0,                        /* .non_motion_timeout Nothing special          */
2463     0,                        /* .io_timeout Four    Nothing Special          */
2464     0,                        /* .rewind_timeout     Nothing Special          */
2465     0,                        /* .space_timeout      Nothing Special          */
2466     0,                        /* .load_timeout       Nothing Special          */
2467     0,                        /* .unload_timeout     Nothing Special          */
2468     MINUTES(360)              /* .erase_timeout      Six hours                */
2469   },
2470 
2471   /*
2472    * Sun DLT4700
2473    *
2474    *     NOTES
2475    *     -----
2476    * [1] Compression on the DLT4700 is controlled via the Device Configuration
2477    *     mode page or the Data Compression page (either one).
2478    * [2] The DLT4700 implements many tape formats, but the st driver supports
2479    *     only the four highest densities.
2480    * [3] The DLT4700 has only one speed (if the driver ever cares).
2481    * [4] max_rretries and max_wretries are driver anachronisms.
2482    * [5] Data is buffered in the driver and pre-acked to the application. This
2483    *     is only supported in 2.5.1.
2484    */
2485   {                           /* Structure member Description                 */
2486                               /* ---------------- -----------                 */
2487     "DLT4700 Library",        /* .name            Display ("pretty") name     */
2488     15,                       /* .length          Length of next item...      */
2489     "SUN     DLT4700",        /* .vid             Vendor-product ID string    */
2490     ST_TYPE_DLT,              /* .type            Numeric type (cf. mtio.h)   */
2491     0,                        /* .bsize           Block size (0 = variable)   */
2492                               /* .options         Drive option flags:         */
2493     ST_VARIABLE        |      /*    00001           Supports variable length  */
2494     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2495     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2496     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2497     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2498     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2499     ST_BUFFERED_WRITES |      /*    04000           [Note 5]                  */
2500     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2501                               /*    -----                                     */
2502                               /*    0D619                                     */
2503     400,                      /* .max_rretries    [Note 4]                    */
2504     400,                      /* .max_wretries    [Note 4]                    */
2505     {0x80, 0x81, 0x82, 0x83}, /* .densities       Density codes [Note 2]      */
2506     MT_DENSITY3,              /* .default_density (.densities[x])             */
2507     { 0, 0, 0, 0 },           /* .speeds          Speed codes [Note 2]        */
2508     0,                        /* .non_motion_timeout Nothing special          */
2509     0,                        /* .io_timeout Four    Nothing Special          */
2510     0,                        /* .rewind_timeout     Nothing Special          */
2511     0,                        /* .space_timeout      Nothing Special          */
2512     0,                        /* .load_timeout       Nothing Special          */
2513     0,                        /* .unload_timeout     Nothing Special          */
2514     MINUTES(360)              /* .erase_timeout      Six hours                */
2515   },
2516 
2517   /*
2518    * Tandberg SLR5 4/8G (standard firmware)
2519    *
2520    *     NOTES
2521    *     -----
2522    * [1] The density code entry requires four values, even if there are less
2523    *     than four values for the drive.
2524    * [2] The Tandberg SLR5 4/8G has only one speed (if the driver ever cares).
2525    * [3] max_rretries and max_wretries are driver anachronisms.
2526    */
2527   {                           /* Structure member Description                 */
2528                               /* ---------------- -----------                 */
2529     "Tandberg 4/8 Gig QIC",   /* .name            Display ("pretty") name     */
2530     19,                       /* .length          Length of next item...      */
2531     "TANDBERG SLR5 4/8GB",    /* .vid             Vendor-product ID string    */
2532     ST_TYPE_TAND25G,          /* .type            Numeric type (cf. mtio.h)   */
2533     0,                        /* .bsize           Block size (0 = variable)   */
2534                               /* .options         Drive option flags:         */
2535     ST_VARIABLE        |      /*    00001           Supports variable length  */
2536     ST_QIC             |      /*    00002           QIC tape device           */
2537     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2538     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2539     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
2540     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2541     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2542     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2543     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2544                               /*    -----                                     */
2545                               /*    0963B                                     */
2546     400,                      /* .max_rretries    [Note 3]                    */
2547     400,                      /* .max_wretries    [Note 3]                    */
2548     {0x22, 0x22, 0x26, 0x26}, /* .densities       Density codes [Note 1]      */
2549     MT_DENSITY4,              /* .default_density (.densities[x])             */
2550     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2551   },
2552 
2553   /*
2554    * Tandberg SLR5 (SMI firmware).
2555    *
2556    *     NOTES
2557    *     -----
2558    *  o The inquiry string for this drive is actually padded with blanks, but
2559    *    we only check the first 13 characters so that this will act as a default
2560    *    to cover other revisions of firmware on SLR5s which may show up.
2561    *
2562    * [1] The density code entry requires four values, even if there are less
2563    *     than four values for the drive.
2564    * [2] The Tandberg SLR5 has only one speed (if the driver ever cares).
2565    * [3] max_rretries and max_wretries are driver anachronisms.
2566    */
2567   {                           /* Structure member Description                 */
2568                               /* ---------------- -----------                 */
2569     "Tandberg 8 Gig QIC",     /* .name            Display ("pretty") name     */
2570     13,                       /* .length          Length of next item...      */
2571     "TANDBERG SLR5",          /* .vid             Vendor-product ID string    */
2572     ST_TYPE_TAND25G,          /* .type            Numeric type (cf. mtio.h)   */
2573     0,                        /* .bsize           Block size (0 = variable)   */
2574                               /* .options         Drive option flags:         */
2575     ST_VARIABLE        |      /*    00001           Supports variable length  */
2576     ST_QIC             |      /*    00002           QIC tape device           */
2577     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2578     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2579     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
2580     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2581     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2582     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2583     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2584                               /*    -----                                     */
2585                               /*    0963B                                     */
2586     400,                      /* .max_rretries    [Note 3]                    */
2587     400,                      /* .max_wretries    [Note 3]                    */
2588     {0xA0, 0xD0, 0xD0, 0xD0}, /* .densities       Density codes [Note 1]      */
2589     MT_DENSITY4,              /* .default_density (.densities[x])             */
2590     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2591   },
2592 
2593   /*
2594    * Tandberg 4100 QIC
2595    *
2596    *     NOTES
2597    *     -----
2598    *  o This is an unsupported drive.
2599    *
2600    * [1] The Tandberg 4100 uses 0 or the "default" density code.
2601    * [2] The Tandberg 4100 has only one speed (if the driver ever cares).
2602    * [3] max_rretries and max_wretries are driver anachronisms.
2603    */
2604   {                           /* Structure member Description                 */
2605                               /* ---------------- -----------                 */
2606     "Tandberg 4100 QIC",      /* .name            Display ("pretty") name     */
2607     13,                       /* .length          Length of next item...      */
2608     "TANDBERG 4100",          /* .vid             Vendor-product ID string    */
2609     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2610     512,                      /* .bsize           Block size (0 = variable)   */
2611                               /* .options         Drive option flags:         */
2612     ST_QIC        |           /*    00002           QIC tape device           */
2613     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
2614     ST_BSR        |           /*    00010           Supports SPACE block rev  */
2615     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
2616     ST_KNOWS_EOD  |           /*    00200           Recognizes end-of-data    */
2617     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2618                               /*    -----                                     */
2619                               /*    0063A                                     */
2620     400,                      /* .max_rretries    [Note 3]                    */
2621     400,                      /* .max_wretries    [Note 3]                    */
2622     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2623     MT_DENSITY2,              /* .default_density (.densities[x])             */
2624     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2625   },
2626 
2627   /*
2628    * Tandberg 4200 QIC
2629    *
2630    *     NOTES
2631    *     -----
2632    *  o This is an unsupported drive.
2633    *
2634    * [1] The Tandberg 4200 uses 0 or the "default" density code.
2635    * [2] The Tandberg 4200 has only one speed (if the driver ever cares).
2636    * [3] max_rretries and max_wretries are driver anachronisms.
2637    */
2638   {                           /* Structure member Description                 */
2639                               /* ---------------- -----------                 */
2640     "Tandberg 4200 QIC",      /* .name            Display ("pretty") name     */
2641     13,                       /* .length          Length of next item...      */
2642     "TANDBERG 4200",          /* .vid             Vendor-product ID string    */
2643     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2644     512,                      /* .bsize           Block size (0 = variable)   */
2645                               /* .options         Drive option flags:         */
2646     ST_QIC        |           /*    00002           QIC tape device           */
2647     ST_BSF        |           /*    00008           Supports SPACE block fwd  */
2648     ST_BSR        |           /*    00010           Supports SPACE block rev  */
2649     ST_LONG_ERASE |           /*    00020           Needs extra time to erase */
2650     ST_KNOWS_EOD  |           /*    00200           Recognizes end-of-data    */
2651     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2652                               /*    -----                                     */
2653                               /*    0063A                                     */
2654     400,                      /* .max_rretries    [Note 3]                    */
2655     400,                      /* .max_wretries    [Note 3]                    */
2656     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2657     MT_DENSITY2,              /* .default_density (.densities[x])             */
2658     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2659   },
2660 
2661   /*
2662    * Tandberg QIC 2.5 Gig Tape Drive
2663    *
2664    *     NOTES
2665    *     -----
2666    * [1] The TDC 4200 uses 0 or the "default" density code.
2667    * [2] The TDC 4200 has only one speed (if the driver ever cares).
2668    * [3] max_rretries and max_wretries are driver anachronisms.
2669    * [4] Data is buffered in the driver and pre-acked to the application. This
2670    *     is only supported in 2.5.1.
2671    */
2672   {                           /* Structure member Description                 */
2673                               /* ---------------- -----------                 */
2674     "Tandberg QIC 2.5 Gig Tape Drive",
2675                               /* .name            Display ("pretty") name     */
2676     16,                       /* .length          Length of next item...      */
2677     "TANDBERG TDC 420*",      /* .vid             Vendor-product ID string    */
2678     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2679     0,                        /* .bsize           Block size (0 = variable)   */
2680                               /* .options         Drive option flags:         */
2681     ST_VARIABLE          |    /*    00001           Supports variable length  */
2682     ST_QIC               |    /*    00002           QIC tape device           */
2683     ST_BSF               |    /*    00008           Supports SPACE block fwd  */
2684     ST_BSR               |    /*    00010           Supports SPACE block rev  */
2685     ST_LONG_ERASE        |    /*    00020           Needs extra time to erase */
2686     ST_AUTODEN_OVERRIDE  |    /*    00040           Autodensity override flag */
2687     ST_KNOWS_EOD         |    /*    00200           Recognizes end-of-data    */
2688     ST_UNLOADABLE        |    /*    00400           Driver can be unloaded    */
2689     ST_LONG_TIMEOUTS     |    /*    01000           More time for some ops    */
2690     ST_BUFFERED_WRITES   |    /*    04000           [Note 4]                  */
2691     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2692                               /*    -----                                     */
2693                               /*    0D67B                                     */
2694     400,                      /* .max_rretries    [Note 3]                    */
2695     400,                      /* .max_wretries    [Note 3]                    */
2696     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2697     MT_DENSITY1,              /* .default_density (.densities[x])             */
2698     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2699   },
2700 
2701   /*
2702    * Tandberg MLR1 QIC
2703    *
2704    *     NOTES
2705    *     -----
2706    * [1] The MLR1 uses 0 or the "default" density code.
2707    * [2] The MLR1 has only one speed (if the driver ever cares).
2708    * [3] max_rretries and max_wretries are driver anachronisms.
2709    * [4] Data is buffered in the driver and pre-acked to the application. This
2710    *     is only supported in 2.5.1.
2711    */
2712   {                           /* Structure member Description                 */
2713                               /* ---------------- -----------                 */
2714     "Tandberg MLR1 QIC",      /* .name            Display ("pretty") name     */
2715     12,                       /* .length          Length of next item...      */
2716     "TANDBERGMLR1",           /* .vid             Vendor-product ID string    */
2717     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
2718     512,                      /* .bsize           Block size (0 = variable)   */
2719                               /* .options         Drive option flags:         */
2720     ST_QIC            |       /*    00002         QIC tape device             */
2721     ST_BSF            |       /*    00008         Supports SPACE block fwd    */
2722     ST_BSR            |       /*    00010         Supports SPACE block rev    */
2723     ST_LONG_ERASE     |       /*    00020         Needs extra time to erase   */
2724     ST_KNOWS_EOD      |       /*    00200         Recognizes end-of-data      */
2725     ST_UNLOADABLE     |       /*    00400         Driver can be unloaded      */
2726     ST_BUFFERED_WRITES,       /*    04000         [Note 4]                    */
2727                               /*    -----                                     */
2728                               /*    0463A                                     */
2729     400,                      /* .max_rretries    [Note 3]                    */
2730     400,                      /* .max_wretries    [Note 3]                    */
2731     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2732     MT_DENSITY1,              /* .default_density (.densities[x])             */
2733     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2734   },
2735 
2736   /*
2737    * Tandberg MLR3 QIC
2738    *
2739    *     NOTES
2740    *     -----
2741    * [1] The density code entry requires four values, even if there are less
2742    *     than four values for the drive.
2743    * [2] The MLR3 has only one speed (if the driver ever cares).
2744    * [3] max_rretries and max_wretries are driver anachronisms.
2745    */
2746   {                           /* Structure member Description                 */
2747                               /* ---------------- -----------                 */
2748     "Tandberg 50 Gig QIC",    /* .name            Display ("pretty") name     */
2749     12,                       /* .length          Length of next item...      */
2750     "TANDBERGMLR3",           /* .vid             Vendor-product ID string    */
2751     MT_ISTAND25G,             /* .type            Numeric type (cf. mtio.h)   */
2752     0,                        /* .bsize           Block size (0 = variable)   */
2753                               /* .options         Drive option flags:         */
2754     ST_VARIABLE        |      /*    00001           Supports variable length  */
2755     ST_QIC             |      /*    00002           QIC tape device           */
2756     ST_BSF             |      /*    00008           Supports SPACE block fwd  */
2757     ST_BSR             |      /*    00010           Supports SPACE block rev  */
2758     ST_LONG_ERASE      |      /*    00020           Needs extra time to erase */
2759     ST_KNOWS_EOD       |      /*    00200           Recognizes end-of-data    */
2760     ST_UNLOADABLE      |      /*    00400           Driver can be unloaded    */
2761     ST_LONG_TIMEOUTS   |      /*    01000           More time for some ops    */
2762     ST_NO_RECSIZE_LIMIT,      /*    08000           Supports blocks > 64KB    */
2763                               /*    -----                                     */
2764                               /*    0963B                                     */
2765     400,                      /* .max_rretries    [Note 3]                    */
2766     400,                      /* .max_wretries    [Note 3]                    */
2767     {0xA0, 0xD0, 0xD0, 0xD0}, /* .densities       Density codes [Note 1]      */
2768     MT_DENSITY3,              /* .default_density (.densities[x])             */
2769     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2770   },
2771 
2772   /*
2773    * WangDAT 3.81mm cartridge
2774    *
2775    *     NOTES
2776    *     -----
2777    *  o This is an unsupported drive.
2778    *
2779    * [1] The WangDAT 3.81mm uses 0 or the "default" density code.
2780    * [2] The WangDAT 3.81mm has only one speed (if the driver ever cares).
2781    * [3] max_rretries and max_wretries are driver anachronisms.
2782    */
2783   {                           /* Structure member Description                 */
2784                               /* ---------------- -----------                 */
2785     "Wang DAT 3.81 Helical Scan",
2786                               /* .name            Display ("pretty") name     */
2787     7,                        /* .length          Length of next item...      */
2788     "WangDAT",                /* .vid             Vendor-product ID string    */
2789     ST_TYPE_WANGDAT,          /* .type            Numeric type (cf. mtio.h)   */
2790     0,                        /* .bsize           Block size (0 = variable)   */
2791                               /* .options         Drive option flags:         */
2792     ST_VARIABLE         |     /*    00001           Supports variable length  */
2793     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2794     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2795     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
2796     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2797     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2798                               /*    -----                                     */
2799                               /*    00659                                     */
2800     5000,                     /* .max_rretries    [Note 3]                    */
2801     5000,                     /* .max_wretries    [Note 3]                    */
2802     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2803     MT_DENSITY2,              /* .default_density (.densities[x])             */
2804     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2805   },
2806 
2807   /*
2808    * Wangtek QIC-150 1/4" cartridge
2809    *
2810    *     NOTES
2811    *     -----
2812    *  o This is an unsupported drive.
2813    *
2814    * [1] The Wangtek QIC-150 uses 0 or the "default" density code.
2815    * [2] The Wangtek QIC-150 has only one speed (if the driver ever cares).
2816    * [3] max_rretries and max_wretries are driver anachronisms.
2817    */
2818   {                           /* Structure member Description                 */
2819                               /* ---------------- -----------                 */
2820     "Wangtek QIC-150",        /* .name            Display ("pretty") name     */
2821     14,                       /* .length          Length of next item...      */
2822     "WANGTEK 5150ES",         /* .vid             Vendor-product ID string    */
2823     ST_TYPE_WANGTEK,          /* .type            Numeric type (cf. mtio.h)   */
2824     512,                      /* .bsize           Block size (0 = variable)   */
2825                               /* .options         Drive option flags:         */
2826     ST_QIC              |     /*    00002           QIC tape device           */
2827     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
2828     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2829     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2830                               /*    -----                                     */
2831                               /*    00642                                     */
2832     400,                      /* .max_rretries    [Note 3]                    */
2833     400,                      /* .max_wretries    [Note 3]                    */
2834     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2835     MT_DENSITY2,              /* .default_density (.densities[x])             */
2836     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2837   },
2838 
2839   /*
2840    * Wangtek 4mm RDAT drive
2841    *
2842    *     NOTES
2843    *     -----
2844    *  o This is an unsupported drive.
2845    *
2846    *  o This entry uses a shortened Vendor-product ID string for the
2847    *    INQUIRY match.
2848    *
2849    * [1] The Wangtek 4mm RDAT uses 0 or the "default" density code.
2850    * [2] The Wangtek 4mm RDAT has only one speed (if the driver ever cares).
2851    * [3] max_rretries and max_wretries are driver anachronisms.
2852    */
2853   {                           /* Structure member Description                 */
2854                               /* ---------------- -----------                 */
2855     "Wangtek 4mm Helical Scan",
2856                               /* .name            Display ("pretty") name     */
2857     14,                       /* .length          Length of next item...      */
2858     "WANGTEK 6130-H*",        /* .vid             Vendor-product ID string    */
2859     ST_TYPE_WANGTHS,          /* .type            Numeric type (cf. mtio.h)   */
2860     0,                        /* .bsize           Block size (0 = variable)   */
2861                               /* .options         Drive option flags:         */
2862     ST_VARIABLE         |     /*    00001           Supports variable length  */
2863     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2864     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2865     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
2866     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2867     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2868                               /*    -----                                     */
2869                               /*    00659                                     */
2870     400,                      /* .max_rretries    [Note 3]                    */
2871     400,                      /* .max_wretries    [Note 3]                    */
2872     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2873     MT_DENSITY2,              /* .default_density (.densities[x])             */
2874     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2875   },
2876 
2877   /*
2878    * Wangtek QIC-150 1/4" cartridge
2879    *
2880    *     NOTES
2881    *     -----
2882    *  o This is an unsupported drive.
2883    *
2884    * [1] The Wangtek QIC-150 uses 0 or the "default" density code.
2885    * [2] The Wangtek QIC-150 has only one speed (if the driver ever cares).
2886    * [3] max_rretries and max_wretries are driver anachronisms.
2887    */
2888   {                           /* Structure member Description                 */
2889                               /* ---------------- -----------                 */
2890     "Wangtek 5525ES SCSI",    /* .name            Display ("pretty") name     */
2891     19,                       /* .length          Length of next item...      */
2892     "WANGTEK 5525ES SCSI",    /* .vid             Vendor-product ID string    */
2893     ST_TYPE_WANGTEK,          /* .type            Numeric type (cf. mtio.h)   */
2894     512,                      /* .bsize           Block size (0 = variable)   */
2895                               /* .options         Drive option flags:         */
2896     ST_QIC              |     /*    00002           QIC tape device           */
2897     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
2898     ST_BSR              |     /*    00010           Supports SPACE block rev  */
2899     ST_LONG_ERASE       |     /*    00020           Needs extra time to erase */
2900     ST_AUTODEN_OVERRIDE |     /*    00040           Autdensity override flag  */
2901     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
2902     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
2903                               /*    -----                                     */
2904                               /*    0067A                                     */
2905     400,                      /* .max_rretries    [Note 3]                    */
2906     400,                      /* .max_wretries    [Note 3]                    */
2907     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
2908     MT_DENSITY2,              /* .default_density (.densities[x])             */
2909     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2910   },
2911 
2912   /*
2913    * [1] The Ecrix VXA-1 has only one density at this time,
2914    *     Compression is controlled via the Device Configuration
2915    *     mode page.
2916    * [2] The Ecrix VXA-1 is a veriable speed device. The drive determines
2917    *     the optimum speed. (if the driver ever cares).
2918    */
2919   {                           /* Structure member Description                 */
2920                               /* ---------------- -----------                 */
2921     "Ecrix VXA-1",            /* .name            Display ("pretty") name     */
2922     13,                       /* .length          Length of next item...      */
2923     "ECRIX   VXA-1",          /* .vid             Vendor-product ID string    */
2924     MT_ISOTHER,               /* .type            Numeric type (cf. mtio.h)   */
2925     0,                        /* .bsize           Block size (0 = variable)   */
2926                               /* .options         Drive option flags:         */
2927     ST_VARIABLE             | /*    00001           Supports variable length  */
2928     ST_BSF                  | /*    00008           Supports SPACE block fwd  */
2929     ST_BSR                  | /*    00010           Supports SPACE block rev  */
2930     ST_LONG_ERASE           | /*    00020           Needs extra time to erase */
2931     ST_KNOWS_EOD            | /*    00200           Recognizes end-of-data    */
2932     ST_UNLOADABLE           | /*    00400           Driver can be unloaded    */
2933     ST_SOFT_ERROR_REPORTING | /*    00800           Reports errors on close   */
2934     ST_LONG_TIMEOUTS        | /*    01000           More time for some ops    */
2935     ST_NO_RECSIZE_LIMIT     | /*    08000           Supports blocks > 64KB    */
2936     ST_MODE_SEL_COMP        | /*    10000         Mode Select to enable comp  */
2937     ST_CLN_TYPE_1,            /* 10000000         Asks to be cleaned this way */
2938                               /* --------                                     */
2939                               /* 10019E39                                     */
2940     -1,                       /* .max_rretries                                */
2941     -1,                       /* .max_wretries                                */
2942     {0x80, 0x80, 0x80, 0x80}, /* .densities       Density codes [Note 1]      */
2943     MT_DENSITY4,              /* .default_density (.densities[x])             */
2944     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
2945   },
2946 
2947   /*
2948    * [1] The IBM Ultrium Gen 4 "OEM" version has two densites at this time,
2949    *     One for Gen 3 0x44, One for Gen 4 0x46.
2950    *     This drive is configured with ST_KNOWS_MEDIA.
2951    *     That means that it will look at the mediatype from the mode sense
2952    *     to select the density code. The compression will be selected based
2953    *     on the minor node the user opened.
2954    * [2] The IBM LTO reports a medium type that is used to select the density.
2955    */
2956   {                           /* Structure member Description                 */
2957                               /* ---------------- -----------                 */
2958     "IBM Ultrium Gen 4 LTO",  /* .name            Display ("pretty") name     */
2959     19,                       /* .length          Length of next item...      */
2960     "IBM     ULTRIUM-TD4",    /* .vid             Vendor-product ID string    */
2961     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
2962     0,                        /* .bsize           Block size (0 = variable)   */
2963                               /* .options         Drive option flags:         */
2964     ST_VARIABLE         |     /*  0000001           Supports variable length  */
2965     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
2966     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
2967     ST_KNOWS_EOD        |     /*  0000200           Recognizes end-of-data    */
2968     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
2969     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
2970     ST_MODE_SEL_COMP    |     /*  0010000           [Note 1]                  */
2971     ST_KNOWS_MEDIA      |     /*  0800000         Media detrmines density     */
2972     ST_WORMABLE,              /*  1000000         Is WORM capable             */
2973                               /*  -------                                     */
2974                               /*  1818619                                     */
2975     -1,                       /* .max_rretries    Not used any more.          */
2976     -1,                       /* .max_wretries    Not used any more.          */
2977     {0x44, 0x44, 0x46, 0x46}, /* .densities       Density codes [Note 1]      */
2978     MT_DENSITY4,              /* .default_density (.densities[x])             */
2979     {0x38, 0x38, 0x48, 0x48}, /* .mediatype       Media type  [Note 2]        */
2980     MINUTES(1),               /* .non_motion_time                             */
2981     MINUTES(23),              /* .io_time                                     */
2982     MINUTES(9),               /* .rewind_time                                 */
2983     MINUTES(183),             /* .space_time      worst case directory invalid*/
2984     MINUTES(9),               /* .load_time                                   */
2985     MINUTES(13),              /* .unload_time                                 */
2986     MINUTES(180)              /* .erase_time                                  */
2987   },
2988 
2989   /*
2990    * [1] The IBM Ultrium Gen 4 "IBM" version has two densites at this time,
2991    *     One for Gen 3 0x44, one for Gen 4 0x46.
2992    *     This drive is configured with ST_KNOWS_MEDIA.
2993    *     That means that it will look at the mediatype from the mode sense
2994    *     to select the density code. The compression will be selected based
2995    *     on the minor node the user opened.
2996    * [2] The IBM LTO reports a medium type that is used to select the density.
2997    */
2998   {                           /* Structure member Description                 */
2999                               /* ---------------- -----------                 */
3000     "IBM Ultrium Gen 4 LTO",  /* .name            Display ("pretty") name     */
3001     19,                       /* .length          Length of next item...      */
3002     "IBM     ULT3580-TD4",    /* .vid             Vendor-product ID string    */
3003     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
3004     0,                        /* .bsize           Block size (0 = variable)   */
3005                               /* .options         Drive option flags:         */
3006     ST_VARIABLE         |     /*  0000001           Supports variable length  */
3007     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
3008     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
3009     ST_KNOWS_EOD        |     /*  0000200           Recognizes end-of-data    */
3010     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
3011     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
3012     ST_MODE_SEL_COMP    |     /*  0010000           [Note 1]                  */
3013     ST_KNOWS_MEDIA      |     /*  0800000         Media detrmines density     */
3014     ST_WORMABLE,              /*  1000000         Is WORM capable             */
3015                               /*  -------                                     */
3016                               /*  1818619                                     */
3017     -1,                       /* .max_rretries    Not used any more.          */
3018     -1,                       /* .max_wretries    Not used any more.          */
3019     {0x44, 0x44, 0x46, 0x46}, /* .densities       Density codes [Note 1]      */
3020     MT_DENSITY4,              /* .default_density (.densities[x])             */
3021     {0x38, 0x38, 0x48, 0x48}, /* .mediatype       Media type  [Note 2]        */
3022     MINUTES(1),               /* .non_motion_time                             */
3023     MINUTES(23),              /* .io_time                                     */
3024     MINUTES(9),               /* .rewind_time                                 */
3025     MINUTES(183),             /* .space_time      worst case directory invalid*/
3026     MINUTES(9),               /* .load_time                                   */
3027     MINUTES(13),              /* .unload_time                                 */
3028     MINUTES(180)              /* .erase_time                                  */
3029   },
3030 
3031   /*
3032    * [1] The IBM Ultrium Gen 3 "OEM" version has three densites at this time,
3033    *     One for Gen 1 0x40, One for Gen 2 0x42 and for Gen 3 0x44.
3034    *     This drive is configured with ST_KNOWS_MEDIA.
3035    *     That means that it will look at the mediatype from the mode sense
3036    *     to select the density code. The compression will be selected based
3037    *     on the minor node the user opened.
3038    * [2] The IBM LTO reports a medium type that is used to select the density.
3039    */
3040   {                           /* Structure member Description                 */
3041                               /* ---------------- -----------                 */
3042     "IBM Ultrium Gen 3 LTO",  /* .name            Display ("pretty") name     */
3043     19,                       /* .length          Length of next item...      */
3044     "IBM     ULTRIUM-TD3",    /* .vid             Vendor-product ID string    */
3045     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
3046     0,                        /* .bsize           Block size (0 = variable)   */
3047                               /* .options         Drive option flags:         */
3048     ST_VARIABLE         |     /*  0000001           Supports variable length  */
3049     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
3050     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
3051     ST_KNOWS_EOD        |     /*  0000200           Recognizes end-of-data    */
3052     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
3053     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
3054     ST_MODE_SEL_COMP    |     /*  0010000           [Note 1]                  */
3055     ST_KNOWS_MEDIA      |     /*  0800000         Media detrmines density     */
3056     ST_WORMABLE,              /*  1000000         Is WORM capable             */
3057                               /*  -------                                     */
3058                               /*  1818619                                     */
3059     -1,                       /* .max_rretries    Not used any more.          */
3060     -1,                       /* .max_wretries    Not used any more.          */
3061     {0x40, 0x42, 0x44, 0x44}, /* .densities       Density codes [Note 1]      */
3062     MT_DENSITY4,              /* .default_density (.densities[x])             */
3063     {0x18, 0x28, 0x38, 0x38}, /* .mediatype       Media type  [Note 2]        */
3064     MINUTES(1),               /* .non_motion_time                             */
3065     MINUTES(18),              /* .io_time                                     */
3066     MINUTES(9),               /* .rewind_time                                 */
3067     MINUTES(165),             /* .space_time      worst case directory invalid*/
3068     MINUTES(9),               /* .load_time                                   */
3069     MINUTES(12),              /* .unload_time                                 */
3070     MINUTES(160)              /* .erase_time                                  */
3071   },
3072 
3073   /*
3074    * [1] The IBM Ultrium Gen 3 "IBM" version has three densites at this time,
3075    *     One for Gen 1 0x40, One for Gen 2 0x42 and Gen 3 0x44.
3076    *     This drive is configured with ST_KNOWS_MEDIA.
3077    *     That means that it will look at the mediatype from the mode sense
3078    *     to select the density code. The compression will be selected based
3079    *     on the minor node the user opened.
3080    * [2] The IBM LTO reports a medium type that is used to select the density.
3081    */
3082   {                           /* Structure member Description                 */
3083                               /* ---------------- -----------                 */
3084     "IBM Ultrium Gen 3 LTO",  /* .name            Display ("pretty") name     */
3085     19,                       /* .length          Length of next item...      */
3086     "IBM     ULT3580-TD3",    /* .vid             Vendor-product ID string    */
3087     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
3088     0,                        /* .bsize           Block size (0 = variable)   */
3089                               /* .options         Drive option flags:         */
3090     ST_VARIABLE         |     /*  0000001           Supports variable length  */
3091     ST_BSF              |     /*  0000008           Supports SPACE block fwd  */
3092     ST_BSR              |     /*  0000010           Supports SPACE block rev  */
3093     ST_KNOWS_EOD        |     /*  0000200           Recognizes end-of-data    */
3094     ST_UNLOADABLE       |     /*  0000400           Driver can be unloaded    */
3095     ST_NO_RECSIZE_LIMIT |     /*  0008000           Supports blocks > 64KB    */
3096     ST_MODE_SEL_COMP    |     /*  0010000           [Note 1]                  */
3097     ST_KNOWS_MEDIA      |     /*  0800000         Media detrmines density     */
3098     ST_WORMABLE,              /*  1000000         Is WORM capable             */
3099                               /*  -------                                     */
3100                               /*  1818619                                     */
3101     -1,                       /* .max_rretries    Not used any more.          */
3102     -1,                       /* .max_wretries    Not used any more.          */
3103     {0x40, 0x42, 0x44, 0x44}, /* .densities       Density codes [Note 1]      */
3104     MT_DENSITY4,              /* .default_density (.densities[x])             */
3105     {0x18, 0x28, 0x38, 0x38}, /* .mediatype       Media type  [Note 2]        */
3106     MINUTES(1),               /* .non_motion_time                             */
3107     MINUTES(18),              /* .io_time                                     */
3108     MINUTES(9),               /* .rewind_time                                 */
3109     MINUTES(165),             /* .space_time      worst case directory invalid*/
3110     MINUTES(9),               /* .load_time                                   */
3111     MINUTES(12),              /* .unload_time                                 */
3112     MINUTES(160)              /* .erase_time                                  */
3113   },
3114 
3115   /*
3116    * [1] The IBM Ultrium Gen 2 "OEM" version has two densites at this time,
3117    *     One for Gen 1 0x40, One for Gen 2 0x42. In reallity The media
3118    *     Selects which density code is used but this documents the codes
3119    *     for those who care to know.
3120    *     Compression is controlled via the Compression mode page.
3121    * [2] The IBM Ultrium has only one speed (if the driver ever cares).
3122    */
3123   {                           /* Structure member Description                 */
3124                               /* ---------------- -----------                 */
3125     "IBM Ultrium Gen 2 LTO",  /* .name            Display ("pretty") name     */
3126     19,                       /* .length          Length of next item...      */
3127     "IBM     ULTRIUM-TD2",    /* .vid             Vendor-product ID string    */
3128     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
3129     0,                        /* .bsize           Block size (0 = variable)   */
3130                               /* .options         Drive option flags:         */
3131     ST_VARIABLE         |     /*    00001           Supports variable length  */
3132     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
3133     ST_BSR              |     /*    00010           Supports SPACE block rev  */
3134     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
3135     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
3136     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
3137     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
3138                               /*    -----                                     */
3139                               /*    18619                                     */
3140     -1,                       /* .max_rretries    Not used any more.          */
3141     -1,                       /* .max_wretries    Not used any more.          */
3142     {0x40, 0x40, 0x42, 0x42}, /* .densities       Density codes [Note 1]      */
3143     MT_DENSITY4,              /* .default_density (.densities[x])             */
3144     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
3145     MINUTES(1),               /* .non_motion_time                             */
3146     MINUTES(18),              /* .io_time                                     */
3147     MINUTES(9),               /* .rewind_time                                 */
3148     MINUTES(151),             /* .space_time      worst case directory invalid*/
3149     MINUTES(12),              /* .load_time                                   */
3150     MINUTES(11),              /* .unload_time                                 */
3151     MINUTES(151)              /* .erase_time                                  */
3152   },
3153 
3154   /*
3155    * [1] The IBM Ultrium Gen 2 "IBM" version has two densites at this time,
3156    *     One for Gen 1 0x40, One for Gen 2 0x42. In reallity The media
3157    *     Selects which density code is used but this documents the codes
3158    *     for those who care to know.
3159    *     Compression is controlled via the Compression mode page.
3160    * [2] The IBM Ultrium has only one speed (if the driver ever cares).
3161    */
3162   {                           /* Structure member Description                 */
3163                               /* ---------------- -----------                 */
3164     "IBM Ultrium Gen 2 LTO",  /* .name            Display ("pretty") name     */
3165     19,                       /* .length          Length of next item...      */
3166     "IBM     ULT3580-TD2",    /* .vid             Vendor-product ID string    */
3167     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
3168     0,                        /* .bsize           Block size (0 = variable)   */
3169                               /* .options         Drive option flags:         */
3170     ST_VARIABLE         |     /*    00001           Supports variable length  */
3171     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
3172     ST_BSR              |     /*    00010           Supports SPACE block rev  */
3173     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
3174     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
3175     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
3176     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
3177                               /*    -----                                     */
3178                               /*    18619                                     */
3179     -1,                       /* .max_rretries    Not used any more.          */
3180     -1,                       /* .max_wretries    Not used any more.          */
3181     {0x40, 0x40, 0x42, 0x42}, /* .densities       Density codes [Note 1]      */
3182     MT_DENSITY4,              /* .default_density (.densities[x])             */
3183     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
3184     MINUTES(1),               /* .non_motion_time                             */
3185     MINUTES(18),              /* .io_time                                     */
3186     MINUTES(9),               /* .rewind_time                                 */
3187     MINUTES(151),             /* .space_time      worst case directory invalid*/
3188     MINUTES(12),              /* .load_time                                   */
3189     MINUTES(11),              /* .unload_time                                 */
3190     MINUTES(151)              /* .erase_time                                  */
3191   },
3192 
3193   /*
3194    * [1] The IBM Ultrium has only one density at this time,
3195    *     Compression is controlled via the Device Configuration mode page.
3196    * [2] The IBM Ultrium has only one speed (if the driver ever cares).
3197    */
3198   {                           /* Structure member Description                 */
3199                               /* ---------------- -----------                 */
3200     "IBM Ultrium LTO",        /* .name            Display ("pretty") name     */
3201     19,                       /* .length          Length of next item...      */
3202     "IBM     ULTRIUM-TD1",    /* .vid             Vendor-product ID string    */
3203     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
3204     0,                        /* .bsize           Block size (0 = variable)   */
3205                               /* .options         Drive option flags:         */
3206     ST_VARIABLE         |     /*    00001           Supports variable length  */
3207     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
3208     ST_BSR              |     /*    00010           Supports SPACE block rev  */
3209     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
3210     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
3211     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
3212     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
3213                               /*    -----                                     */
3214                               /*    18619                                     */
3215     -1,                       /* .max_rretries    Not used any more.          */
3216     -1,                       /* .max_wretries    Not used any more.          */
3217     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
3218     MT_DENSITY4,              /* .default_density (.densities[x])             */
3219     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
3220     MINUTES(1),               /* .non_motion_time                             */
3221     MINUTES(18),              /* .io_time                                     */
3222     MINUTES(8),               /* .rewind_time                                 */
3223     MINUTES(173),             /* .space_time      worst case directory invalid*/
3224     MINUTES(11),              /* .load_time                                   */
3225     MINUTES(11),              /* .unload_time                                 */
3226     MINUTES(173)              /* .erase_time                                  */
3227   },
3228 
3229   /*
3230    * This is the same drive as the above except for the inquiry string and
3231    * that it is a "End User Version".
3232    * [1] The IBM Ultrium has only one density at this time,
3233    *     Compression is controlled via the Device Configuration mode page.
3234    * [2] The IBM Ultrium has only one speed (if the driver ever cares).
3235    */
3236   {                           /* Structure member Description                 */
3237                               /* ---------------- -----------                 */
3238     "IBM Ultrium LTO",        /* .name            Display ("pretty") name     */
3239     19,                       /* .length          Length of next item...      */
3240     "IBM     ULT3580-TD1",    /* .vid             Vendor-product ID string    */
3241     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
3242     0,                        /* .bsize           Block size (0 = variable)   */
3243                               /* .options         Drive option flags:         */
3244     ST_VARIABLE         |     /*    00001           Supports variable length  */
3245     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
3246     ST_BSR              |     /*    00010           Supports SPACE block rev  */
3247     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
3248     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
3249     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
3250     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
3251                               /*    -----                                     */
3252                               /*    18619                                     */
3253     -1,                       /* .max_rretries    Not used any more.          */
3254     -1,                       /* .max_wretries    Not used any more.          */
3255     {0x40, 0x40, 0x40, 0x40}, /* .densities       Density codes [Note 1]      */
3256     MT_DENSITY4,              /* .default_density (.densities[x])             */
3257     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
3258     MINUTES(1),               /* .non_motion_time                             */
3259     MINUTES(18),              /* .io_time                                     */
3260     MINUTES(8),               /* .rewind_time                                 */
3261     MINUTES(173),             /* .space_time      worst case directory invalid*/
3262     MINUTES(11),              /* .load_time                                   */
3263     MINUTES(11),              /* .unload_time                                 */
3264     MINUTES(173)              /* .erase_time                                  */
3265   },
3266 
3267   /*
3268    * [1] The IBM 3592 Cartridge has only one density at this time,
3269    *     Compression is controlled via the Device Configuration mode page.
3270    * [2] The IBM 3592 Cartridge has only one speed (if the driver ever cares).
3271    */
3272   {                           /* Structure member Description                 */
3273                               /* ---------------- -----------                 */
3274     "IBM 3592 Cartridge",     /* .name            Display ("pretty") name     */
3275     13,                       /* .length          Length of next item...      */
3276     "IBM     03592",          /* .vid             Vendor-product ID string    */
3277     MT_LTO,                   /* .type            Numeric type (cf. mtio.h)   */
3278     0,                        /* .bsize           Block size (0 = variable)   */
3279                               /* .options         Drive option flags:         */
3280     ST_VARIABLE         |     /*    00001           Supports variable length  */
3281     ST_BSF              |     /*    00008           Supports SPACE block fwd  */
3282     ST_BSR              |     /*    00010           Supports SPACE block rev  */
3283     ST_AUTODEN_OVERRIDE |     /*    00040           Autodensity override flag */
3284     ST_KNOWS_EOD        |     /*    00200           Recognizes end-of-data    */
3285     ST_UNLOADABLE       |     /*    00400           Driver can be unloaded    */
3286     ST_NO_RECSIZE_LIMIT |     /*    08000           Supports blocks > 64KB    */
3287     ST_MODE_SEL_COMP,         /*    10000           [Note 1]                  */
3288                               /*    -----                                     */
3289                               /*    18659                                     */
3290     -1,                       /* .max_rretries    Not used any more.          */
3291     -1,                       /* .max_wretries    Not used any more.          */
3292     {0x51, 0x51, 0x51, 0x51}, /* .densities       Density codes [Note 1]      */
3293     MT_DENSITY4,              /* .default_density (.densities[x])             */
3294     {0, 0, 0, 0},             /* .speeds          Speed codes [Note 2]        */
3295     MINUTES(1),               /* .non_motion_time                             */
3296     MINUTES(18),              /* .io_time                                     */
3297     MINUTES(8),               /* .rewind_time                                 */
3298     MINUTES(14),              /* .space_time      worst case directory invalid*/
3299     MINUTES(12),              /* .load_time                                   */
3300     MINUTES(12),              /* .unload_time                                 */
3301     MINUTES(235)              /* .erase_time                                  */
3302   },
3303 
3304   /*
3305    * Seagate Hornet NS20 USB Travan
3306    *
3307    *     NOTES
3308    *     -----
3309    *  o This drive is not OEM'ed or qualified by Sun.
3310    *
3311    * [1] The NS20 Travan uses 0 or the "default" density code.
3312    * [2] The NS20 Travan has only one speed (if the driver ever cares).
3313    * [3] max_rretries and max_wretries are driver anachronisms.
3314    */
3315   {                           /* Structure member Description                 */
3316                               /* ---------------- -----------                 */
3317     "Seagate Hornet NS20 Travan",
3318                               /* .name            Display ("pretty") name     */
3319     17,                       /* .length          Length of next item...      */
3320     "Seagate STT20000A",      /* .vid             Vendor-product ID string    */
3321     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
3322     512,                      /* .bsize           Block size (0 = variable)   */
3323                               /* .options         Drive option flags:         */
3324     ST_QIC              |     /*    00002           QIC tape device           */
3325     ST_BSF              |     /*    00008           Supports back SPACE file  */
3326     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
3327                               /*    -----                                     */
3328                               /*    0040A                                     */
3329     400,                      /* .max_rretries    [Note 3]                    */
3330     400,                      /* .max_wretries    [Note 3]                    */
3331     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
3332     MT_DENSITY1,              /* .default_density (.densities[x])             */
3333     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
3334   },
3335 
3336 
3337   /*
3338    * Seagate Hornet Travan 40
3339    *
3340    *     NOTES
3341    *     -----
3342    *  o This drive is not OEM'ed or qualified by Sun.
3343    *
3344    * [1] The Travan uses 0 or the "default" density code.
3345    * [2] The Travan has only one speed (if the driver ever cares).
3346    * [3] max_rretries and max_wretries are driver anachronisms.
3347    */
3348   {                           /* Structure member Description                 */
3349                               /* ---------------- -----------                 */
3350     "Seagate Hornet Travan 40",
3351                               /* .name            Display ("pretty") name     */
3352     16,                       /* .length          Length of next item...      */
3353     "Seagate STT3401A",       /* .vid             Vendor-product ID string    */
3354     MT_ISQIC,                 /* .type            Numeric type (cf. mtio.h)   */
3355     512,                      /* .bsize           Block size (0 = variable)   */
3356                               /* .options         Drive option flags:         */
3357     ST_QIC              |     /*    00002           QIC tape device           */
3358     ST_BSF              |     /*    00008           Supports back SPACE file  */
3359     ST_UNLOADABLE,            /*    00400           Driver can be unloaded    */
3360                               /*    -----                                     */
3361                               /*    0040A                                     */
3362     400,                      /* .max_rretries    [Note 3]                    */
3363     400,                      /* .max_wretries    [Note 3]                    */
3364     {0x00, 0x00, 0x00, 0x00}, /* .densities       Density codes [Note 1]      */
3365     MT_DENSITY1,              /* .default_density (.densities[x])             */
3366     {0, 0, 0, 0}              /* .speeds          Speed codes [Note 2]        */
3367   }
3368 
3369 	/* END CSTYLED */
3370 
3371 };
3372 
3373 
3374 const int st_ndrivetypes = (sizeof (st_drivetypes)/sizeof (st_drivetypes[0]));
3375