mtreg.h revision 1.5
11.5Smsaitoh/* $NetBSD: mtreg.h,v 1.5 2019/05/28 08:59:34 msaitoh Exp $ */ 21.1Sgmcgarry 31.3Sperry/* 41.1Sgmcgarry * Copyright (c) 1992, The University of Utah and 51.1Sgmcgarry * the Computer Systems Laboratory at the University of Utah (CSL). 61.1Sgmcgarry * All rights reserved. 71.1Sgmcgarry * 81.1Sgmcgarry * Permission to use, copy, modify and distribute this software is hereby 91.1Sgmcgarry * granted provided that (1) source code retains these copyright, permission, 101.1Sgmcgarry * and disclaimer notices, and (2) redistributions including binaries 111.1Sgmcgarry * reproduce the notices in supporting documentation, and (3) all advertising 121.1Sgmcgarry * materials mentioning features or use of this software display the following 131.1Sgmcgarry * acknowledgement: ``This product includes software developed by the 141.1Sgmcgarry * Computer Systems Laboratory at the University of Utah.'' 151.1Sgmcgarry * 161.1Sgmcgarry * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS 171.1Sgmcgarry * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF 181.1Sgmcgarry * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 191.1Sgmcgarry * 201.1Sgmcgarry * CSL requests users of this software to return to csl-dist@cs.utah.edu any 211.1Sgmcgarry * improvements that they make and grant CSL redistribution rights. 221.1Sgmcgarry * 231.1Sgmcgarry * Utah $Hdr: mtreg.h 1.4 95/09/12$ 241.1Sgmcgarry */ 251.1Sgmcgarry 261.1Sgmcgarry/* @(#)mtreg.h 3.4 90/07/10 mt Xinu 271.1Sgmcgarry * 281.1Sgmcgarry * Hewlett-Packard 7974, 7978, 7979 and 7980 HPIB Mag-Tape declarations. 291.1Sgmcgarry */ 301.1Sgmcgarry 311.1Sgmcgarry/* 321.1Sgmcgarry * Hardware Id's 331.1Sgmcgarry */ 341.1Sgmcgarry 351.1Sgmcgarry#define MT7974AID 0x174 361.1Sgmcgarry#define MT7978ID 0x178 371.1Sgmcgarry#define MT7979AID 0x179 381.1Sgmcgarry#define MT7980ID 0x180 391.1Sgmcgarry 401.1Sgmcgarry/* convert bytes to 1k tape block and back */ 411.1Sgmcgarry#define CTBTOK(x) ((x) >> 10) 421.1Sgmcgarry#define CTKTOB(x) ((x) << 10) 431.1Sgmcgarry 441.1Sgmcgarry/* 451.1Sgmcgarry * Listen Secondary Commands 461.1Sgmcgarry */ 471.1Sgmcgarry 481.1Sgmcgarry#define MTL_WRITE 0 /* write execute */ 491.1Sgmcgarry#define MTL_TCMD 1 /* tape command */ 501.1Sgmcgarry#define MTL_DIAG 4 /* download diagnostic */ 511.1Sgmcgarry#define MTL_FUP 6 /* write firmware update */ 521.1Sgmcgarry#define MTL_ECMD 7 /* end command */ 531.1Sgmcgarry#define MTL_DCL 16 /* amigo device clear */ 541.1Sgmcgarry#define MTL_CCRC 17 /* clear CRC */ 551.1Sgmcgarry#define MTL_XTEST 29 /* run 7979a/7980 extended self test */ 561.1Sgmcgarry#define MTL_LOOP 30 /* write interface loopback */ 571.1Sgmcgarry#define MTL_TEST 31 /* run self test */ 581.1Sgmcgarry 591.1Sgmcgarry/* 601.1Sgmcgarry * Talk Secondary Commands 611.1Sgmcgarry */ 621.1Sgmcgarry 631.1Sgmcgarry#define MTT_READ 0 /* read execute */ 641.1Sgmcgarry#define MTT_STAT 1 /* read status */ 651.1Sgmcgarry#define MTT_BCNT 2 /* read byte count */ 661.1Sgmcgarry#define MTT_DIAG 3 /* read diagnostic results */ 671.1Sgmcgarry#define MTT_FREV 4 /* read firmware revisions (7980xc) */ 681.1Sgmcgarry#define MTT_LOG 5 /* read diagnostic log */ 691.1Sgmcgarry#define MTT_FUP 6 /* read firmware update */ 701.1Sgmcgarry#define MTT_XSTAT 15 /* read extended status (7979a/7980a) */ 711.1Sgmcgarry#define MTT_DSJ 16 /* read DSJ (device specified jump) */ 721.1Sgmcgarry#define MTT_RCRC 17 /* read CRC */ 731.1Sgmcgarry#define MTT_XTEST 29 /* read 7979a/7980 extended self test */ 741.1Sgmcgarry#define MTT_LOOP 30 /* read interface loopback */ 751.1Sgmcgarry#define MTT_TEST 31 /* read self test */ 761.1Sgmcgarry 771.1Sgmcgarry/* 781.1Sgmcgarry * Tape commands 791.1Sgmcgarry */ 801.1Sgmcgarry 811.1Sgmcgarry#define MTTC_SEL0 0 /* Select Unit 0 (native protocol) */ 821.1Sgmcgarry#define MTTC_WRITE 5 /* Write Record */ 831.1Sgmcgarry#define MTTC_WFM 6 /* Write File Mark */ 841.1Sgmcgarry#define MTTC_WGAP 7 /* Write Gap */ 851.1Sgmcgarry#define MTTC_READ 8 /* Read record */ 861.1Sgmcgarry#define MTTC_FSR 9 /* forward space record */ 871.1Sgmcgarry#define MTTC_BSR 10 /* backward space record */ 881.1Sgmcgarry#define MTTC_FSF 11 /* forward space file */ 891.1Sgmcgarry#define MTTC_BSF 12 /* backward space file */ 901.1Sgmcgarry#define MTTC_REW 13 /* rewind */ 911.1Sgmcgarry#define MTTC_REWOFF 14 /* rewind and go offline */ 921.1Sgmcgarry#define MTTC_DC6250 15 /* set data compressed 6250 */ 931.1Sgmcgarry#define MTTC_6250 16 /* set 6250 bpi */ 941.1Sgmcgarry#define MTTC_1600 17 /* set 1600 bpi */ 951.1Sgmcgarry#define MTTC_800 18 /* set 800 bpi */ 961.1Sgmcgarry#define MTTC_NC6250 19 /* set non-compressed 6250 */ 971.1Sgmcgarry#define MTTC_STSTP 20 /* start/stop mode only */ 981.1Sgmcgarry#define MTTC_STRM 21 /* enable streaming */ 991.1Sgmcgarry#define MTTC_DIRM 22 /* disable immediate report mode */ 1001.1Sgmcgarry#define MTTC_EIRM 23 /* enable immediate report mode */ 1011.1Sgmcgarry#define MTTC_STAT 24 /* request status */ 1021.1Sgmcgarry#define MTTC_RLD 25 /* remote load */ 1031.1Sgmcgarry#define MTTC_RUNLD 26 /* remote unload */ 1041.1Sgmcgarry#define MTTC_RON 28 /* remote online */ 1051.1Sgmcgarry#define MTTC_DDC 30 /* disable data compression */ 1061.1Sgmcgarry#define MTTC_EDC 31 /* enable data compression */ 1071.1Sgmcgarry 1081.1Sgmcgarry/* 1091.1Sgmcgarry * End Command Bits (of any interest) 1101.1Sgmcgarry */ 1111.1Sgmcgarry#define MTE_COMPLETE 0x08 /* "marks the end of the report phase" */ 1121.1Sgmcgarry#define MTE_IDLE 0x04 /* enables parallel poll resp. for online */ 1131.1Sgmcgarry#define MTE_STOP 0x02 /* aborts transfer of "read" data */ 1141.1Sgmcgarry 1151.1Sgmcgarry#define MTE_DSJ_FORCE 0x100 /* XXX During readDSJ, force a status fetch */ 1161.1Sgmcgarry 1171.1Sgmcgarry 1181.1Sgmcgarrystruct mt_stat { 1191.1Sgmcgarry u_char m_stat[6]; 1201.1Sgmcgarry}; 1211.1Sgmcgarry 1221.1Sgmcgarry/* sc_flags */ 1231.1Sgmcgarry#define MTF_OPEN 0x0001 /* drive is in use (single-access device) */ 1241.1Sgmcgarry#define MTF_EXISTS 0x0002 /* device was found at boot time */ 1251.1Sgmcgarry#define MTF_ALIVE 0x0004 /* drive actually talks to us */ 1261.1Sgmcgarry#define MTF_WRT 0x0008 /* last command was a WRITE */ 1271.1Sgmcgarry#define MTF_IO 0x0010 /* next interrupt should start I/O (DMA) */ 1281.1Sgmcgarry#define MTF_REW 0x0020 /* tape is rewinding - must wait for it */ 1291.1Sgmcgarry#define MTF_HITEOF 0x0040 /* last read or FSR hit EOF (file mark) */ 1301.1Sgmcgarry#define MTF_HITBOF 0x0080 /* last BSR hit EOF (file mark) */ 1311.1Sgmcgarry#define MTF_ATEOT 0x0100 /* tape hit EOT - can allow one forward op */ 1321.1Sgmcgarry#define MTF_PASTEOT 0x0200 /* tape is beyond EOT - force backward motion */ 1331.1Sgmcgarry#define MTF_DSJTIMEO 0x0400 /* timed out gpibrecv()ing DSJ - continue it */ 1341.5Smsaitoh#define MTF_STATTIMEO 0x0800 /* timed out receiving STATUS - continue it */ 1351.1Sgmcgarry#define MTF_STATCONT 0x1000 /* STATTIMEO is continuable */ 1361.1Sgmcgarry 1371.1Sgmcgarry/* additional "mtcommand"s */ 1381.1Sgmcgarry#define MTRESET 16 /* reset the thing from scratch */ 1391.1Sgmcgarry#define MTSET800BPI 17 /* density select */ 1401.1Sgmcgarry#define MTSET1600BPI 18 1411.1Sgmcgarry#define MTSET6250BPI 19 1421.1Sgmcgarry#define MTSET6250DC 20 /* (data compressed - MT7980ID only) */ 1431.1Sgmcgarry 1441.1Sgmcgarry/* status bytes */ 1451.1Sgmcgarry#define sc_stat1 sc_stat.m_stat[0] 1461.1Sgmcgarry#define sc_stat2 sc_stat.m_stat[1] 1471.1Sgmcgarry#define sc_stat3 sc_stat.m_stat[2] 1481.1Sgmcgarry#define sc_stat4 sc_stat.m_stat[3] 1491.1Sgmcgarry#define sc_stat5 sc_stat.m_stat[4] 1501.1Sgmcgarry#define sc_stat6 sc_stat.m_stat[5] 1511.1Sgmcgarry 1521.1Sgmcgarry/* 1531.1Sgmcgarry * Status Register definitions 1541.1Sgmcgarry */ 1551.1Sgmcgarry 1561.1Sgmcgarry#define SR1_EOF 0x80 /* positioned at File Mark */ 1571.1Sgmcgarry#define SR1_BOT 0x40 /* positioned at Beginning of Tape */ 1581.1Sgmcgarry#define SR1_EOT 0x20 /* positioned at End of Tape */ 1591.2Swiz#define SR1_SOFTERR 0x10 /* Recoverable Error has Occurred */ 1601.1Sgmcgarry#define SR1_REJECT 0x08 /* HPIB Cmd rejected - Regs 4 & 5 have info */ 1611.1Sgmcgarry#define SR1_RO 0x04 /* No Write Ring */ 1621.1Sgmcgarry#define SR1_ERR 0x02 /* Unrecoverable Data error - Reg 5 has info */ 1631.1Sgmcgarry#define SR1_ONLINE 0x01 /* Drive Online (must be to do any operation) */ 1641.1Sgmcgarry 1651.1Sgmcgarry#define SR2_6250 0x80 /* tape is 6250BPI */ 1661.1Sgmcgarry#define SR2_UNKDEN 0x40 /* non-blank tape is of unknown density */ 1671.1Sgmcgarry#define SR2_PARITY 0x20 /* internal bus data parity error detected */ 1681.1Sgmcgarry#define SR2_OVERRUN 0x10 /* data buffer overrun (not possible?) */ 1691.1Sgmcgarry#define SR2_RUNAWAY 0x08 /* during read, no data detected on tape */ 1701.1Sgmcgarry#define SR2_OPEN 0x04 /* tape door is open */ 1711.1Sgmcgarry#define SR2_LONGREC 0x02 /* large record support (32k@1600, 60K@6250, 1721.1Sgmcgarry otherwise, it's 16K at all densities) */ 1731.1Sgmcgarry#define SR2_IMMED 0x01 /* Immediate Response (for writes) enabled */ 1741.1Sgmcgarry 1751.1Sgmcgarry#define SR3_1600 0x80 /* tape is 1600BPI */ 1761.1Sgmcgarry#define SR3_800 0x40 /* tape is 800BPI */ 1771.1Sgmcgarry#define SR3_POWERUP 0x20 /* power recently restored or Dev Clr done */ 1781.1Sgmcgarry#define SR3_HPIBPAR 0x10 /* HPIB command parity error detected */ 1791.1Sgmcgarry#define SR3_LOST 0x08 /* position on tape is unknown */ 1801.1Sgmcgarry#define SR3_FMTERR 0x04 /* formatter error - Reg 5 has info */ 1811.1Sgmcgarry#define SR3_SVOERR 0x02 /* motion servo error - Reg 4 has info */ 1821.1Sgmcgarry#define SR3_CTLERR 0x01 /* controller error - Reg 5 has info */ 1831.1Sgmcgarry 1841.1Sgmcgarry#define SR4_ERCLMASK 0xe0 /* Mask of error classes (for SR1_REJECT) */ 1851.1Sgmcgarry#define SR4_NONE 0x00 1861.1Sgmcgarry#define SR4_DEVICE 0x40 1871.1Sgmcgarry#define SR4_PROTOCOL 0x60 1881.1Sgmcgarry#define SR4_SELFTEST 0xe0 1891.1Sgmcgarry#define SR4_RETRYMASK 0x1f /* Mask for retry count (for any error) */ 1901.1Sgmcgarry 1911.1Sgmcgarry/* SR5 holds lots of error codes, referenced above. Complete list: 1921.1Sgmcgarry * (DEVICE REJECT) 1931.1Sgmcgarry * 5 Tape is write protected 1941.1Sgmcgarry * 6 Tape isn't loaded 1951.1Sgmcgarry * 7 Requested density not supported 1961.1Sgmcgarry * 9 Tape being read is unreadable 1971.1Sgmcgarry * 10 Tape being written is unidentifiable 1981.1Sgmcgarry * 11 Drive offline 1991.1Sgmcgarry * 16 Changing density while not at BOT 2001.1Sgmcgarry * 19 Backward motion requested while at BOT 2011.1Sgmcgarry * 23 Protocol out of sync 2021.1Sgmcgarry * 24 Unknown tape command 2031.1Sgmcgarry * 31 Write request too big for drive/density 2041.1Sgmcgarry * 32 Beyond EOT 2051.1Sgmcgarry * 33 Self Test Failure 2061.1Sgmcgarry * 37 Tape positioning failure while removing readaheads 2071.1Sgmcgarry * 40 Door open 2081.1Sgmcgarry * (UNRECOVERED DATA/FORMAT ERRORS) 2091.1Sgmcgarry * 41 Tape velocity out of spec 2101.1Sgmcgarry * 45 Multiple track data error 2111.1Sgmcgarry * 47 Write verify failed 2121.1Sgmcgarry * 48 Noise found while trying to detect data record 2131.1Sgmcgarry * 49 Data format error 2141.1Sgmcgarry * 50 Couldn't identify tape after rewind 2151.1Sgmcgarry * 51 Gap detected before end of data record 2161.1Sgmcgarry * 52 Data block dropout 2171.1Sgmcgarry * 53 CRC error 2181.1Sgmcgarry * 54 Parity error 2191.1Sgmcgarry * 55 Door open 2201.1Sgmcgarry * 57 Maximum skew exceeded 2211.1Sgmcgarry * 58 False data block detected 2221.1Sgmcgarry * 59 Corrected data error on write 2231.1Sgmcgarry * 60 Buffer overrun - record size on tape larger than supported 2241.1Sgmcgarry * 61 Data block timeout (possibly record length too long) 2251.1Sgmcgarry * 62 Tape mark dropout 2261.1Sgmcgarry * 63 Tape mark unverified 2271.1Sgmcgarry * 64 Tape mark timeout (no gap following tape mark) 2281.1Sgmcgarry * (POSITION or SERVO ERRORS) - these are ALL internal to tape drive 2291.1Sgmcgarry * 81 Servo unresponsive 2301.1Sgmcgarry * 82 Servo didn't respond with corect state 2311.1Sgmcgarry * 83 Servo shutdown 2321.1Sgmcgarry * 84 Servo detected hardware failure 2331.1Sgmcgarry * 85 Servo protocol error 2341.1Sgmcgarry * 86 Runtime Servo error 2351.1Sgmcgarry * 87 Missing position interrupt 2361.1Sgmcgarry * 88 No Gap after read or write 2371.1Sgmcgarry * 89 Motor shutdown for safety reasons 2381.1Sgmcgarry * 90 Couldn't find tape BOT mark 2391.1Sgmcgarry * 91 Drive motor running too fast or slow 2401.1Sgmcgarry * 92 Requested controller state invalid within context 2411.1Sgmcgarry * 94 Tape positioning failure 2421.1Sgmcgarry * (FORMATTER ERROR) 2431.1Sgmcgarry * 101,108 Read formatter unresponsive 2441.1Sgmcgarry * 102,107 Read formatter hardware error 2451.1Sgmcgarry * 103 Write detected bad block 2461.1Sgmcgarry * 104 Erase failure 2471.1Sgmcgarry * 105 No data detected after write 2481.1Sgmcgarry * 106 Tracks out of sync on write verify 2491.1Sgmcgarry * 109 No gap timeout 2501.1Sgmcgarry * 110 Formatter <--> data buffer byte count mismatch 2511.1Sgmcgarry * (CONTROLLER ERROR) - these are ALL internal to drive 2521.1Sgmcgarry * 121 Transaction ID mismatch (device vs. controller) 2531.1Sgmcgarry * 122 Devoce report has no coorepinding command 2541.1Sgmcgarry * 123 Invalid device report 2551.1Sgmcgarry * 124 Repost queue overflow 2561.1Sgmcgarry * 125 Unknown command from device 2571.1Sgmcgarry * 126 Command queue overflow 2581.1Sgmcgarry * 128 Missing End-Of-Record flag in data buffer 2591.1Sgmcgarry * 129 Data buffer parity error 2601.1Sgmcgarry * 130 Data buffer underrun during write 2611.1Sgmcgarry * 131 Byte count mismatch in data buffer queue 2621.1Sgmcgarry * 132 Bad message type from device 2631.1Sgmcgarry * 133 Abort between HPIB interface and channel program 2641.1Sgmcgarry * 134 Unknown HPIB interface exception 2651.1Sgmcgarry * 137 Illegal access to servo conntroller registers 2661.1Sgmcgarry * 138 Device program firmware error 2671.1Sgmcgarry * 139 Hardware utilities firmware error 2681.1Sgmcgarry * 140 Channel program firmware error 2691.1Sgmcgarry * 141 Encoder inoperative 2701.1Sgmcgarry * 150 Tape position synchronization error 2711.1Sgmcgarry * 151 Tape deblocking error (Xtra Capacity only) 2721.1Sgmcgarry * 152 Compression/Decompression hardware error (Xtra Capacity only) 2731.1Sgmcgarry * (PROTOCOL ERROR) - USUALLY indicates deficiency in driver 2741.1Sgmcgarry * 161 No room in Command Queue 2751.1Sgmcgarry * 162 Expected "request DSJ" 2761.1Sgmcgarry * 163 Expected status request 2771.1Sgmcgarry * 165 Unknown unit select 2781.1Sgmcgarry * 166 Tape command secondary expected 2791.1Sgmcgarry * 167 Data byte expected 2801.1Sgmcgarry * 168 Missing EOI on data byte 2811.1Sgmcgarry * 170 Write command phase protocol error 2821.1Sgmcgarry * 172 Read record report phase error 2831.1Sgmcgarry * 173 Report phase protocol error 2841.1Sgmcgarry * 174 Cold load sequence error 2851.1Sgmcgarry * 175 HPIB protocol sequence error 2861.1Sgmcgarry * 176 END command expected 2871.1Sgmcgarry * 178 END DATA expected 2881.1Sgmcgarry * 180 Unknown interface secondary command 2891.1Sgmcgarry * 181 Misplaced data byte 2901.1Sgmcgarry * 184 Interface Loopback protocol error 2911.1Sgmcgarry * 185 Self test protocol error 2921.1Sgmcgarry * 188 HPIB parity error 2931.1Sgmcgarry * 189 Operator reset during protocol sequence 2941.1Sgmcgarry * 190 Device clear received 2951.1Sgmcgarry */ 2961.1Sgmcgarry 2971.1Sgmcgarry/* SR6 is count of commands accepted since Immediate Response command failed */ 298