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