131907Skarels /* 2*34727Smckusick * Copyright (c) 1988 Regents of the University of California. 3*34727Smckusick * All rights reserved. 4*34727Smckusick * 5*34727Smckusick * Redistribution and use in source and binary forms are permitted 6*34727Smckusick * provided that this notice is preserved and that due credit is given 7*34727Smckusick * to the University of California at Berkeley. The name of the University 8*34727Smckusick * may not be used to endorse or promote products derived from this 9*34727Smckusick * software without specific prior written permission. This software 10*34727Smckusick * is provided ``as is'' without express or implied warranty. 11*34727Smckusick * 12*34727Smckusick * @(#)if_dmv.h 7.2 (Berkeley) 06/13/88 13*34727Smckusick * 1431907Skarels * DMV-11 Driver 1531907Skarels * 1631907Skarels * Qbus Sync DDCMP interface - DMV operated in full duplex, point to point mode 1731907Skarels * 18*34727Smckusick * Written by Bob Kridle of Mt Xinu 19*34727Smckusick * starting from if_dmc.h version 6.4 dated 6/8/85 2031907Skarels */ 2131907Skarels 2231907Skarels struct dmvdevice { 2331907Skarels union { 2431907Skarels u_char xbsel[2]; 2531907Skarels u_short xwsel; 2631907Skarels } xw0; 2731907Skarels union { 2831907Skarels u_char xbsel[2]; 2931907Skarels u_short xwsel; 3031907Skarels } xw1; 3131907Skarels union { 3231907Skarels u_char xbsel[2]; 3331907Skarels u_short xwsel; 3431907Skarels } xw2; 3531907Skarels union { 3631907Skarels u_char xbsel[2]; 3731907Skarels u_short xwsel; 3831907Skarels } xw3; 3931907Skarels union { 4031907Skarels u_char xbsel[2]; 4131907Skarels u_short xwsel; 4231907Skarels } xw4; 4331907Skarels }; 4431907Skarels 4531907Skarels #define bsel0 xw0.xbsel[0] 4631907Skarels #define bsel1 xw0.xbsel[1] 4731907Skarels #define bsel2 xw1.xbsel[0] 4831907Skarels #define bsel3 xw1.xbsel[1] 4931907Skarels #define bsel4 xw2.xbsel[0] 5031907Skarels #define bsel5 xw2.xbsel[1] 5131907Skarels #define bsel6 xw3.xbsel[0] 5231907Skarels #define bsel7 xw3.xbsel[1] 5331907Skarels #define bsel10 xw4.xbsel[0] 5431907Skarels #define bsel11 xw4.xbsel[1] 5531907Skarels 5631907Skarels #define wsel0 xw0.xwsel 5731907Skarels #define wsel2 xw1.xwsel 5831907Skarels #define wsel4 xw2.xwsel 5931907Skarels #define wsel6 xw3.xwsel 6031907Skarels #define wsel10 xw4.xwsel 6131907Skarels 6231907Skarels /* 6331907Skarels * dmv software packet encapsulation. This allows the dmv 6431907Skarels * link to be multiplexed among several protocols. 6531907Skarels * The first eight bytes of the dmc header are garbage, 6631907Skarels * since on a vax the uba has been known to mung these 6731907Skarels * bytes. The next two bytes encapsulate packet type. 6831907Skarels */ 6931907Skarels struct dmv_header { 7031907Skarels short dmv_type; /* encapsulate packet type */ 7131907Skarels }; 7231907Skarels 7331907Skarels /* packet types */ 7431907Skarels #define DMV_IPTYPE 1 7531907Skarels #define DMV_TRAILER 2 7631907Skarels #define DMV_NTRAILER 16 7731907Skarels 7831907Skarels /* 7931907Skarels * DMVMTU includes space for data (1024) + 8031907Skarels * protocol header (256) + trailer descriptor (4). 8131907Skarels * The software link encapsulation header (dmv_header) 8231907Skarels * is handled separately. 8331907Skarels */ 8431907Skarels #define DMVMTU 1284 8531907Skarels 8631907Skarels #define RDYSCAN 16 /* loop delay for RDYI after RQI */ 8731907Skarels 8831907Skarels /* defines for bsel0 */ 8931907Skarels 9031907Skarels #define DMV_IEI 0x01 /* interrupt enable, input */ 9131907Skarels #define DMV_IEO 0x10 /* interrupt enable, output */ 9231907Skarels #define DMV_RQI 0x80 /* request input */ 9331907Skarels #define DMV0BITS "\10\8RQI\5IEO\1IEI" 9431907Skarels 9531907Skarels /* defines for bsel1 */ 9631907Skarels 9731907Skarels #define DMV_MCLR 0x40 /* master clear */ 9831907Skarels #define DMV_RUN 0x80 /* run */ 9931907Skarels #define DMV1BITS "\10\8RUN\7MCLR" 10031907Skarels 10131907Skarels /* defines for bsel2 */ 10231907Skarels 10331907Skarels #define DMV_CMD 0x07 /* command/response type field */ 10431907Skarels 10531907Skarels 10631907Skarels /* input commands */ 10731907Skarels 10831907Skarels #define DMV_BACCR 0x00 /* buffer address, char. count - rec */ 10931907Skarels #define DMV_BACCX 0x04 /* buffer address, char. count - xmit */ 11031907Skarels #define DMV_MDEFI 0x02 /* mode definition input */ 11131907Skarels #define DMV_CNTRLI 0x01 /* control input */ 11231907Skarels 11331907Skarels /* response identifiers */ 11431907Skarels 11531907Skarels #define DMV_CNTRLO 0x01 /* control output */ 11631907Skarels #define DMV_MDEFO 0x02 /* information output */ 11731907Skarels #define DMV_BDRUS 0x00 /* buffer definition - rec. used */ 11831907Skarels #define DMV_BDRUNUS 0x03 /* buffer disposition - rec. unused */ 11931907Skarels #define DMV_BDXSA 0x04 /* buffer dispostiion - sent & ack */ 12031907Skarels #define DMV_BDXSN 0x06 /* buffer dispostiion - sent & not ack*/ 12131907Skarels #define DMV_BDXNS 0x07 /* buffer dispostiion - not sent */ 12231907Skarels 12331907Skarels #define DMV_22BIT 0x08 /* buffer address in 22 bit format */ 12431907Skarels #define DMV_RDI 0x10 /* ready for input */ 12531907Skarels #define DMV_RDO 0x80 /* ready for output */ 12631907Skarels #define DMV2BITS "\10\8RDO\5RDI" 12731907Skarels 12831907Skarels /* defines for CNTRLI mode */ 12931907Skarels 13031907Skarels #define DMV_RDTSS 0x20 /* read tributary status slot */ 13131907Skarels #define DMV_RDCTSS 0x40 /* read/clear tributary status slot */ 13231907Skarels #define DMV_WRTSS 0x80 /* write tributary status slot */ 13331907Skarels #define DMV_TRIBN 0x1f /* tributary number */ 13431907Skarels #define DMV_RQKEY 0x1f /* control command request key */ 13531907Skarels #define DMV_ECBP 0x100 /* establish common buffer pool */ 13631907Skarels 13731907Skarels /* relevant command request keys */ 13831907Skarels 13931907Skarels #define DMV_NOP 0x00 /* no-op */ 14031907Skarels #define DMV_ESTTRIB 0x01 /* establish tributary */ 14131907Skarels #define DMV_REQSUS 0x03 /* request start up state */ 14231907Skarels #define DMV_REQHS 0x05 /* request halt state */ 14331907Skarels #define DMV_WMC 0x10 /* write modem control */ 14431907Skarels #define DMV_RMC 0x11 /* read modem control */ 14531907Skarels 14631907Skarels /* some interesting CNTRLO codes 14731907Skarels * 14831907Skarels * use the manual if yours isn't here!! 14931907Skarels */ 15031907Skarels 15131907Skarels #define DMV_RTE 0002 /* receive threshold error */ 15231907Skarels #define DMV_TTE 0004 /* xmit threshold error */ 15331907Skarels #define DMV_STE 0006 /* select threshold error */ 15431907Skarels #define DMV_ORUN 0024 /* other end enters run state */ 15531907Skarels #define DMV_NXM 0302 /* non-existant memory */ 15631907Skarels #define DMV_MODD 0304 /* modem disconnected */ 15731907Skarels #define DMV_QOVF 0306 /* response queue overflow */ 15831907Skarels #define DMV_CXRL 0310 /* modem cxr lost */ 15931907Skarels 16031907Skarels #define DMV_EEC 0377 /* CNTRLO error code mask */ 161