1 /* 2 * Copyright (c) 1982, 1990 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. All advertising materials mentioning features or use of this software 14 * must display the following acknowledgement: 15 * This product includes software developed by the University of 16 * California, Berkeley and its contributors. 17 * 4. Neither the name of the University nor the names of its contributors 18 * may be used to endorse or promote products derived from this software 19 * without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * @(#)ctreg.h 7.1 (Berkeley) 5/8/90 34 */ 35 36 struct ct_iocmd { 37 char unit; 38 char saddr; 39 short addr0; 40 long addr; 41 char nop2; 42 char slen; 43 long len; 44 char nop3; 45 char cmd; 46 }; 47 48 struct ct_rscmd { 49 char unit; 50 char cmd; 51 }; 52 53 struct ct_stat { 54 char c_vu; 55 char c_pend; 56 short c_ref; 57 short c_fef; 58 short c_aef; 59 short c_ief; 60 short c_blk0; 61 long c_blk; 62 char c_pad[4]; 63 }; 64 65 struct ct_ssmcmd { 66 char unit; 67 char cmd; 68 short refm; 69 short fefm; 70 short aefm; 71 short iefm; 72 }; 73 74 struct ct_srcmd { 75 char unit; 76 char nop; 77 char cmd; 78 char param; 79 }; 80 81 struct ct_soptcmd { 82 char unit; 83 char nop; 84 char cmd; 85 char opt; 86 }; 87 88 struct ct_ulcmd { 89 char unit; 90 char cmd; 91 }; 92 93 struct ct_wfmcmd { 94 char unit; 95 char cmd; 96 }; 97 98 struct ct_clearcmd { 99 char unit; 100 char cmd; 101 }; 102 103 struct ct_describe { 104 u_int d_iuw:16, /* controller: installed unit word */ 105 d_cmaxxfr:16, /* controller: max transfer rate (Kb) */ 106 d_ctype:8, /* controller: controller type */ 107 d_utype:8, /* unit: unit type */ 108 d_name:24, /* unit: name (6 BCD digits) */ 109 d_sectsize:16, /* unit: # of bytes per block (sector) */ 110 d_blkbuf:8, /* unit: # of blocks which can be buffered */ 111 d_burstsize:8, /* unit: recommended burst size */ 112 d_blocktime:16, /* unit: block time (u-sec) */ 113 d_uavexfr:16, /* unit: average transfer rate (Kb) */ 114 d_retry:16, /* unit: optimal retry time (1/100-sec) */ 115 d_access:16, /* unit: access time param (1/100-sec) */ 116 d_maxint:8, /* unit: maximum interleave */ 117 d_fvbyte:8, /* unit: fixed volume byte */ 118 d_rvbyte:8, /* unit: removeable volume byte */ 119 d_maxcyl:24, /* volume: maximum cylinder */ 120 d_maxhead:8, /* volume: maximum head */ 121 d_maxsect:16, /* volume: maximum sector on track */ 122 d_maxvsecth:16, /* volume: maximum sector on volume (MSW) */ 123 d_maxvsectl:32, /* volume: maximum sector on volume (LSWs) */ 124 d_interleave:8; /* volume: current interleave */ 125 }; 126 127 #define CT7946ID 0x220 128 #define CT9145ID 0x268 129 #define CT9144ID 0x260 130 #define CT9144 0 131 #define CT7912PID 0x209 132 #define CT7914PID 0x20B 133 #define CT88140 1 134 135 /* convert bytes to 1k tape block and back */ 136 #define CTBTOK(x) ((x) >> 10) 137 #define CTKTOB(x) ((x) << 10) 138 139 #define CTCTLR 15 140 141 #define REF_MASK 0x0 142 #define FEF_MASK 0x0 143 #define AEF_MASK 0x0 144 #define IEF_MASK 0xF970 145 146 #define FEF_PF 0x0002 147 #define FEF_REXMT 0x0001 148 #define AEF_EOF 0x0010 149 #define AEF_EOV 0x0008 150 151 #define C_READ 0x00 152 #define C_WRITE 0x02 153 #define C_CLEAR 0x08 154 #define C_STATUS 0x0d 155 #define C_SADDR 0x10 156 #define C_SLEN 0x18 157 #define C_SUNIT(x) (0x20 | (x)) 158 #define C_SVOL(x) (0x40 | (x)) 159 #define C_NOP 0x34 160 #define C_DESC 0x35 161 #define C_SOPT 0x38 162 #define C_SREL 0x3b 163 #define C_SSM 0x3e 164 #define C_WFM 0x49 165 #define C_UNLOAD 0x4a 166 #define C_REL 0x140 167 168 #define C_CMD 0x05 169 #define C_EXEC 0x0e 170 #define C_QSTAT 0x10 171 #define C_TCMD 0x12 172 173 #define C_CC 1 174 #define C_SKSPAR 2 175 #define C_OPT 4 176 #define C_SPAR 4 177 #define C_IMRPT 8 178