Annotation of cci/sys/vba/vioc.h, revision 1.1.1.2

1.1.1.2 ! root        1: #define        V_RESETTING     1               /* in the process of being reset */
        !             2: #define        V_RESET         1               /* cause a vioc reset */
        !             3: #define        V_TRP           2               /* cause a vioc trap */
        !             4: #define        V_INTR          4               /* cause a vioc interrupt */
        !             5: #define        V_ERR           0x80            /* generic error flag */
        !             6: #define        V_BSY           0x80            /* generic busy flag */
        !             7: #define        V_UNBSY         0x80            /* not busy for unsolicited interrupt */
        !             8: #define        VCVECT          0x40            /* base vioc vector */
1.1       root        9: 
                     10: #define        VBAS(x)  ( (struct vblok *)(VIOCBAS[x]) )
                     11: 
1.1.1.2 ! root       12: #define        NVIOCX          NVX             /* # of viocx's-def by config in vx.h */
        !            13: #define        NVXPORTS        16*NVIOCX       /* Total nbr of viocx terminal ports */
        !            14: #define        NVCXBUFS        16*4            /* 4 bufs per port per viocx */
        !            15: #define        VREADY          0x55            /* denotes no err in vioc self-init */
        !            16: #define        PVIOCX          0x0A            /* old connector panel vioc-x */
        !            17: #define        VIOCX           0x0B            /* new (modular) connect panel vioc-x */
        !            18: #define        NPVIOCX         0x1A            /* new pviocx */
        !            19: #define        NWVIOCX         0x1B            /* new viocx */
        !            20: #define        VBOPID          0x5             /* Vioc-bop */
1.1       root       21: 
                     22: #include "vbsc.h"
                     23: #if NVBSC > 0
1.1.1.2 ! root       24: /*
        !            25:  * VIOC-BSC controller definitions
        !            26:  */
        !            27: #define        VIOCB           0x0C
        !            28: #define        NWVIOCB         0x1C
        !            29: #define        BISYNC          0x1
        !            30: #define        LPARAX1         0x060A
        !            31: #define        MDMCTL1         0x1004
        !            32: #define        HUNTMD1         0x0804
1.1       root       33: #endif
                     34: 
1.1.1.2 ! root       35: #define        V_NEW           1               /* NPVIOCX | NVIOCX */
        !            36: #define        V_OLD           0               /* PVIOCX | VIOCX */
        !            37: 
        !            38: /*
        !            39:  * Modem Control flags
        !            40:  */
        !            41: #define        VMOD_ON         1
        !            42: #define        VMOD_OFF        0
1.1       root       43: 
1.1.1.2 ! root       44: #define        VRESPLEN        12
        !            45: #define        VCMDLEN         64
        !            46: #define        VC_IQLEN        64              /* Interrupt circular queue length */
        !            47: #define        VC_CMDBUFL      NVCXBUFS        /* circular cmd (to exec) queue len*/
        !            48: 
        !            49: #define        SSPEED          13              /* standard speed 9600 bps */
        !            50: 
        !            51: #define        V_ENAB          0002            /* auto + DTR */
        !            52: #define        V_DISAB         0000            /* auto + disable DTR */
        !            53: 
        !            54: #define        BRK_CHR         040
        !            55: #define        DCD_ON          020
        !            56: #define        DCD_OFF         010
        !            57: #define        CTS_ON          004
        !            58: #define        DSR_ON          0200            /* modem signal states for bisync */
        !            59: #define        DSR_OFF         0100
        !            60: #define        DSR_CHG         (DSR_ON | DSR_OFF)
        !            61: 
        !            62: #define        SILOBAS 0x800
1.1       root       63: 
                     64: /*
1.1.1.2 ! root       65:  * Command Operation Codes
1.1       root       66:  */
1.1.1.2 ! root       67: #define        LIDENT          0x0000          /* load ident, set int vectors */
        !            68: #define        XMITDTA         0x0200          /* transmit */
        !            69: #define        XMITIMM         0x0400          /* xmit immediate */
        !            70: #define        FDTATOX         0x0300          /* flush data */
        !            71: #define        LPARAX          0x0600          /* load params */
        !            72: #define        SNDBRKX         0x0C00          /* send break to port */
        !            73: #define        MDMCTL          0x1000          /* auto modem control */
        !            74: 
        !            75: #define        PERROR          0x40
        !            76: #define        FERROR          0x80
        !            77: #define        RCVOVRN         0xc0
