📄 dgreg.h
字号:
/*- * dgreg.h $FreeBSD: src/sys/gnu/i386/isa/dgreg.h,v 1.4.2.2 1999/09/05 08:10:04 peter Exp $ * * Digiboard driver. * * Stage 1. "Better than nothing". * * Based on sio driver by Bruce Evans and on Linux driver by Troy * De Jongh <troyd@digibd.com> or <troyd@skypoint.com> * which is under GNU General Public License version 2 so this driver * is forced to be under GPL 2 too. * * Written by Serge Babkin, * Joint Stock Commercial Bank "Chelindbank" * (Chelyabinsk, Russia) * babkin@hq.icb.chel.su */#define MAX_DGB_PORTS 32/* digi.h *//* Definitions for DigiBoard ditty(1) command. */#if !defined(TIOCMODG)#define TIOCMODG ('d'<<8) | 250 /* get modem ctrl state */#define TIOCMODS ('d'<<8) | 251 /* set modem ctrl state */#endif#if !defined(TIOCMSET)#define TIOCMSET ('d'<<8) | 252 /* set modem ctrl state */#define TIOCMGET ('d'<<8) | 253 /* set modem ctrl state */#endif#if !defined(TIOCMBIC)#define TIOCMBIC ('d'<<8) | 254 /* set modem ctrl state */#define TIOCMBIS ('d'<<8) | 255 /* set modem ctrl state */#endif#if !defined(TIOCSDTR)#define TIOCSDTR ('e'<<8) | 0 /* set DTR */#define TIOCCDTR ('e'<<8) | 1 /* clear DTR */#endif/************************************************************************ * Ioctl command arguments for DIGI parameters. ************************************************************************/#define DIGI_GETA ('e'<<8) | 94 /* Read params */#define DIGI_SETA ('e'<<8) | 95 /* Set params */#define DIGI_SETAW ('e'<<8) | 96 /* Drain & set params */#define DIGI_SETAF ('e'<<8) | 97 /* Drain, flush & set params */#define DIGI_GETFLOW ('e'<<8) | 99 /* Get startc/stopc flow */ /* control characters */#define DIGI_SETFLOW ('e'<<8) | 100 /* Set startc/stopc flow */ /* control characters */#define DIGI_GETAFLOW ('e'<<8) | 101 /* Get Aux. startc/stopc */ /* flow control chars */#define DIGI_SETAFLOW ('e'<<8) | 102 /* Set Aux. startc/stopc */ /* flow control chars */struct digiflow_struct { unsigned char startc; /* flow cntl start char */ unsigned char stopc; /* flow cntl stop char */};typedef struct digiflow_struct digiflow_t;/************************************************************************ * Values for digi_flags ************************************************************************/#define DIGI_IXON 0x0001 /* Handle IXON in the FEP */#define DIGI_FAST 0x0002 /* Fast baud rates */#define RTSPACE 0x0004 /* RTS input flow control */#define CTSPACE 0x0008 /* CTS output flow control */#define DSRPACE 0x0010 /* DSR output flow control */#define DCDPACE 0x0020 /* DCD output flow control */#define DTRPACE 0x0040 /* DTR input flow control */#define DIGI_FORCEDCD 0x0100 /* Force carrier */#define DIGI_ALTPIN 0x0200 /* Alternate RJ-45 pin config */#define DIGI_AIXON 0x0400 /* Aux flow control in fep *//************************************************************************ * Structure used with ioctl commands for DIGI parameters. ************************************************************************/struct digi_struct { unsigned short digi_flags; /* Flags (see above) */};typedef struct digi_struct digi_t;/* fep.h */#define FEP_CSTART 0x400L#define FEP_CMAX 0x800L#define FEP_ISTART 0x800L#define FEP_IMAX 0xC00L#define FEP_CIN 0xD10L#define FEP_GLOBAL 0xD10L#define FEP_EIN 0xD18L#define FEPSTAT 0xD20L#define CHANSTRUCT 0x1000L#define RXTXBUF 0x4000Lstruct global_data { volatile ushort cin; volatile ushort cout; volatile ushort cstart; volatile ushort cmax; volatile ushort ein; volatile ushort eout; volatile ushort istart; volatile ushort imax;};struct board_chan { int filler1; int filler2; volatile ushort tseg; volatile ushort tin; volatile ushort tout; volatile ushort tmax; volatile ushort rseg; volatile ushort rin; volatile ushort rout; volatile ushort rmax; volatile ushort tlow; volatile ushort rlow; volatile ushort rhigh; volatile ushort incr; volatile ushort etime; volatile ushort edelay; volatile u_char *dev; volatile ushort iflag; volatile ushort oflag; volatile ushort cflag; volatile ushort gmask; volatile ushort col; volatile ushort delay; volatile ushort imask; volatile ushort tflush; int filler3; int filler4; int filler5; int filler6; volatile u_char num; volatile u_char ract; volatile u_char bstat; volatile u_char tbusy; volatile u_char iempty; volatile u_char ilow; volatile u_char idata; volatile u_char eflag; volatile u_char tflag; volatile u_char rflag; volatile u_char xmask; volatile u_char xval; volatile u_char mstat; volatile u_char mchange; volatile u_char mint; volatile u_char lstat; volatile u_char mtran; volatile u_char orun; volatile u_char startca; volatile u_char stopca; volatile u_char startc; volatile u_char stopc; volatile u_char vnext; volatile u_char hflow; volatile u_char fillc; volatile u_char ochar; volatile u_char omask; u_char filler7; u_char filler8[28];}; #define SRXLWATER 0xE0#define SRXHWATER 0xE1#define STOUT 0xE2#define PAUSETX 0xE3#define RESUMETX 0xE4#define SAUXONOFFC 0xE6#define SENDBREAK 0xE8#define SETMODEM 0xE9#define SETIFLAGS 0xEA#define SONOFFC 0xEB#define STXLWATER 0xEC#define PAUSERX 0xEE#define RESUMERX 0xEF#define SETBUFFER 0xF2#define SETCOOKED 0xF3#define SETHFLOW 0xF4#define SETCTRLFLAGS 0xF5#define SETVNEXT 0xF6#define BREAK_IND 0x01#define LOWTX_IND 0x02#define EMPTYTX_IND 0x04#define DATA_IND 0x08#define MODEMCHG_IND 0x20#define ALL_IND (BREAK_IND|LOWTX_IND|EMPTYTX_IND|DATA_IND|MODEMCHG_IND)#define RTS 0x02#define CD 0x08#define DSR 0x10#define CTS 0x20#define RI 0x40#define DTR 0x80/* pcxx.h */#define FEPCODESEG 0x0200L#define FEPCODE 0x2000L#define BIOSCODE 0xf800L#define MISCGLOBAL 0x0C00L#define NPORT 0x0C22L#define MBOX 0x0C40L#define PORTBASE 0x0C90L#define BOTWIN 0x100L#define TOPWIN 0xFF00L#define FEPCLR 0x00#define FEPMEM 0x02#define FEPRST 0x04#define FEPINT 0x08#define FEPMASK 0x0e#define FEPWIN 0x80#define PCXI 0#define PCXE 1#define PCXEVE 2static char * const board_desc[] = { "PC/Xi (64K)", "PC/Xe (64K)", "PC/Xe (8K) ",};#define STARTC 021#define STOPC 023#define IAIXON 0x2000struct board_info { u_char status; u_char type; u_char altpin; ushort numports; ushort port; u_long membase;};#define TXSTOPPED 0x1#define LOWWAIT 0x2#define EMPTYWAIT 0x4#define DISABLED 0#define ENABLED 1#define OFF 0#define ON 1#define FEPTIMEOUT 200000 #define SERIAL_TYPE_NORMAL 1#define SERIAL_TYPE_CALLOUT 2#define PCXE_EVENT_HANGUP 1struct channel { u_char unit; /* board unit number */ u_char omodem; /* FEP output modem status */ u_char imodem; /* FEP input modem status */ u_char modemfake; /* Modem values to be forced */ u_char modem; /* Force values */ u_char hflow; u_char dsr; u_char dcd; u_char stopc; u_char startc; u_char stopca; u_char startca; u_char fepstopc; u_char fepstartc; u_char fepstopca; u_char fepstartca; u_char txwin; u_char rxwin; ushort fepiflag; ushort fepcflag; ushort fepoflag; ushort txbufhead; ushort txbufsize; ushort rxbufhead; ushort rxbufsize; int close_delay; int count; int blocked_open; int event; int asyncflags; uint dev; long session; long pgrp; u_long statusflags; u_long c_iflag; u_long c_cflag; u_long c_lflag; u_long c_oflag; u_char *txptr; u_char *rxptr; struct board_info *board; struct board_chan *brdchan; struct digi_struct digiext; struct tty *tty; struct termios normal_termios; struct termios callout_termios; volatile struct global_data *mailbox;};/* flags for configuring */#define DGBFLAG_ALTPIN 0x0001 /* chande DCD and DCD */#define DGBFLAG_NOWIN 0x0002 /* use windowed PC/Xe as non-windowed */#define DB_RD 0x0001#define DB_WR 0x0002#define DB_WIN 0x0004#define DB_INFO 0x0008#define DB_EXCEPT 0x0010#define DB_OPEN 0x0100#define DB_CLOSE 0x0200#define DB_DATA 0x0400#define DB_RXDATA 0x0401#define DB_TXDATA 0x0402#define DB_EVENT 0x0800#define DB_MODEM 0x1000#define DB_BREAK 0x2000#define DB_PARAM 0x4000#define DB_FEP 0x8000/* debugging printout */#ifdef DEBUG#define DPRINT1(l,a1) (dgbdebug&l ? printf(a1) : 0)#define DPRINT2(l,a1,a2) (dgbdebug&l ? printf(a1,a2) : 0)#define DPRINT3(l,a1,a2,a3) (dgbdebug&l ? printf(a1,a2,a3) : 0)#define DPRINT4(l,a1,a2,a3,a4) (dgbdebug&l ? printf(a1,a2,a3,a4) : 0)#define DPRINT5(l,a1,a2,a3,a4,a5) (dgbdebug&l ? printf(a1,a2,a3,a4,a5) : 0)#define DPRINT6(l,a1,a2,a3,a4,a5,a6) (dgbdebug&l ? printf(a1,a2,a3,a4,a5,a6) : 0)#define DPRINT7(l,a1,a2,a3,a4,a5,a6,a7) (dgbdebug&l ? printf(a1,a2,a3,a4,a5,a6,a7) : 0)#else#define DPRINT1(l,a1)#define DPRINT2(l,a1,a2)#define DPRINT3(l,a1,a2,a3)#define DPRINT4(l,a1,a2,a3,a4)#define DPRINT5(l,a1,a2,a3,a4,a5)#define DPRINT6(l,a1,a2,a3,a4,a5,a6)#define DPRINT7(l,a1,a2,a3,a4,a5,a6,a7)#endif /* These are termios bits as the FEP understands them *//* c_cflag bits */#define FEP_CBAUD 0x00000f#define FEP_B0 0x000000 /* hang up */#define FEP_B50 0x000001#define FEP_B75 0x000002#define FEP_B110 0x000003#define FEP_B134 0x000004#define FEP_B150 0x000005#define FEP_B200 0x000006#define FEP_B300 0x000007#define FEP_B600 0x000008#define FEP_B1200 0x000009#define FEP_B1800 0x00000a#define FEP_B2400 0x00000b#define FEP_B4800 0x00000c#define FEP_B9600 0x00000d#define FEP_B19200 0x00000e#define FEP_B38400 0x00000f#define FEP_EXTA FEP_B19200#define FEP_EXTB FEP_B38400#define FEP_CSIZE 0x000030#define FEP_CS5 0x000000#define FEP_CS6 0x000010#define FEP_CS7 0x000020#define FEP_CS8 0x000030#define FEP_CSTOPB 0x000040#define FEP_CREAD 0x000080#define FEP_PARENB 0x000100#define FEP_PARODD 0x000200#define FEP_CLOCAL 0x000800#define FEP_FASTBAUD 0x000400/* c_iflag bits */#define FEP_IGNBRK 0000001#define FEP_BRKINT 0000002#define FEP_IGNPAR 0000004#define FEP_PARMRK 0000010#define FEP_INPCK 0000020#define FEP_ISTRIP 0000040#define FEP_IXON 0002000#define FEP_IXANY 0004000#define FEP_IXOFF 0010000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -