[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     ! 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