1.1       root       78: 
1.1.1.2 ! root       79: /*
        !            80:  * Data Structures
        !            81:  */
        !            82: struct vblok   {                       /* command sent to vioc  */
        !            83:        char    v_vioc;                 /*  0 type of interrupt+voic bsy flg */
        !            84:        char    v_hdwre;                /*  1 trap, reset, or hard interrupt */
        !            85:        char    v_vcbsy;                /*  2 command busy (set by host) */
        !            86:        char    v_vcid;                 /*  3 command id. */
        !            87:        short   v_vcp[2];               /*  4 command pointer (sent by host) */
        !            88:        short   v_unused;               /*  8 unused */
        !            89:        short   v_rspoff;               /*  a offset into vblock for resp buf */
        !            90:        char    v_ustat;                /*  c status */
        !            91:        char    v_uqual;                /*  d qualifies the interrupt */
        !            92:        char    v_usdata[0x3E];         /*  e unsolicited interrupt data */
        !            93:        short   v_maxxmt;               /* 4C max xmit block size */
        !            94:        short   v_maxsilo;              /* 4E max silo size */
        !            95:        char    v_ident;                /* 50 identifies type of vioc */
        !            96:        char    v_fault;                /* 51 fault or ready after reset */
        !            97:        short   v_dcd;                  /* 52 bit mask for carr detct by port */
        !            98:        short   v_cts;                  /* 54 bit mask for cts by port */
        !            99:        short   v_dsr;                  /* 56 bit mask for dsr by port */
        !           100:        short   v_secrec;               /* 58 bit mask for secondary receive */
        !           101:        short   v_badport;              /* 5a bit mask of failed ports */
        !           102:        char    v_portyp[16];           /* 5c type of each port */
        !           103: };
1.1       root      104: 
                    105: struct vcmds   {
                    106:        int     v_cmdsem;               /* cmds waiting for itrque */
1.1.1.2 ! root      107:        int     v_curcnt;               /* count of cmds in itrque and exec'g */
        !           108:        caddr_t v_curcmd[VCMDLEN];      /* pointers to cmds being executed */
        !           109:        int     v_fill;                 /* circular fill index */
        !           110:        int     v_empty;                /* circular empty index */
        !           111:        caddr_t cmdbuf[VC_CMDBUFL];     /* circular cmd (to exec) queue */
        !           112:        int     v_itrfill;              /* circular intr issue queue fill */
        !           113:        int     v_itrempt;              /* circular intr issue queue empty */
        !           114:        short   v_itrqueu[VC_IQLEN];    /* circular intr issue queue */
        !           115: };
1.1       root      116: 
                    117: struct vxcmd   {
1.1.1.2 ! root      118:        struct  vxcmd   *c_fwd;
        !           119:        short           cmd;
        !           120:        char            par[58];        /* 64 total size */
        !           121: };
1.1       root      122: 
                    123: struct vxmit   {
1.1.1.2 ! root      124:        char            line;
        !           125:        unsigned char   bcount;
        !           126:        char            ostream[6];
        !           127: };
        !           128: 
        !           129: /*
        !           130:  * Should be sizeof(struct vxmit), but has alignment problems
        !           131:  */
        !           132: #define        sizvxmit 6
1.1       root      133: 
                    134: struct vcx     {
1.1.1.2 ! root      135:        char            v_loport;       /* low port nbr */
        !           136:        char            v_hiport;       /* high port nbr */
        !           137:        short           v_nbr;          /* viocx number */
        !           138:        short           v_maxcmd;       /* max number of concurrent cmds */
        !           139:        short           v_silosiz;      /* silo size */
        !           140:        short           v_vers;         /* vioc/pvioc version */
        !           141:        struct  vxcmd   *vx_avail;
        !           142:        struct  vxcmd   *vx_build;
        !           143:        struct  vxcmd   vx_lst[NVCXBUFS];
        !           144:        short           v_state;        /* state of the controller */
        !           145:        short           v_brkreq;       /* send break requests pending */
        !           146:        char            v_actflg;
        !           147:        char            v_xmtcnt;
        !           148:        char            v_actport[16];
        !           149:        char            vx_type[16];    /* type of port */
1.1       root      150: };
                    151: 
                    152: #ifdef KERNEL
