[BACK]Return to tsreg.h CVS log [TXT][DIR] Up to [local] / sys / arch / vax / uba

Annotation of sys/arch/vax/uba/tsreg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: tsreg.h,v 1.2 1997/05/29 00:05:09 niklas Exp $ */
                      2: /*     $NetBSD: tsreg.h,v 1.1 1996/01/06 16:43:47 ragge Exp $ */
                      3: /*
                      4:  * Copyright (c) 1995 Ludd, University of Lule}, Sweden.
                      5:  * All rights reserved.
                      6:  *
                      7:  * This code is derived from software contributed to Ludd by
                      8:  * Bertram Barth.
                      9:  *
                     10:  * Redistribution and use in source and binary forms, with or without
                     11:  * modification, are permitted provided that the following conditions
                     12:  * are met:
                     13:  * 1. Redistributions of source code must retain the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer.
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in the
                     17:  *    documentation and/or other materials provided with the distribution.
                     18:  * 3. All advertising materials mentioning features or use of this software
                     19:  *    must display the following acknowledgement:
                     20:  *      This product includes software developed at Ludd, University of
                     21:  *      Lule}, Sweden and its contributors.
                     22:  * 4. The name of the author may not be used to endorse or promote products
                     23:  *    derived from this software without specific prior written permission
                     24:  *
                     25:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     26:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     27:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     28:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     29:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     30:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     31:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     32:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     33:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     34:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     35:  */
                     36:
                     37: /*
                     38:  * TSV05 u.g. 5-11:
                     39:  *
                     40:  * The TSV05 Subsystem has four device registers that occupy only two
                     41:  * LSI-11 Bus word locations: a Data Buffer (TSDB), a Bus Address
                     42:  * Register (TSBA), a Status Register (TSSR), and an Extended Data
                     43:  * Bufffer (TSDBX). The TSDB is an 18-bit register that is ...
                     44:  */
                     45:
                     46: struct tsdevice {
                     47:        unsigned short tsdb;/* Data Buffer (TSDB)/Bus Address Register (TSBA) */
                     48:        unsigned short tssr;/* Status Reg. (TSSR)/Extended Data Buffer(TSDBX) */
                     49: };
                     50:
                     51: /*
                     52:  * TSSR Register bit definitions
                     53:  */
                     54: #define TS_SC  0x8000  /* Special Condition */
                     55: #define TS_UPE 0x4000  /* not used in TSV05, UPE in TS11 */
                     56: #define TS_SCE 0x2000  /* Sanity Check Error, SPE in TS11 */
                     57: #define TS_RMR 0x1000  /* Register Modification Refused */
                     58: #define TS_NXM 0x0800  /* Nonexistent Memory */
                     59: #define TS_NBA 0x0400  /* Need Buffer Address */
                     60: #define TS_A11 0x0300  /* Address Bits 17-16 */
                     61: #define TS_SSR 0x0080  /* Subsystem Ready */
                     62: #define TS_OFL 0x0040  /* Off Line */
                     63: #define TS_FTC 0x0030  /* Fatal Termination Class Code */
                     64: #define TS_TC  0x000E  /* Termination Class Code */
                     65: #define TS_NU  0x0001  /* Not Used */
                     66:
                     67: #define TS_TSSR_BITS   "\20\20SC\17UPE\16SCE\15RMR\14NXM\13NBA\12A17\11A16" \
                     68:                           "\10SSR\7OFL\6FTC\5FTC\4FTL\3ERR\2ATTN\1NU"
                     69:
                     70: /*
                     71:  * Termination Codes
                     72:  */
                     73: #define TS_FTC_IDF     (0<<4)  /* internal diagnostic failure */
                     74: #define TS_FTC_RSVD    (1<<4)  /* Reserved */
                     75: #define TS_FTC_NU      (2<<4)  /* Not Used */
                     76: #define TS_FTC_DPD     (3<<4)  /* Detection of Power Down (not implemented) */
                     77:
                     78: #define TS_TC_NORM     (0<<1)  /* Normal Termination */
                     79: #define TS_TC_ATTN     (1<<1)  /* Attention Condition */
                     80: #define TS_TC_TSA      (2<<1)  /* Tape status alert */
                     81: #define TS_TC_FR       (3<<1)  /* Function reject */
                     82: #define TS_TC_TPD      (4<<1)  /* Tape position is one record down (recov.) */
                     83: #define TS_TC_TNM      (5<<1)  /* Tape not moved (recoverable) */
                     84: #define TS_TC_TPL      (6<<1)  /* Tape position lost (unrecoverable) */
                     85: #define TS_TC_FCE      (7<<1)  /* Fatal Controller Error (see FTC) */
                     86:
                     87: struct tscmd {                 /* command packet (not all words required) */
                     88:        unsigned short cmdr;    /* command word */
                     89:        unsigned short cw1;     /* low order data pointer address  (A15-00) */
                     90:        unsigned short cw2;     /* high order data pointer address (A21-16) */
                     91:        unsigned short cw3;     /* count parameter */
                     92: };
                     93:
                     94: /*
                     95:  * Command flags
                     96:  */
                     97: #define TS_CF_ACK      (1<<15)         /* Acknowledge */
                     98: #define TS_CF_CVC      (1<<14)         /* Clear Volume Check */
                     99: #define TS_CF_OPP      (1<<13)         /* Opposite */
                    100: #define TS_CF_SWB      (1<<12)         /* Swap Bytes */
                    101: #define TS_CF_IE       (1<< 7)         /* Interrupt Enable */
                    102: #define TS_CF_CMODE    0x0F00          /* Command Mode Field */
                    103: #define TS_CF_CCODE    0x001F          /* Command Code (major) */
                    104: #define TS_CF_CMASK    0x0F1F          /* mask for complete command */
                    105:
                    106: #define TS_CMD(cMode,cCode)    ((cMode<<8)|cCode)
                    107:
                    108: #define TS_CC_READ     0x01                    /* READ */
                    109: #define TS_CMD_RNF     TS_CMD(0,TS_CC_READ)    /* Read Next (Forward) */
                    110: #define TS_CMD_RPR     TS_CMD(1,TS_CC_READ)    /* Read Previous (Reverse) */
                    111: #define TS_CMD_RPF     TS_CMD(2,TS_CC_READ)    /* Read Previous (Forward) */
                    112: #define TS_CMD_RNR     TS_CMD(3,TS_CC_READ)    /* Read Next (Reverse) */
                    113:
                    114: #define TS_CC_WCHAR    0x04                    /* WRITE CHARACTERISTICS */
                    115: #define TS_CMD_WCHAR   TS_CMD(0,TS_CC_WCHAR)   /* Load msg-buffer etc. */
                    116:
                    117: #define TS_CC_WRITE    0x05                    /* WRITE */
                    118: #define TS_CMD_WD      TS_CMD(0,TS_CC_WRITE)   /* Write Data (Next) */
                    119: #define TS_CMD_WDR     TS_CMD(1,TS_CC_WRITE)   /* Write Data (Retry) */
                    120:
                    121: #define TS_CC_WSM      0x06                    /* WRITE SUBSYSTEM MEMORY */
                    122: #define TS_CMD_WSM     TS_CMD(0,TS_CC_WSM)     /* (diagnostics only) */
                    123:
                    124: #define TS_CC_POS      0x08                    /* POSITION */
                    125: #define TS_CMD_SRF     TS_CMD(0,TS_CC_POS)     /* Space Records Forward */
                    126: #define TS_CMD_SRR     TS_CMD(1,TS_CC_POS)     /* Space Records Reverse */
                    127: #define TS_CMD_STMF    TS_CMD(2,TS_CC_POS)     /* Skip Tape Marks Forward */
                    128: #define TS_CMD_STMR    TS_CMD(3,TS_CC_POS)     /* Skip Tape Marks Reverse */
                    129: #define TS_CMD_RWND    TS_CMD(4,TS_CC_POS)     /* Rewind */
                    130:
                    131: #define TS_CC_FRMT     0x09                    /* FORMAT */
                    132: #define TS_CMD_WTM     TS_CMD(0,TS_CC_FRMT)    /* Write Tape Mark */
                    133: #define TS_CMD_ETM     TS_CMD(1,TS_CC_FRMT)    /* Erase */
                    134: #define TS_CMD_WTMR    TS_CMD(2,TS_CC_FRMT)    /* Write Tape Mark (Retry) */
                    135:
                    136: #define TS_CC_CTRL     0x0A                    /* CONTROL */
                    137: #define TS_CMD_MBR     TS_CMD(0,TS_CC_CTRL)    /* Message Buffer Release */
                    138: #define TS_CMD_RWUL    TS_CMD(1,TS_CC_CTRL)    /* Rewind and Unload */
                    139: #define TS_CMD_NOP     TS_CMD(2,TS_CC_CTRL)    /* NO-OP (TS11: clean tape) */
                    140: #define TS_CMD_RWII    TS_CMD(4,TS_CC_CTRL)    /* Rewind with intermediate */
                    141:                                                /* interrupt (TS11: N.A.) */
                    142: #define TS_CC_INIT     0x0B                    /* INITIALIZE */
                    143: #define TS_CMD_INIT    TS_CMD(0,TS_CC_INIT)    /* Controller/Drive Initial. */
                    144:
                    145: #define TS_CC_STAT     0x0F                    /* GET STATUS */
                    146: #define TS_CMD_STAT    TS_CMD(0,TS_CC_STAT)    /* Get Status (END) */
                    147:
                    148: struct tsmsg {                 /* message packet */
                    149:        unsigned short hdr;     /* ACK, class-code, format 1, message type */
                    150:        unsigned short dfl;     /* data field length (8 bit) */
                    151:        unsigned short rbpcr;   /* residual b/r/tm count word */
                    152:        unsigned short xst0;    /* Extended Status Registers 0-4 */
                    153:        unsigned short xst1;
                    154:        unsigned short xst2;
                    155:        unsigned short xst3;
                    156:        unsigned short xst4;    /* total size: 16 bytes */
                    157: };
                    158:
                    159: /*
                    160:  * Flags used in write-characteristics command
                    161:  */
                    162: #define TS_WC_ESS      (1<<7)  /* Enable Skip Tape Marks Stop */
                    163: #define TS_WC_ENB      (1<<6)  /* Enable Tape Mark Stop at Bot */
                    164: #define TS_WC_EAI      (1<<5)  /* Enable Attention interrupts */
                    165: #define TS_WC_ERI      (1<<4)  /* Enable Message Buffer Release interrupts */
                    166: #define TS_WC_HSP      (1<<5)  /* High Speed Select (25 in/s vs. 100 in/s) */
                    167:
                    168: /*
                    169:  * Status flags
                    170:  *
                    171:  * Extended Status register 0 (XST0)  --  XST0 appears as the fourth word
                    172:  * in the message buffer stored by the TSV05 subsystem upon completion of
                    173:  * a command or an ATTN
                    174:  */
                    175: #define TS_SF_TMK      (1<<15) /* Tape Mark Detected */
                    176: #define TS_SF_RLS      (1<<14) /* Record Length Short */
                    177: #define TS_SF_LET      (1<<13) /* Logical End of Tape */
                    178: #define TS_SF_RLL      (1<<12) /* Record Length Long */
                    179: #define TS_SF_WLE      (1<<11) /* Write Lock Error */
                    180: #define TS_SF_NEF      (1<<10) /* Nonexecutable Function */
                    181: #define TS_SF_ILC      (1<< 9) /* Illegal Command */
                    182: #define TS_SF_ILA      (1<< 8) /* Illegal Address */
                    183: #define TS_SF_MOT      (1<< 7) /* Motion */
                    184: #define TS_SF_ONL      (1<< 6) /* On-Line */
                    185: #define TS_SF_IE       (1<< 5) /* Interrupt Enable */
                    186: #define TS_SF_VCK      (1<< 4) /* Volume Check */
                    187: #define TS_SF_PED      (1<< 3) /* Phase Encoded Drive */
                    188: #define TS_SF_WLK      (1<< 2) /* Write Locked */
                    189: #define TS_SF_BOT      (1<< 1) /* Beginning of Tape */
                    190: #define TS_SF_EOT      (1<< 0) /* End of Tape */
                    191:
                    192: #define TS_XST0_BITS   "\20\20TMK\17RLS\16LET\15RLL\14WLE\13NEF\12ILC\11ILA" \
                    193:                           "\10MOT\07ONL\06IE \05VCK\04PED\03WLK\02BOT\01EOT"
                    194: /*
                    195:  * Extended Status register 1 (XST1)  --  XST1 appears as the fifth word
                    196:  * in the message buffer stored by the TSV05 subsystem upon completion of
                    197:  * a command or an ATTN
                    198:  */
                    199: #define TS_SF_DLT      (1<<15) /* Data Late */
                    200: #define TS_SF_COR      (1<<13) /* Correctable Data */
                    201: #define TS_SF_CRS      (1<<12) /* TS11: Crease Detected */
                    202: #define TS_SF_TIG      (1<<11) /* TS11: Trash in Gap */
                    203: #define TS_SF_DBF      (1<<10) /* TS11: Desckew Buffer Fail */
                    204: #define TS_SF_SCK      (1<< 9) /* TS11: Speed Check */
                    205: #define TS_SF_RBP      (1<< 8) /* Read Bus Parity Error */
                    206: #define TS_SF_IPR      (1<< 7) /* TS11: Invalid Preamble */
                    207: #define TS_SF_IPO      (1<< 6) /* TS11: Invalid Postamble */
                    208: #define TS_SF_SYN      (1<< 5) /* TS11: Sync Failure */
                    209: #define TS_SF_IED      (1<< 4) /* TS11: Invalid End Data */
                    210: #define TS_SF_POS      (1<< 3) /* TS11: Postamble short */
                    211: #define TS_SF_POL      (1<< 2) /* TS11: Postamble long */
                    212: #define TS_SF_UNC      (1<< 1) /* Uncorrectable Data or Hard Error */
                    213: #define TS_SF_MTE      (1<< 0) /* TS11: Multitrack Error */
                    214:
                    215: #define TS_XST1_BITS   "\20\20DLT\16COR\15CRS\14TIG\13DBF\12SCK\11RBP" \
                    216:                           "\10IPR\07IPO\06SYN\05IED\04POS\03POL\02UNC\01MTE"
                    217:
                    218: /*
                    219:  * Extended Status register 2 (XST2)  --  sixth word
                    220:  */
                    221: #define TS_SF_OPM      (1<<15) /* Operation in Progress (tape moving) */
                    222: #define TS_SF_RCE      (1<<14) /* RAM Checksum Error */
                    223: #define TS_SF_SBP      (1<<13) /* TS11: Serial 08 bus parity */
                    224: #define TS_SF_CAF      (1<<12) /* TS11: Capstan Acceleration fail */
                    225: #define TS_SF_WCF      (1<<10) /* Write Clock Failure */
                    226: #define TS_SF_PDT      (1<< 8) /* TS11: Parity Dead Track */
                    227: #define TS_SF_RL       0x00FF  /* Revision Level */
                    228: #define TS_SF_EFES     (1<< 7) /* extended features enable switch */
                    229: #define TS_SF_BES      (1<< 6) /* Buffering enable switch */
                    230: #define TS_SF_MCRL     0x003F  /* micro-code revision level */
                    231: #define TS_SF_UNIT     0x0003  /* unit number of selected transport */
                    232:
                    233: #define TS_XST2_BITS   "\20\20OPM\17RCE\16SBP\15CAF\13WCF\11PDT\10EFES\7BES"
                    234:
                    235: /*
                    236:  * Extended Status register 3 (XST3))  --  seventh word
                    237:  */
                    238: #define TS_SF_MDE      0xFF00  /* Micro-Diagnostics Error Code */
                    239: #define TS_SF_LMX      (1<< 7) /* TS11: Tension Arm Limit Exceeded */
                    240: #define TS_SF_OPI      (1<< 6) /* Operation Incomplete */
                    241: #define TS_SF_REV      (1<< 5) /* Revers */
                    242: #define TS_SF_CRF      (1<< 4) /* TS11: Capstan Response Failure */
                    243: #define TS_SF_DCK      (1<< 3) /* Density Check */
                    244: #define TS_SF_NBE      (1<< 2) /* TS11: Noise Bit during Erase */
                    245: #define TS_SF_LSA      (1<< 1) /* TS11: Limit Switch Activated */
                    246: #define TS_SF_RIB      (1<< 0) /* Reverse into BOT */
                    247:
                    248: #define TS_XST3_BITS   "\20\10LMX\07OPI\06REV\05CRF\04DCK\03NBE\02LSA\01RIB"
                    249:
                    250: /*
                    251:  * Extended Status register 4 (XST4))  --  eighth word
                    252:  */
                    253: #define TS_SF_HSP      (1<<15) /* High Speed */
                    254: #define TS_SF_RCX      (1<<14) /* Retry Count Exceeded */
                    255: #define TS_SF_WRC      0x00FF  /* Write Retry Count Statistics */
                    256:
                    257: #define TS_XST4_BITS   "\20\20HSP\17RCX"
                    258:
                    259:

CVSweb