Annotation of 43BSDReno/sys/tahoevba/vxreg.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1988 Regents of the University of California.
                      3:  * All rights reserved.
                      4:  *
                      5:  * This code is derived from software contributed to Berkeley by
                      6:  * Computer Consoles Inc.
                      7:  *
                      8:  * Redistribution is only permitted until one year after the first shipment
                      9:  * of 4.4BSD by the Regents.  Otherwise, redistribution and use in source and
                     10:  * binary forms are permitted provided that: (1) source distributions retain
                     11:  * this entire copyright notice and comment, and (2) distributions including
                     12:  * binaries display the following acknowledgement:  This product includes
                     13:  * software developed by the University of California, Berkeley and its
                     14:  * contributors'' in the documentation or other materials provided with the
                     15:  * distribution and in all advertising materials mentioning features or use
                     16:  * of this software.  Neither the name of the University nor the names of
                     17:  * its contributors may be used to endorse or promote products derived from
                     18:  * this software without specific prior written permission.
                     19:  * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     20:  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     21:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     22:  *
                     23:  *     @(#)vxreg.h     7.4 (Berkeley) 6/28/90
                     24:  */
                     25: 
                     26: /*
                     27:  * Vioc hardware interface structure.
                     28:  */
                     29: struct vxdevice {
                     30:        char    v_vioc;         /*  0 type of interrupt + vioc busy flag */
                     31:        char    v_hdwre;        /*  1 trap, reset, or hard interrupt */
                     32:        char    v_vcbsy;        /*  2 command busy (set by host) */
                     33:        char    v_vcid;         /*  3 command identifier */
                     34:        short   v_vcp[2];       /*  4 command pointer (sent by host) */
                     35:        short   v_unused;       /*  8 unused */
                     36:        short   v_rspoff;       /*  a offset into vblock for response buf */
                     37:        char    v_ustat;        /*  c status */
                     38:        char    v_uqual;        /*  d interrupt qualifier */
                     39:        char    v_usdata[0x3E]; /*  e unsolicited interrupt data */
                     40:        short   v_maxxmt;       /* 4C max xmit block size */
                     41:        short   v_maxsilo;      /* 4E max silo size */
                     42:        char    v_ident;        /* 50 identifies type of vioc */
                     43:        char    v_fault;        /* 51 denotes fault or ready after reset */
                     44:        short   v_dcd;          /* 52 bit mask for carr detect by port */
                     45:        short   v_cts;          /* 54 bit mask for cts by port */
                     46:        short   v_dsr;          /* 56 bit mask for dsr by port */
                     47:        short   v_secrec;       /* 58 bit mask for secondary receive */
                     48:        short   v_badport;      /* 5a bit mask of failed ports */
                     49:        char    v_portyp[16];   /* 5c type of each port */
                     50: };
                     51: 
                     52: /* control bits for v_vioc and v_hdwre */
                     53: #define        V_RESET 0x1             /* cause a vioc reset */
                     54: #define        V_TRP   0x2             /* cause a vioc trap */
                     55: #define        V_INTR  0x4             /* cause a vioc interrupt */
                     56: #define        V_ERR   0x80            /* generic error flag */
                     57: #define        V_BSY   0x80            /* generic busy flag */
                     58: #define        V_UNBSY 0x80            /* not busy for unsolicited interrupt */
                     59: 
                     60: /* command identifier codes */
                     61: #define        VXC_LIDENT      0x0000          /* load ident, set int vectors */
                     62: #define        VXC_XMITDTA     0x0200          /* transmit */
                     63: #define        VXC_XMITIMM     0x0400          /* xmit immediate */
                     64: #define        VXC_FDTATOX     0x0300          /* flush data */
                     65: #define        VXC_LPARAX      0x0600          /* load params */
                     66: #define        VXC_SNDBRKX     0x0C00          /* send break to port */
                     67: #define        VXC_MDMCTL      0x1000          /* auto modem control */
                     68: /* bisync specific command identifiers */
                     69: #define        VXC_LPARAX1     0x060a
                     70: #define        VXC_MDMCTL1     0x1004
                     71: #define        VXC_HUNTMD1     0x0804
                     72: 
                     73: /* vioc types returned during config */
                     74: #define        VXT_VIOCBOP     0x05            /* vioc-bop */
                     75: #define        VXT_PVIOCX      0x0A            /* old connector panel vioc-x */
                     76: #define        VXT_VIOCX       0x0B            /* new connector panel vioc-x */
                     77: #define        VXT_VIOCB       0x0C            /* vioc-bisync */
                     78: #define        VXT_NEW         0x10            /* new type bit (or'd in) */
                     79: 
                     80: #define        VX_BISYNC       0x1             /* bisync flag indicator for bscport */
                     81: 
                     82: /* connector panel types (per port) */
                     83: #define        VXT_NONE        0               /* no connector panel */
                     84: #define        VXT_8PORT       1               /* 8 port RS-232C */
                     85: #define        VXT_RS422       2               /* 8 port RS-422 (nonexistent) */
                     86: #define        VXT_4PORT       3               /* 4 port RS-232 (with DSR/RING) */
                     87: #define        VXT_PARALLEL    4               /* 4 port panel parallel port */
                     88: 
                     89: /* v_fault status values */
                     90: #define        VXF_READY       0x55            /* no err in vioc self-initializaton */
                     91: 
                     92: /* line parameters, set with VXC_LPARAX */
                     93: #define        BITS5           0x00            /* 5 bits per character */
                     94: #define        BITS6           0x80            /* 6 bits per character */
                     95: #define        BITS7           0x40            /* 7 bits per character */
                     96: #define        BITS8           0xc0            /* 8 bits per character */
                     97: 
                     98: #define        VNOPARITY       0x00            /* no parity bit */
                     99: #define        VODDP           0x01            /* odd parity bit */
                    100: #define        VEVENP          0x03            /* even parity bit */
                    101: 
                    102: #define        VSTOP1          0x04            /* 1 stop bit */
                    103: #define        VSTOP2          0x0c            /* 2 stop bit */
                    104: 
                    105: #define        V19200          0x13            /* 19.2 kbaud */
                    106: 
                    107: /* modem control flags */
                    108: #define        VMOD_ON         1
                    109: #define        VMOD_OFF        0
                    110: 
                    111: #define        V_AUTO          0x00            /* auto control of RTS, uses CTS */
                    112: #define        V_MANUAL        0x80            /* manual control of RTS, ignore CTS */
                    113: #define        V_DTR_ON        0x02            /* set DTR output */
                    114: #define        V_DTR_OFF       0x00            /* drop DTR output */
                    115: #define        V_RTS           0x01            /* set RTS output (manual only) */
                    116: 
                    117: #define        BRK_CHR 040                     /* break character */
                    118: #define        DCD_ON  020                     /* */
                    119: #define        DCD_OFF 010                     /* */
                    120: #define        CTS_ON  004                     /* */
                    121: #define        DSR_ON  0200                    /* modem signal states for bisync */
                    122: #define        DSR_OFF 0100
                    123: #define        DSR_CHG (DSR_ON|DSR_OFF)
                    124: 
                    125: #define        VX_SILO 0x800                   /* offset to base of silo */
                    126: 
                    127: /* input status bits returned in silo */
                    128: #define        VX_PE   0x40                    /* parity error */
                    129: #define        VX_FE   0x80                    /* framing error */
                    130: #define        VX_RO   0xc0                    /* receiver overrun */
                    131: 
                    132: /* VIOC Process Error (PROCER) codes */
                    133: #define        VP_SILO_OFLOW   0x40            /* input silo error, non-fatal */
                    134: 
                    135: #define        VRESPLEN        12
                    136: #define        VCMDLEN         64
                    137: #define        VC_IQLEN        64              /* Interrupt circular queue length */
                    138: #define        NVCXBUFS        16*3            /* 3 bufs per port per viocx */
                    139: #define        VC_CMDBUFL      NVCXBUFS        /* circular cmd (to exec) queue len*/
                    140: 
                    141: struct vcmds {
                    142:        int     v_cmdsem;               /* # cmds waiting for itrque */
                    143:        int     v_curcnt;               /* # cmds in itrque and executing */
                    144:        caddr_t v_curcmd[VCMDLEN];      /* pointers to cmds being executed */
                    145:        int     v_fill;                 /* circular fill index */
                    146:        int     v_empty;                /* circular empty index */
                    147:        caddr_t cmdbuf[VC_CMDBUFL];     /* circular cmd (to exec) queue */
                    148:        int     v_itrfill;              /* circular intr issue queue fill */
                    149:        int     v_itrempt;              /* circular intr issue queue empty */
                    150:        short   v_itrqueu[VC_IQLEN];    /* circular intr issue queue */
                    151: };
                    152: 
                    153: struct vxcmd {
                    154:        struct  vxcmd *c_fwd;
                    155:        short   cmd;
                    156:        char    par[58];                /* pad to 64 total size */
                    157: };
                    158: 
                    159: struct vxmit {
                    160:        char    line;
                    161:        char    bcount;
                    162:        char    ostream[6];
                    163: };
                    164: 
                    165: #define        SSPEED  13                      /* standard speed 9600 bps */

unix.superglobalmegacorp.com

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