1.1.1.2 ! root      153: caddr_t VIOCBAS[NVIOCX];               /* base I/O addr */
        !           154: int vxpanic;
        !           155: #define        vpanic(x)       if (vxpanic) panic(x); else printf("%s\n", x)
1.1       root      156: #endif
                    157: 
                    158: /*
                    159:  * Stuff for testing; the following bits of test will cause the
                    160:  * following vpanics.  Thus, to test each case, patch vx_test to
                    161:  * the appropriate value and generate activity on the vioc.
                    162:  */
                    163: #define        VX_TESTING      0
                    164: 
                    165: #if VX_TESTING
1.1.1.2 ! root      166: #ifdef KERNEL
        !           167: int    vx_test;                        /* used to test vioc drive */
        !           168: #endif
1.1       root      169: #define        VX_CMDRESP_DEBUG        0x01
                    170: #define        VX_UNSOL_INT_DEBUG      0x02
                    171: #define        VX_PROC_ERR_DEBUG       0x04
                    172: #define        VX_UQUAL_ERR_DEBUG      0x08
                    173: #define        VX_VSETQ_OVERFLOW_DEBUG 0x10
                    174: #endif
1.1.1.2 ! root      175: 
        !           176: #define        isprinter(xp, d)        ((xp)->vx_type[d] == 4)
        !           177: 
        !           178: /*
        !           179:  * This stuff allows a user program to sense CD/CTS and set DTR/RTS.
        !           180:  */
        !           181: #define        VCMANUAL        _IO(v, 1)       /* provide direct control of signals */
        !           182: #define        VCGRS232        _IO(v, 2)       /* set signals */
        !           183: #define        VCSRS232        _IO(v, 3)       /* get signals */
        !           184: 
        !           185: /*
        !           186:  * Flags to VCMANUAL.
        !           187:  */
        !           188: #define        VC_ON           1
        !           189: #define        VC_OFF          0
        !           190: 
        !           191: /*
        !           192:  * Signals which may be set.
        !           193:  */
        !           194: #define        VC_RTS          0x01
        !           195: #define        VC_DTR          0x02
        !           196: 
        !           197: /*
        !           198:  * Signals which may only be tested.
        !           199:  */
        !           200: #define        VC_DCD          0x04
        !           201: #define        VC_CTS          0x08
        !           202: 
        !           203: #define        VC_MASK         0x0f            /* bits the user can set/look at */
        !           204: #define        VC_MANUAL       0x10            /* indicates we're in manual mode */
        !           205: 
        !           206: /*
        !           207:  * Bits in VIOC common memory.
        !           208:  */
        !           209: #define        V_AUTO  0x00    /* auto mode */
        !           210: #define        V_MANUAL 0x80   /* manual */
        !           211: #define        V_DTR   0x02    /* DTR */
        !           212: #define        V_RTS   0x01    /* RTS */
        !           213: 
        !           214: #define        CTS_OFF 002
        !           215: 
        !           216: /*
        !           217:  * Stuff for taking a vioc memory dump.
        !           218:  */
        !           219: #define        VIOCMEMSIZ      (16*1024)
        !           220: #define        VIOCDMAGIC      0xfa34
        !           221: 
        !           222: struct viocdump {
        !           223:        time_t  vxtime;         /* time stamp */
        !           224:        short   vxn;            /* vioc number */
        !           225:        u_short vxmagic;        /* VIOCDMAGIC if we have a valid dump */
        !           226:        long    vxcore[VIOCMEMSIZ / sizeof(long)]; /* actual dump */
        !           227: };

unix.superglobalmegacorp.com

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