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