[BACK]Return to mtreg.h CVS log [TXT][DIR] Up to [local] / sys / arch / hp300 / dev

Annotation of sys/arch/hp300/dev/mtreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: mtreg.h,v 1.4 2005/01/15 21:13:08 miod Exp $  */
                      2: /*     $NetBSD: mtreg.h,v 1.1 1995/10/02 00:28:22 thorpej Exp $        */
                      3:
                      4: /*
                      5:  * Copyright (c) 1992, The University of Utah and
                      6:  * the Computer Systems Laboratory at the University of Utah (CSL).
                      7:  * All rights reserved.
                      8:  *
                      9:  * Permission to use, copy, modify and distribute this software is hereby
                     10:  * granted provided that (1) source code retains these copyright, permission,
                     11:  * and disclaimer notices, and (2) redistributions including binaries
                     12:  * reproduce the notices in supporting documentation, and (3) all advertising
                     13:  * materials mentioning features or use of this software display the following
                     14:  * acknowledgement: ``This product includes software developed by the
                     15:  * Computer Systems Laboratory at the University of Utah.''
                     16:  *
                     17:  * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
                     18:  * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
                     19:  * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     20:  *
                     21:  * CSL requests users of this software to return to csl-dist@cs.utah.edu any
                     22:  * improvements that they make and grant CSL redistribution rights.
                     23:  *
                     24:  *     Utah $Hdr: mtreg.h 1.4 95/09/12$
                     25:  */
                     26: /*     @(#)mtreg.h     3.4     90/07/10        mt Xinu
                     27:  *
                     28:  *     Hewlett-Packard 7974, 7978, 7979 and 7980 HPIB Mag-Tape declarations.
                     29:  */
                     30:
                     31: /*
                     32:  *     Hardware Id's
                     33:  */
                     34:
                     35: #define MT7974AID      0x174
                     36: #define MT7978ID       0x178
                     37: #define MT7979AID      0x179
                     38: #define MT7980ID       0x180
                     39:
                     40: /* convert bytes to 1k tape block and back */
                     41: #define CTBTOK(x)      ((x) >> 10)
                     42: #define CTKTOB(x)      ((x) << 10)
                     43:
                     44: /*
                     45:  *     Listen Secondary Commands
                     46:  */
                     47:
                     48: #define MTL_WRITE      0       /* write execute */
                     49: #define MTL_TCMD       1       /* tape command */
                     50: #define MTL_DIAG       4       /* download diagnostic */
                     51: #define MTL_FUP                6       /* write firmware update */
                     52: #define MTL_ECMD       7       /* end command */
                     53: #define MTL_DCL                16      /* amigo device clear */
                     54: #define MTL_CCRC       17      /* clear CRC */
                     55: #define MTL_XTEST      29      /* run 7979a/7980 extended self test */
                     56: #define MTL_LOOP       30      /* write interface loopback */
                     57: #define MTL_TEST       31      /* run self test */
                     58:
                     59: /*
                     60:  *     Talk Secondary Commands
                     61:  */
                     62:
                     63: #define MTT_READ       0       /* read execute */
                     64: #define MTT_STAT       1       /* read status */
                     65: #define MTT_BCNT       2       /* read byte count */
                     66: #define MTT_DIAG       3       /* read diagnostic results */
                     67: #define MTT_FREV       4       /* read firmware revisions (7980xc) */
                     68: #define MTT_LOG                5       /* read diagnostic log */
                     69: #define MTT_FUP                6       /* read firmware update */
                     70: #define MTT_XSTAT      15      /* read extended status (7979a/7980a) */
                     71: #define MTT_DSJ                16      /* read DSJ (device specified jump) */
                     72: #define MTT_RCRC       17      /* read CRC */
                     73: #define MTT_XTEST      29      /* read 7979a/7980 extended self test */
                     74: #define MTT_LOOP       30      /* read interface loopback */
                     75: #define MTT_TEST       31      /* read self test */
                     76:
                     77: /*
                     78:  *     Tape commands
                     79:  */
                     80:
                     81: #define MTTC_SEL0      0       /* Select Unit 0 (native protocol) */
                     82: #define MTTC_WRITE     5       /* Write Record */
                     83: #define MTTC_WFM       6       /* Write File Mark */
                     84: #define MTTC_WGAP      7       /* Write Gap */
                     85: #define MTTC_READ      8       /* Read record */
                     86: #define MTTC_FSR       9       /* forward space record */
                     87: #define MTTC_BSR       10      /* backward space record */
                     88: #define MTTC_FSF       11      /* forward space file */
                     89: #define MTTC_BSF       12      /* backward space file */
                     90: #define MTTC_REW       13      /* rewind */
                     91: #define MTTC_REWOFF    14      /* rewind and go offline */
                     92: #define MTTC_DC6250    15      /* set data compressed 6250 */
                     93: #define MTTC_6250      16      /* set 6250 bpi */
                     94: #define MTTC_1600      17      /* set 1600 bpi */
                     95: #define MTTC_800       18      /* set 800 bpi */
                     96: #define MTTC_NC6250    19      /* set non-compressed 6250 */
                     97: #define MTTC_STSTP     20      /* start/stop mode only */
                     98: #define MTTC_STRM      21      /* enable streaming */
                     99: #define MTTC_DIRM      22      /* disable immediate report mode */
                    100: #define MTTC_EIRM      23      /* enable immediate report mode */
                    101: #define MTTC_STAT      24      /* request status */
                    102: #define MTTC_RLD       25      /* remote load */
                    103: #define MTTC_RUNLD     26      /* remote unload */
                    104: #define MTTC_RON       28      /* remote online */
                    105: #define MTTC_DDC       30      /* disable data compression */
                    106: #define MTTC_EDC       31      /* enable data compression */
                    107:
                    108: /*
                    109:  *     End Command Bits (of any interest)
                    110:  */
                    111: #define        MTE_COMPLETE    0x08    /* "marks the end of the report phase" */
                    112: #define        MTE_IDLE        0x04    /* enables parallel poll resp. for online */
                    113: #define        MTE_STOP        0x02    /* aborts transfer of "read" data */
                    114:
                    115: #define        MTE_DSJ_FORCE   0x100   /* XXX During readDSJ, force a status fetch */
                    116:
                    117:
                    118: struct mt_stat {
                    119:        u_char  m_stat[6];
                    120: };
                    121:
                    122: /* sc_flags */
                    123: #define        MTF_OPEN        0x0001  /* drive is in use (single-access device) */
                    124: #define        MTF_EXISTS      0x0002  /* device was found at boot time */
                    125: #define        MTF_ALIVE       0x0004  /* drive actually talks to us */
                    126: #define        MTF_WRT         0x0008  /* last command was a WRITE */
                    127: #define        MTF_IO          0x0010  /* next interrupt should start I/O (DMA) */
                    128: #define        MTF_REW         0x0020  /* tape is rewinding - must wait for it */
                    129: #define        MTF_HITEOF      0x0040  /* last read or FSR hit EOF (file mark) */
                    130: #define        MTF_HITBOF      0x0080  /* last BSR hit EOF (file mark) */
                    131: #define        MTF_ATEOT       0x0100  /* tape hit EOT - can allow one forward op */
                    132: #define        MTF_PASTEOT     0x0200  /* tape is beyond EOT - force backward motion */
                    133: #define        MTF_DSJTIMEO    0x0400  /* timed out hpibrecv()ing DSJ - continue it */
                    134: #define        MTF_STATTIMEO   0x0800  /* timed out receiving STATUS - continue it */
                    135: #define        MTF_STATCONT    0x1000  /* STATTIMEO is continuable */
                    136:
                    137: /* additional "mtcommand"s */
                    138: #define MTRESET                16      /* reset the thing from scratch */
                    139: #define MTSET800BPI    17      /* density select */
                    140: #define MTSET1600BPI   18
                    141: #define MTSET6250BPI   19
                    142: #define MTSET6250DC    20      /* (data compressed - MT7980ID only) */
                    143:
                    144: /* status bytes */
                    145: #define sc_stat1       sc_stat.m_stat[0]
                    146: #define sc_stat2       sc_stat.m_stat[1]
                    147: #define sc_stat3       sc_stat.m_stat[2]
                    148: #define sc_stat4       sc_stat.m_stat[3]
                    149: #define sc_stat5       sc_stat.m_stat[4]
                    150: #define sc_stat6       sc_stat.m_stat[5]
                    151:
                    152: /*
                    153:  *     Status Register definitions
                    154:  */
                    155:
                    156: #define        SR1_EOF         0x80    /* positioned at File Mark */
                    157: #define        SR1_BOT         0x40    /* positioned at Beginning of Tape */
                    158: #define        SR1_EOT         0x20    /* positioned at End of Tape */
                    159: #define        SR1_SOFTERR     0x10    /* Recoverable Error has Occured */
                    160: #define        SR1_REJECT      0x08    /* HPIB Cmd rejected - Regs 4 & 5 have info */
                    161: #define        SR1_RO          0x04    /* No Write Ring */
                    162: #define        SR1_ERR         0x02    /* Unrecoverable Data error - Reg 5 has info */
                    163: #define        SR1_ONLINE      0x01    /* Drive Online (must be to do any operation) */
                    164:
                    165: #define        SR2_6250        0x80    /* tape is 6250BPI */
                    166: #define        SR2_UNKDEN      0x40    /* non-blank tape is of unknown density */
                    167: #define        SR2_PARITY      0x20    /* internal bus data parity error detected */
                    168: #define        SR2_OVERRUN     0x10    /* data buffer overrun (not possible?) */
                    169: #define        SR2_RUNAWAY     0x08    /* during read, no data detected on tape */
                    170: #define        SR2_OPEN        0x04    /* tape door is open */
                    171: #define        SR2_LONGREC     0x02    /* large record support (32k@1600, 60K@6250,
                    172:                                   otherwise, it's 16K at all densities) */
                    173: #define        SR2_IMMED       0x01    /* Immediate Response (for writes) enabled */
                    174:
                    175: #define        SR3_1600        0x80    /* tape is 1600BPI */
                    176: #define        SR3_800         0x40    /* tape is 800BPI */
                    177: #define        SR3_POWERUP     0x20    /* power recently restored or Dev Clr done */
                    178: #define        SR3_HPIBPAR     0x10    /* HPIB command parity error detected */
                    179: #define        SR3_LOST        0x08    /* position on tape is unknown */
                    180: #define        SR3_FMTERR      0x04    /* formatter error - Reg 5 has info */
                    181: #define        SR3_SVOERR      0x02    /* motion servo error - Reg 4 has info */
                    182: #define        SR3_CTLERR      0x01    /* controller error - Reg 5 has info */
                    183:
                    184: #define SR4_ERCLMASK   0xe0    /* Mask of error classes (for SR1_REJECT) */
                    185: #define SR4_NONE       0x00
                    186: #define SR4_DEVICE     0x40
                    187: #define SR4_PROTOCOL   0x60
                    188: #define SR4_SELFTEST   0xe0
                    189: #define        SR4_RETRYMASK   0x1f    /* Mask for retry count (for any error) */
                    190:
                    191: /* SR5 holds lots of error codes, referenced above.  Complete list:
                    192:  * (DEVICE REJECT)
                    193:  *       5     Tape is write protected
                    194:  *       6     Tape isn't loaded
                    195:  *       7     Requested density not supported
                    196:  *       9     Tape being read is unreadable
                    197:  *      10     Tape being written is unidentifiable
                    198:  *      11     Drive offline
                    199:  *      16     Changing density while not at BOT
                    200:  *      19     Backward motion requested while at BOT
                    201:  *      23     Protocol out of sync
                    202:  *      24     Unknown tape command
                    203:  *      31     Write request too big for drive/density
                    204:  *      32     Beyond EOT
                    205:  *      33     Self Test Failure
                    206:  *      37     Tape positioning failure while removing readaheads
                    207:  *      40     Door open
                    208:  * (UNRECOVERED DATA/FORMAT ERRORS)
                    209:  *      41     Tape velocity out of spec
                    210:  *      45     Multiple track data error
                    211:  *      47     Write verify failed
                    212:  *      48     Noise found while trying to detect data record
                    213:  *      49     Data format error
                    214:  *      50     Couldn't identify tape after rewind
                    215:  *      51     Gap detected before end of data record
                    216:  *      52     Data block dropout
                    217:  *      53     CRC error
                    218:  *      54     Parity error
                    219:  *      55     Door open
                    220:  *      57     Maximum skew exceeded
                    221:  *      58     False data block detected
                    222:  *      59     Corrected data error on write
                    223:  *      60     Buffer overrun - record size on tape larger than supported
                    224:  *      61     Data block timeout (possibly record length too long)
                    225:  *      62     Tape mark dropout
                    226:  *      63     Tape mark unverified
                    227:  *      64     Tape mark timeout (no gap following tape mark)
                    228:  * (POSITION or SERVO ERRORS) - these are ALL internal to tape drive
                    229:  *      81     Servo unresponsive
                    230:  *      82     Servo didn't respond with corect state
                    231:  *      83     Servo shutdown
                    232:  *      84     Servo detected hardware failure
                    233:  *      85     Servo protocol error
                    234:  *      86     Runtime Servo error
                    235:  *      87     Missing position interrupt
                    236:  *      88     No Gap after read or write
                    237:  *      89     Motor shutdown for safety reasons
                    238:  *      90     Couldn't find tape BOT mark
                    239:  *      91     Drive motor running too fast or slow
                    240:  *      92     Requested controller state invalid within context
                    241:  *      94     Tape positioning failure
                    242:  * (FORMATTER ERROR)
                    243:  *     101,108 Read formatter unresponsive
                    244:  *     102,107 Read formatter hardware error
                    245:  *     103     Write detected bad block
                    246:  *     104     Erase failure
                    247:  *     105     No data detected after write
                    248:  *     106     Tracks out of sync on write verify
                    249:  *     109     No gap timeout
                    250:  *     110     Formatter <--> data buffer byte count mismatch
                    251:  * (CONTROLLER ERROR) - these are ALL internal to drive
                    252:  *     121     Transaction ID mismatch (device vs. controller)
                    253:  *     122     Devoce report has no coorepinding command
                    254:  *     123     Invalid device report
                    255:  *     124     Repost queue overflow
                    256:  *     125     Unknown command from device
                    257:  *     126     Command queue overflow
                    258:  *     128     Missing End-Of-Record flag in data buffer
                    259:  *     129     Data buffer parity error
                    260:  *     130     Data buffer underrun during write
                    261:  *     131     Byte count mismatch in data buffer queue
                    262:  *     132     Bad message type from device
                    263:  *     133     Abort between HPIB interface and channel program
                    264:  *     134     Unknown HPIB interface exception
                    265:  *     137     Illegal access to servo conntroller registers
                    266:  *     138     Device program firmware error
                    267:  *     139     Hardware utilities firmware error
                    268:  *     140     Channel program firmware error
                    269:  *     141     Encoder inoperative
                    270:  *     150     Tape position synchronization error
                    271:  *     151     Tape deblocking error (Xtra Capacity only)
                    272:  *     152     Compression/Decompression hardware error (Xtra Capacity only)
                    273:  * (PROTOCOL ERROR) - USUALLY indicates deficiency in driver
                    274:  *     161     No room in Command Queue
                    275:  *     162     Expected "request DSJ"
                    276:  *     163     Expected status request
                    277:  *     165     Unknown unit select
                    278:  *     166     Tape command secondary expected
                    279:  *     167     Data byte expected
                    280:  *     168     Missing EOI on data byte
                    281:  *     170     Write command phase protocol error
                    282:  *     172     Read record report phase error
                    283:  *     173     Report phase protocol error
                    284:  *     174     Cold load sequence error
                    285:  *     175     HPIB protocol sequence error
                    286:  *     176     END command expected
                    287:  *     178     END DATA expected
                    288:  *     180     Unknown interface secondary command
                    289:  *     181     Misplaced data byte
                    290:  *     184     Interface Loopback protocol error
                    291:  *     185     Self test protocol error
                    292:  *     188     HPIB parity error
                    293:  *     189     Operator reset during protocol sequence
                    294:  *     190     Device clear received
                    295:  */
                    296:
                    297: /* SR6 is count of commands accepted since Immediate Response command failed */

CVSweb