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

1.1     ! root        1: #define V_RESETTING 1          /* in process of reseting */
        !             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: 
        !             9: #define        VCVECT  0x40            /* base vioc vector */
        !            10: 
        !            11: #define        VBAS(x)  ( (struct vblok *)(VIOCBAS[x]) )
        !            12: 
        !            13: #define        NVIOCX NVX              /* nbr of viocx's - defined by config in vx.h */
        !            14: #define NVXPORTS 16*NVIOCX     /* Total nbr of viocx terminal ports */
        !            15: #define NVCXBUFS 16*3          /* 3 bufs per port per viocx */
        !            16: #define        VREADY 0x55             /* denotes no err in vioc self-initializaton */
        !            17: #define PVIOCX 0x0A            /* old connector panel vioc-x */
        !            18: #define VIOCX  0x0B            /* new (modular) connector panel vioc-x */
        !            19: #define        NPVIOCX 0x1A            /* new pviocx */
        !            20: #define        NWVIOCX 0x1B            /* new viocx */
        !            21: #define        VBOPID  0x5             /* Vioc-bop */
        !            22: 
        !            23: #include "vbsc.h"
        !            24: #if NVBSC > 0
        !            25: #define VIOCB  0x0C
        !            26: #define NWVIOCB 0x1C
        !            27: #define BISYNC 0x1
        !            28: #define LPARAX1 0x060a
        !            29: #define MDMCTL1 0x1004
        !            30: #define HUNTMD1 0x0804
        !            31: #endif
        !            32: 
        !            33: 
        !            34: #define        V_NEW   1               /* NPVIOCX | NVIOCX */
        !            35: #define        V_OLD   0               /* PVIOCX | VIOCX */
        !            36: /* Modem Control flags */
        !            37: #define VMOD_ON 1
        !            38: #define VMOD_OFF 0
        !            39: 
        !            40: #define VRESPLEN 12
        !            41: #define VCMDLEN 64
        !            42: #define VC_IQLEN 64                    /* Interrupt circular queue length */
        !            43: #define VC_CMDBUFL NVCXBUFS            /* circular cmd (to exec) queue len*/
        !            44: 
        !            45: #define SSPEED 13              /* standard speed 9600 bps */
        !            46: 
        !            47: #define V_ENAB 0002    /* auto + DTR */
        !            48: #define V_DISAB        0000    /* auto + disable DTR */
        !            49: 
        !            50: #define BRK_CHR        040
        !            51: #define DCD_ON 020
        !            52: #define DCD_OFF        010
        !            53: #define        CTS_ON  004
        !            54: #define DSR_ON 0200    /* modem signal states for bisync */
        !            55: #define DSR_OFF 0100
        !            56: #define DSR_CHG        (DSR_ON | DSR_OFF)
        !            57: 
        !            58: #define SILOBAS 0x800
        !            59: /* Command Operation Codes */
        !            60: #define LIDENT 0x0000          /* load ident, set int vectors */
        !            61: #define XMITDTA        0x0200          /* transmit */
        !            62: #define XMITIMM        0x0400          /* xmit immediate */
        !            63: #define FDTATOX        0x0300          /* flush data */
        !            64: #define        LPARAX  0x0600          /* load params */
        !            65: #define SNDBRKX        0x0C00          /* send break to port */
        !            66: #define MDMCTL 0x1000          /* auto modem control */
        !            67: 
        !            68: #define PERROR 0x40
        !            69: #define FERROR 0x80
        !            70: #define RCVOVRN        0xc0
        !            71: 
        !            72: /*
        !            73:  * Data Structures
        !            74:  */
        !            75: 
        !            76: struct vblok   {               /* command sent to vioc  */
        !            77:        char    v_vioc;         /*  0 type of interrupt + voic bsy flg */
        !            78:        char    v_hdwre;        /*  1 trap, reset, or hard interrupt */
        !            79:        char    v_vcbsy;        /*  2 command busy (set by host) */
        !            80:        char    v_vcid;         /*  3 command id. */
        !            81:        short   v_vcp[2];       /*  4 command pointer (sent by host) */
        !            82:        short   v_unused;       /*  8 unused */
        !            83:        short   v_rspoff;       /*  a offset into vblock for response buf */
        !            84:        char    v_ustat;        /*  c status */
        !            85:        char    v_uqual;        /*  d qualifies the interrupt */
        !            86:        char    v_usdata[0x3E]; /*  e unsolicited interrupt data */
        !            87:        short   v_maxxmt ;      /* 4C max xmit block size */
        !            88:        short   v_maxsilo ;     /* 4E max silo size */
        !            89:        char    v_ident ;       /* 50 identifies type of vioc */
        !            90:        char    v_fault ;       /* 51 denotes fault or ready after reset */
        !            91:        short   v_dcd ;         /* 52 bit mask for carr detect by port */
        !            92:        short   v_cts ;         /* 54 bit mask for cts by port */
        !            93:        short   v_dsr;          /* 56 bit mask for dsr by port */
        !            94:        short   v_secrec;       /* 58 bit mask for secondary receive */
        !            95:        short   v_badport;      /* 5a bit mask of failed ports */
        !            96:        char    v_portyp[16];   /* 5c type of each port */
        !            97: } ;
        !            98: 
        !            99: struct vcmds   {
        !           100:        int     v_cmdsem;               /* cmds waiting for itrque */
        !           101:        int     v_curcnt;               /* count of cmds in itrque and executing */
        !           102:        caddr_t v_curcmd[VCMDLEN] ;     /* pointers to cmds being executed */
        !           103:        int     v_fill ;                /* circular fill index */
        !           104:        int     v_empty ;               /* circular empty index */
        !           105:        caddr_t cmdbuf[VC_CMDBUFL] ;    /* circular cmd (to exec) queue */
        !           106:        int     v_itrfill ;             /* circular intr issue queue fill */
        !           107:        int     v_itrempt ;             /* circular intr issue queue empty */
        !           108:        short   v_itrqueu[VC_IQLEN] ;   /* circular intr issue queue */
        !           109: } ;
        !           110: 
        !           111: struct vxcmd   {
        !           112:        struct  vxcmd   *c_fwd ;
        !           113:        short   cmd ;
        !           114:        char    par[58] ; /* 64 total size */
        !           115: } ;
        !           116: 
        !           117: struct vxmit   {
        !           118:        char    line ;
        !           119:        char    bcount ;
        !           120:        char    ostream[6] ;
        !           121: } ;
        !           122: /* should be sizeof(struct vxmit), but has alignment problems */
        !           123: #define sizvxmit 6
        !           124: 
        !           125: struct vcx     {
        !           126:        char    v_loport ;      /* low port nbr */
        !           127:        char    v_hiport ;      /* high port nbr */
        !           128:        short   v_nbr ;         /* viocx number */
        !           129:        short   v_maxcmd ;      /* max number of concurrent cmds */
        !           130:        short   v_silosiz ;     /* silo size */
        !           131:        short   v_vers ;        /* vioc/pvioc version */
        !           132:        char    v_actflg ;      /* active command */
        !           133:        char    v_xmtcnt ;      /* xmit commands pending */
        !           134:        char    v_actport[16] ; /* act flag per port per port */
        !           135:        short   v_brkreq ;      /* send break requests pending */
        !           136:        struct  vxcmd   *vx_avail ;
        !           137:        struct  vxcmd   *vx_build ;
        !           138:        struct  vxcmd   vx_lst[NVCXBUFS] ;
        !           139:        short   v_state;
        !           140:        caddr_t v_mricmd;       /* Most recent issued cmd */
        !           141: };
        !           142: 
        !           143: #ifdef KERNEL
        !           144: caddr_t VIOCBAS[NVIOCX];       /* base I/O addr */
        !           145: #define vpanic(x) printf("%s\n", x)
        !           146: #endif
        !           147: 
        !           148: /*
        !           149:  * Stuff for testing; the following bits of test will cause the
        !           150:  * following vpanics.  Thus, to test each case, patch vx_test to
        !           151:  * the appropriate value and generate activity on the vioc.
        !           152:  */
        !           153: #define        VX_TESTING      0
        !           154: 
        !           155: #if VX_TESTING
        !           156: int    vx_test;                /* used to test vioc drive */
        !           157: #define        VX_CMDRESP_DEBUG        0x01
        !           158: #define        VX_UNSOL_INT_DEBUG      0x02
        !           159: #define        VX_PROC_ERR_DEBUG       0x04
        !           160: #define        VX_UQUAL_ERR_DEBUG      0x08
        !           161: #define        VX_VSETQ_OVERFLOW_DEBUG 0x10
        !           162: #endif

unix.superglobalmegacorp.com

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