Annotation of Net2/arch/hp300/dev/rdreg.h, revision 1.1.1.2

1.1       root        1: /*
                      2:  * Copyright (c) 1988 University of Utah.
                      3:  * Copyright (c) 1982, 1990 The Regents of the University of California.
                      4:  * All rights reserved.
                      5:  *
                      6:  * This code is derived from software contributed to Berkeley by
                      7:  * the Systems Programming Group of the University of Utah Computer
                      8:  * Science Department.
                      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 by the University of
                     21:  *     California, Berkeley and its contributors.
                     22:  * 4. Neither the name of the University nor the names of its contributors
                     23:  *    may be used to endorse or promote products derived from this software
                     24:  *    without specific prior written permission.
                     25:  *
                     26:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     27:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     28:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     29:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     30:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     31:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     32:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     33:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     34:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     35:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     36:  * SUCH DAMAGE.
                     37:  *
                     38:  * from: Utah $Hdr: rdreg.h 1.2 90/10/12$
                     39:  *
1.1.1.2 ! root       40:  *     from: @(#)rdreg.h       7.3 (Berkeley) 2/25/91
        !            41:  *     rdreg.h,v 1.2 1993/05/22 07:56:47 cgd Exp
1.1       root       42:  */
                     43: 
                     44: struct rd_iocmd {
                     45:        char    c_pad;
                     46:        char    c_unit;
                     47:        char    c_volume;
                     48:        char    c_saddr;
                     49:        short   c_hiaddr;
                     50:        long    c_addr;
                     51:        char    c_nop2;
                     52:        char    c_slen;
                     53:        long    c_len;
                     54:        char    c_cmd;
                     55:        char    c_pad2;
                     56: };
                     57: 
                     58: struct rd_rscmd {
                     59:        char    c_unit;
                     60:        char    c_sram;
                     61:        char    c_ram;
                     62:        char    c_cmd;
                     63: };
                     64: 
                     65: struct rd_stat {
                     66:        char    c_vu;
                     67:        char    c_pend;
                     68:        short   c_ref;
                     69:        short   c_fef;
                     70:        short   c_aef;
                     71:        short   c_ief;
                     72:        union {
                     73:                char cu_raw[10];
                     74:                struct {
                     75:                        short   cu_msw;
                     76:                        long    cu_lsl;
                     77:                } cu_sva;
                     78:                struct {
                     79:                        long    cu_cyhd;
                     80:                        short   cu_sect;
                     81:                } cu_tva;
                     82:        } c_pf;
                     83: };
                     84: #define c_raw  c_pf.cu_raw
                     85: #define c_blk  c_pf.cu_sva.cu_lsl      /* for now */
                     86: #define c_tva  c_pf.cu_tva
                     87: 
                     88: struct rd_ssmcmd {
                     89:        char    c_unit;
                     90:        char    c_cmd;
                     91:        short   c_refm;
                     92:        short   c_fefm;
                     93:        short   c_aefm;
                     94:        short   c_iefm;
                     95: };
                     96: 
                     97: struct rd_srcmd {
                     98:        char    c_unit;
                     99:        char    c_nop;
                    100:        char    c_cmd;
                    101:        char    c_param;
                    102: };
                    103: 
                    104: struct rd_clearcmd {
                    105:        char    c_unit;
                    106:        char    c_cmd;
                    107: };
                    108: 
                    109: struct rd_describe {
                    110:        u_int   d_iuw:16,       /* controller: installed unit word */
                    111:                d_cmaxxfr:16,   /* controller: max transfer rate (Kb) */
                    112:                d_ctype:8,      /* controller: controller type */
                    113:                d_utype:8,      /* unit: unit type */
                    114:                d_name:24,      /* unit: name (6 BCD digits) */
                    115:                d_sectsize:16,  /* unit: # of bytes per block (sector) */
                    116:                d_blkbuf:8,     /* unit: # of blocks which can be buffered */
                    117:                d_burstsize:8,  /* unit: recommended burst size */
                    118:                d_blocktime:16, /* unit: block time (u-sec) */
                    119:                d_uavexfr:16,   /* unit: average transfer rate (Kb) */
                    120:                d_retry:16,     /* unit: optimal retry time (1/100-sec) */
                    121:                d_access:16,    /* unit: access time param (1/100-sec) */
                    122:                d_maxint:8,     /* unit: maximum interleave */
                    123:                d_fvbyte:8,     /* unit: fixed volume byte */
                    124:                d_rvbyte:8,     /* unit: removeable volume byte */
                    125:                d_maxcyl:24,    /* volume: maximum cylinder */
                    126:                d_maxhead:8,    /* volume: maximum head */
                    127:                d_maxsect:16,   /* volume: maximum sector on track */
                    128:                d_maxvsecth:16, /* volume: maximum sector on volume (MSW) */
                    129:                d_maxvsectl:32, /* volume: maximum sector on volume (LSWs) */
                    130:                d_interleave:8; /* volume: current interleave */
                    131:  };
                    132: 
                    133: /* indicies into rdinfo -- order is arbitrary */
                    134: #define        RD7945A         0
                    135: #define        RD9134D         1
                    136: #define        RD9122S         2
                    137: #define        RD7912P         3
                    138: #define        RD7914P         4
                    139: #define        RD7958A         5
                    140: #define RD7957A                6
                    141: #define        RD7933H         7
                    142: #define        RD9134L         8
                    143: #define        RD7936H         9
                    144: #define        RD7937H         10
                    145: #define RD7914CT       11
                    146: #define RD7946A                12
                    147: #define RD9122D                13
                    148: #define RD7957B                14
                    149: #define RD7958B                15
                    150: #define RD7959B                16
                    151: 
                    152: /* HW ids */
                    153: #define        RD7946AID       0x220   /* also 7945A */
                    154: #define        RD9134DID       0x221   /* also 9122S */
                    155: #define        RD9134LID       0x222   /* also 9122D */
                    156: #define        RD7912PID       0x209
                    157: #define RD7914CTID     0x20A
                    158: #define        RD7914PID       0x20B
                    159: #define        RD7958AID       0x22B
                    160: #define RD7957AID      0x22A
                    161: #define        RD7933HID       0x212
                    162: #define        RD7936HID       0x213   /* just guessing -- as of yet unknown */
                    163: #define        RD7937HID       0x214
                    164: #define RD7957BID      0x22C   /* another guess based on 7958B */
                    165: #define RD7958BID      0x22D
                    166: #define RD7959BID      0x22E   /* another guess based on 7958B */
                    167: #define RD2200AID      0x22F
                    168: #define RD2203AID      0x230   /* yet another guess */
                    169: 
                    170: #define        NRD7945ABPT     (32 >> (DEV_BSHIFT-8))
                    171: #define        NRD7945ATRK     7
                    172: #define        NRD9134DBPT     (32 >> (DEV_BSHIFT-8))
                    173: #define        NRD9134DTRK     6
                    174: #define        NRD9122SBPT     (16 >> (DEV_BSHIFT-8))
                    175: #define        NRD9122STRK     2
                    176: #define        NRD7912PBPT     (64 >> (DEV_BSHIFT-8))
                    177: #define        NRD7912PTRK     7
                    178: #define        NRD7914PBPT     (64 >> (DEV_BSHIFT-8))
                    179: #define        NRD7914PTRK     7
                    180: #define        NRD7933HBPT     (92 >> (DEV_BSHIFT-8))
                    181: #define        NRD7933HTRK     13
                    182: #define        NRD9134LBPT     (32 >> (DEV_BSHIFT-8))
                    183: #define        NRD9134LTRK     5
                    184: 
                    185: /*
                    186:  * Several HP drives have an odd number of 256 byte sectors per track.
                    187:  * This makes it rather difficult to break them into 512 and 1024 byte blocks.
                    188:  * So...we just do like HPUX and don't bother to respect hardware track/head
                    189:  * boundries -- we just mold the disk so that we use the entire capacity.
                    190:  * HPUX also sometimes doen't abide by cylinder boundries, we attempt to
                    191:  * whenever possible.
                    192:  *
                    193:  * DISK                REAL (256 BPS)          HPUX (1024 BPS)         BSD (512 BPS)
                    194:  *             SPT x HD x CYL          SPT x HD x CYL          SPT x HD x CYL
                    195:  * -----       ---------------         ---------------         --------------
                    196:  * 7936:       123 x  7 x 1396          25 x  7 x 1716         123 x  7 x  698
                    197:  * 7937:       123 x 13 x 1396          25 x 16 x 1395         123 x 13 x  698
                    198:  *
                    199:  * 7957A:       63 x  5 x 1013          11 x  7 x 1036          22 x  7 x 1036
                    200:  * 7958A:       63 x  8 x 1013          21 x  6 x 1013          36 x  7 x 1013
                    201:  *
                    202:  * 7957B:       63 x  4 x 1269           9 x  7 x 1269          18 x  7 x 1269
                    203:  * 7958B:       63 x  6 x 1572          21 x  9 x  786          42 x  9 x  786
                    204:  * 7959B:       63 x 12 x 1572          21 x  9 x 1572          42 x  9 x 1572
                    205:  *
                    206:  * 2200A:      113 x  8 x 1449         113 x  2 x 1449         113 x  4 x 1449
                    207:  * 2203A:      113 x 16 x 1449         113 x  4 x 1449         113 x  8 x 1449
                    208:  */
                    209: #if DEV_BSIZE == 512
                    210: #      define  NRD7936HBPT     123
                    211: #      define  NRD7936HTRK     7
                    212: #      define  NRD7937HBPT     123
                    213: #      define  NRD7937HTRK     13
                    214: #      define  NRD7957ABPT     22
                    215: #      define  NRD7957ATRK     7
                    216: #      define  NRD7958ABPT     36
                    217: #      define  NRD7958ATRK     7
                    218: #      define  NRD7957BBPT     18
                    219: #      define  NRD7957BTRK     7
                    220: #      define  NRD7958BBPT     42
                    221: #      define  NRD7958BTRK     9
                    222: #      define  NRD7959BBPT     42
                    223: #      define  NRD7959BTRK     9
                    224: #      define  NRD2200ABPT     113
                    225: #      define  NRD2200ATRK     4
                    226: #      define  NRD2203ABPT     113
                    227: #      define  NRD2203ATRK     8
                    228: #endif
                    229: #if DEV_BSIZE == 1024
                    230: #      define  NRD7957ABPT     11
                    231: #      define  NRD7957ATRK     7
                    232: #      define  NRD7958ABPT     21
                    233: #      define  NRD7958ATRK     6
                    234: #      define  NRD7957BBPT     9
                    235: #      define  NRD7957BTRK     7
                    236: #      define  NRD7958BBPT     21
                    237: #      define  NRD7958BTRK     9
                    238: #      define  NRD7959BBPT     21
                    239: #      define  NRD7959BTRK     9
                    240: #      define  NRD2200ABPT     113
                    241: #      define  NRD2200ATRK     2
                    242: #      define  NRD2203ABPT     113
                    243: #      define  NRD2203ATRK     4
                    244: #endif
                    245: 
                    246: /* controller "unit" number */
                    247: #define        RDCTLR          15
                    248: 
                    249: /* convert 512 byte count into DEV_BSIZE count */
                    250: #define RDSZ(x)                ((x) >> (DEV_BSHIFT-9))
                    251: 
                    252: /* convert block number into sector number and back */
                    253: #define        RDBTOS(x)       ((x) << (DEV_BSHIFT-8))
                    254: #define RDSTOB(x)      ((x) >> (DEV_BSHIFT-8))
                    255: 
                    256: /* extract cyl/head/sect info from three-vector address */
                    257: #define RDCYL(tva)     ((u_long)(tva).cu_cyhd >> 8)
                    258: #define RDHEAD(tva)    ((tva).cu_cyhd & 0xFF)
                    259: #define RDSECT(tva)    ((tva).cu_sect)
                    260: 
                    261: #define        REF_MASK        0x0
                    262: #define        FEF_MASK        0x0
                    263: #define        AEF_MASK        0x0
                    264: #define        IEF_MASK        0xF970
                    265: 
                    266: #define FEF_CU         0x4000  /* cross-unit */
                    267: #define FEF_DR         0x0080  /* diagnostic result */
                    268: #define FEF_IMR                0x0008  /* internal maintenance release */
                    269: #define        FEF_PF          0x0002  /* power fail */
                    270: #define        FEF_REXMT       0x0001  /* retransmit */
                    271: #define AEF_UD         0x0040  /* unrecoverable data */
                    272: #define IEF_RRMASK     0xe000  /* request release bits */
                    273: #define IEF_MD         0x0020  /* marginal data */
                    274: #define IEF_RD         0x0010  /* recoverable data */
                    275: 
                    276: #define        C_READ          0x00
                    277: #define        C_RAM           0x00    /* single vector (i.e. sector number) */
                    278: #define        C_WRITE         0x02
                    279: #define        C_CLEAR         0x08
                    280: #define        C_STATUS        0x0d
                    281: #define        C_SADDR         0x10
                    282: #define        C_SLEN          0x18
                    283: #define        C_SUNIT(x)      (0x20 | (x))
                    284: #define C_SVOL(x)      (0x40 | (x))
                    285: #define        C_NOP           0x34
                    286: #define C_DESC         0x35
                    287: #define        C_SREL          0x3b
                    288: #define        C_SSM           0x3e
                    289: #define        C_SRAM          0x48
                    290: #define        C_REL           0x140
                    291: 
                    292: #define        C_CMD           0x05
                    293: #define        C_EXEC          0x0e
                    294: #define        C_QSTAT         0x10
                    295: #define        C_TCMD          0x12

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.