The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/gnu/i386/isa/dgreg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  *  dgreg.h $FreeBSD$
    3  *
    4  *  Digiboard driver.
    5  *
    6  *  Stage 1. "Better than nothing".
    7  *
    8  *  Based on sio driver by Bruce Evans and on Linux driver by Troy 
    9  *  De Jongh <troyd@digibd.com> or <troyd@skypoint.com> 
   10  *  which is under GNU General Public License version 2 so this driver 
   11  *  is forced to be under GPL 2 too.
   12  *
   13  *  Written by Serge Babkin,
   14  *      Joint Stock Commercial Bank "Chelindbank"
   15  *      (Chelyabinsk, Russia)
   16  *      babkin@hq.icb.chel.su
   17  */
   18 
   19 #define MAX_DGB_PORTS   32
   20 
   21 /* digi.h */
   22 /*          Definitions for DigiBoard ditty(1) command.                 */
   23 
   24 #if !defined(TIOCMODG)
   25 #define TIOCMODG        ('d'<<8) | 250          /* get modem ctrl state */
   26 #define TIOCMODS        ('d'<<8) | 251          /* set modem ctrl state */
   27 #endif
   28 
   29 #if !defined(TIOCMSET)
   30 #define TIOCMSET        ('d'<<8) | 252          /* set modem ctrl state */
   31 #define TIOCMGET        ('d'<<8) | 253          /* set modem ctrl state */
   32 #endif
   33 
   34 #if !defined(TIOCMBIC)
   35 #define TIOCMBIC        ('d'<<8) | 254          /* set modem ctrl state */
   36 #define TIOCMBIS        ('d'<<8) | 255          /* set modem ctrl state */
   37 #endif
   38 
   39 #if !defined(TIOCSDTR)
   40 #define TIOCSDTR        ('e'<<8) | 0            /* set DTR              */
   41 #define TIOCCDTR        ('e'<<8) | 1            /* clear DTR            */
   42 #endif
   43 
   44 /************************************************************************
   45  * Ioctl command arguments for DIGI parameters.
   46  ************************************************************************/
   47 #define DIGI_GETA       ('e'<<8) | 94           /* Read params          */
   48 
   49 #define DIGI_SETA       ('e'<<8) | 95           /* Set params           */
   50 #define DIGI_SETAW      ('e'<<8) | 96           /* Drain & set params   */
   51 #define DIGI_SETAF      ('e'<<8) | 97           /* Drain, flush & set params */
   52 
   53 #define DIGI_GETFLOW    ('e'<<8) | 99           /* Get startc/stopc flow */
   54                                                 /* control characters    */
   55 #define DIGI_SETFLOW    ('e'<<8) | 100          /* Set startc/stopc flow */
   56                                                 /* control characters    */
   57 #define DIGI_GETAFLOW   ('e'<<8) | 101          /* Get Aux. startc/stopc */
   58                                                 /* flow control chars    */
   59 #define DIGI_SETAFLOW   ('e'<<8) | 102          /* Set Aux. startc/stopc */
   60                                                 /* flow control chars    */
   61 
   62 struct  digiflow_struct {
   63         unsigned char   startc;                         /* flow cntl start char */
   64         unsigned char   stopc;                          /* flow cntl stop char  */
   65 };
   66 
   67 typedef struct digiflow_struct digiflow_t;
   68 
   69 
   70 /************************************************************************
   71  * Values for digi_flags 
   72  ************************************************************************/
   73 #define DIGI_IXON       0x0001          /* Handle IXON in the FEP       */
   74 #define DIGI_FAST       0x0002          /* Fast baud rates              */
   75 #define RTSPACE         0x0004          /* RTS input flow control       */
   76 #define CTSPACE         0x0008          /* CTS output flow control      */
   77 #define DSRPACE         0x0010          /* DSR output flow control      */
   78 #define DCDPACE         0x0020          /* DCD output flow control      */
   79 #define DTRPACE         0x0040          /* DTR input flow control       */
   80 #define DIGI_FORCEDCD   0x0100          /* Force carrier                */
   81 #define DIGI_ALTPIN     0x0200          /* Alternate RJ-45 pin config   */
   82 #define DIGI_AIXON      0x0400          /* Aux flow control in fep      */
   83 
   84 
   85 /************************************************************************
   86  * Structure used with ioctl commands for DIGI parameters.
   87  ************************************************************************/
   88 struct digi_struct {
   89         unsigned short  digi_flags;             /* Flags (see above)    */
   90 };
   91 
   92 typedef struct digi_struct digi_t;
   93 
   94 /* fep.h */
   95 
   96 #define FEP_CSTART       0x400L
   97 #define FEP_CMAX         0x800L
   98 #define FEP_ISTART       0x800L
   99 #define FEP_IMAX         0xC00L
  100 #define FEP_CIN          0xD10L
  101 #define FEP_GLOBAL       0xD10L
  102 #define FEP_EIN          0xD18L
  103 #define FEPSTAT      0xD20L
  104 #define CHANSTRUCT   0x1000L
  105 #define RXTXBUF      0x4000L
  106 
  107 
  108 struct global_data {
  109         volatile ushort cin;
  110         volatile ushort cout;
  111         volatile ushort cstart;
  112         volatile ushort cmax;
  113         volatile ushort ein;
  114         volatile ushort eout;
  115         volatile ushort istart;
  116         volatile ushort imax;
  117 };
  118 
  119 
  120 struct board_chan {
  121         int filler1; 
  122         int filler2;
  123         volatile ushort tseg;
  124         volatile ushort tin;
  125         volatile ushort tout;
  126         volatile ushort tmax;
  127         
  128         volatile ushort rseg;
  129         volatile ushort rin;
  130         volatile ushort rout;
  131         volatile ushort rmax;
  132         
  133         volatile ushort tlow;
  134         volatile ushort rlow;
  135         volatile ushort rhigh;
  136         volatile ushort incr;
  137         
  138         volatile ushort etime;
  139         volatile ushort edelay;
  140         volatile u_char *dev;
  141         
  142         volatile ushort iflag;
  143         volatile ushort oflag;
  144         volatile ushort cflag;
  145         volatile ushort gmask;
  146         
  147         volatile ushort col;
  148         volatile ushort delay;
  149         volatile ushort imask;
  150         volatile ushort tflush;
  151 
  152         int filler3;
  153         int filler4;
  154         int filler5;
  155         int filler6;
  156         
  157         volatile u_char num;
  158         volatile u_char ract;
  159         volatile u_char bstat;
  160         volatile u_char tbusy;
  161         volatile u_char iempty;
  162         volatile u_char ilow;
  163         volatile u_char idata;
  164         volatile u_char eflag;
  165         
  166         volatile u_char tflag;
  167         volatile u_char rflag;
  168         volatile u_char xmask;
  169         volatile u_char xval;
  170         volatile u_char mstat;
  171         volatile u_char mchange;
  172         volatile u_char mint;
  173         volatile u_char lstat;
  174 
  175         volatile u_char mtran;
  176         volatile u_char orun;
  177         volatile u_char startca;
  178         volatile u_char stopca;
  179         volatile u_char startc;
  180         volatile u_char stopc;
  181         volatile u_char vnext;
  182         volatile u_char hflow;
  183 
  184         volatile u_char fillc;
  185         volatile u_char ochar;
  186         volatile u_char omask;
  187 
  188         u_char filler7;
  189         u_char filler8[28];
  190 }; 
  191 
  192 
  193 #define SRXLWATER      0xE0
  194 #define SRXHWATER      0xE1
  195 #define STOUT          0xE2
  196 #define PAUSETX        0xE3
  197 #define RESUMETX       0xE4
  198 #define SAUXONOFFC     0xE6
  199 #define SENDBREAK      0xE8
  200 #define SETMODEM       0xE9
  201 #define SETIFLAGS      0xEA
  202 #define SONOFFC        0xEB
  203 #define STXLWATER      0xEC
  204 #define PAUSERX        0xEE
  205 #define RESUMERX       0xEF
  206 #define SETBUFFER      0xF2
  207 #define SETCOOKED      0xF3
  208 #define SETHFLOW       0xF4
  209 #define SETCTRLFLAGS   0xF5
  210 #define SETVNEXT       0xF6
  211 
  212 
  213 
  214 #define BREAK_IND        0x01
  215 #define LOWTX_IND        0x02
  216 #define EMPTYTX_IND      0x04
  217 #define DATA_IND         0x08
  218 #define MODEMCHG_IND     0x20
  219 
  220 #define ALL_IND (BREAK_IND|LOWTX_IND|EMPTYTX_IND|DATA_IND|MODEMCHG_IND)
  221 
  222 
  223 #define RTS   0x02
  224 #define CD    0x08
  225 #define DSR   0x10
  226 #define CTS   0x20
  227 #define RI    0x40
  228 #define DTR   0x80
  229 
  230 /* pcxx.h */
  231 
  232 #define FEPCODESEG  0x0200L
  233 #define FEPCODE     0x2000L
  234 #define BIOSCODE    0xf800L
  235 
  236 #define MISCGLOBAL  0x0C00L
  237 #define NPORT       0x0C22L
  238 #define MBOX        0x0C40L
  239 #define PORTBASE    0x0C90L
  240 #define BOTWIN      0x100L
  241 #define TOPWIN      0xFF00L
  242 
  243 #define FEPCLR      0x00
  244 #define FEPMEM      0x02
  245 #define FEPRST      0x04
  246 #define FEPINT      0x08
  247 #define FEPMASK     0x0e
  248 #define FEPWIN      0x80
  249 
  250 #define PCXI    0
  251 #define PCXE    1
  252 #define PCXEVE  2
  253 
  254 static char * const board_desc[] = {
  255         "PC/Xi (64K)",
  256         "PC/Xe (64K)",
  257         "PC/Xe (8K) ",
  258 };
  259 
  260 #define STARTC      021
  261 #define STOPC       023
  262 #define IAIXON      0x2000
  263 
  264 
  265 struct board_info       {
  266         u_char status;
  267         u_char type;
  268         u_char altpin;
  269         ushort numports;
  270         ushort port;
  271         u_long  membase;
  272 };
  273 
  274 
  275 #define TXSTOPPED   0x1
  276 #define LOWWAIT         0x2
  277 #define EMPTYWAIT       0x4
  278 
  279 #define DISABLED   0
  280 #define ENABLED    1
  281 #define OFF        0
  282 #define ON         1
  283 
  284 #define FEPTIMEOUT 200000  
  285 #define SERIAL_TYPE_NORMAL      1
  286 #define SERIAL_TYPE_CALLOUT     2
  287 #define PCXE_EVENT_HANGUP   1
  288 
  289 struct channel {
  290         u_char unit;           /* board unit number */
  291         u_char omodem;         /* FEP output modem status     */
  292         u_char imodem;         /* FEP input modem status      */
  293         u_char modemfake;      /* Modem values to be forced   */
  294         u_char modem;          /* Force values                */
  295         u_char hflow;
  296         u_char dsr;
  297         u_char dcd;
  298         u_char stopc;
  299         u_char startc;
  300         u_char stopca;
  301         u_char startca;
  302         u_char fepstopc;
  303         u_char fepstartc;
  304         u_char fepstopca;
  305         u_char fepstartca;
  306         u_char txwin;
  307         u_char rxwin;
  308         ushort fepiflag;
  309         ushort fepcflag;
  310         ushort fepoflag;
  311         ushort txbufhead;
  312         ushort txbufsize;
  313         ushort rxbufhead;
  314         ushort rxbufsize;
  315         int close_delay;
  316         int count;
  317         int blocked_open;
  318         int event;
  319         int asyncflags;
  320         uint dev;
  321         long session;
  322         long pgrp;
  323         u_long statusflags;
  324         u_long c_iflag;
  325         u_long c_cflag;
  326         u_long c_lflag;
  327         u_long c_oflag;
  328         u_char *txptr;
  329         u_char *rxptr;
  330         struct board_info *board;
  331         struct board_chan *brdchan;
  332         struct digi_struct digiext;
  333         struct tty *tty;
  334         struct termios normal_termios;
  335         struct termios callout_termios;
  336         volatile struct global_data *mailbox;
  337 };
  338 
  339 /* flags for configuring */
  340 
  341 #define DGBFLAG_ALTPIN  0x0001  /* chande DCD and DCD */
  342 #define DGBFLAG_NOWIN   0x0002  /* use windowed PC/Xe as non-windowed */
  343 
  344 #define DB_RD     0x0001
  345 #define DB_WR     0x0002
  346 #define DB_WIN    0x0004
  347 #define DB_INFO   0x0008
  348 #define DB_EXCEPT 0x0010
  349 #define DB_OPEN   0x0100
  350 #define DB_CLOSE  0x0200
  351 #define DB_DATA   0x0400
  352 #define DB_RXDATA 0x0401
  353 #define DB_TXDATA 0x0402
  354 #define DB_EVENT  0x0800
  355 #define DB_MODEM  0x1000
  356 #define DB_BREAK  0x2000
  357 #define DB_PARAM  0x4000
  358 #define DB_FEP    0x8000
  359 
  360 /* debugging printout */
  361 
  362 #ifdef DGB_DEBUG
  363 #define DPRINT1(l,a1)                   (dgbdebug&l ? printf(a1) : 0)
  364 #define DPRINT2(l,a1,a2)                (dgbdebug&l ? printf(a1,a2) : 0)
  365 #define DPRINT3(l,a1,a2,a3)             (dgbdebug&l ? printf(a1,a2,a3) : 0)
  366 #define DPRINT4(l,a1,a2,a3,a4)          (dgbdebug&l ? printf(a1,a2,a3,a4) : 0)
  367 #define DPRINT5(l,a1,a2,a3,a4,a5)       (dgbdebug&l ? printf(a1,a2,a3,a4,a5) : 0)
  368 #define DPRINT6(l,a1,a2,a3,a4,a5,a6)    (dgbdebug&l ? printf(a1,a2,a3,a4,a5,a6) : 0)
  369 #define DPRINT7(l,a1,a2,a3,a4,a5,a6,a7) (dgbdebug&l ? printf(a1,a2,a3,a4,a5,a6,a7) : 0)
  370 #else
  371 #define DPRINT1(l,a1)
  372 #define DPRINT2(l,a1,a2)
  373 #define DPRINT3(l,a1,a2,a3)
  374 #define DPRINT4(l,a1,a2,a3,a4)
  375 #define DPRINT5(l,a1,a2,a3,a4,a5)
  376 #define DPRINT6(l,a1,a2,a3,a4,a5,a6)
  377 #define DPRINT7(l,a1,a2,a3,a4,a5,a6,a7)
  378 #endif
  379 
  380 
  381         /* These are termios bits as the FEP understands them */
  382 
  383 /* c_cflag bits */
  384 #define FEP_CBAUD       0x00000f
  385 #define  FEP_B0         0x000000                /* hang up */
  386 #define  FEP_B50        0x000001
  387 #define  FEP_B75        0x000002
  388 #define  FEP_B110       0x000003
  389 #define  FEP_B134       0x000004
  390 #define  FEP_B150       0x000005
  391 #define  FEP_B200       0x000006
  392 #define  FEP_B300       0x000007
  393 #define  FEP_B600       0x000008
  394 #define  FEP_B1200      0x000009
  395 #define  FEP_B1800      0x00000a
  396 #define  FEP_B2400      0x00000b
  397 #define  FEP_B4800      0x00000c
  398 #define  FEP_B9600      0x00000d
  399 #define  FEP_B19200     0x00000e
  400 #define  FEP_B38400     0x00000f
  401 #define FEP_EXTA FEP_B19200
  402 #define FEP_EXTB FEP_B38400
  403 #define FEP_CSIZE       0x000030
  404 #define   FEP_CS5       0x000000
  405 #define   FEP_CS6       0x000010
  406 #define   FEP_CS7       0x000020
  407 #define   FEP_CS8       0x000030
  408 #define FEP_CSTOPB      0x000040
  409 #define FEP_CREAD       0x000080
  410 #define FEP_PARENB      0x000100
  411 #define FEP_PARODD      0x000200
  412 #define FEP_CLOCAL      0x000800
  413 #define FEP_FASTBAUD    0x000400
  414 /* c_iflag bits */
  415 #define FEP_IGNBRK      0000001
  416 #define FEP_BRKINT      0000002
  417 #define FEP_IGNPAR      0000004
  418 #define FEP_PARMRK      0000010
  419 #define FEP_INPCK       0000020
  420 #define FEP_ISTRIP      0000040
  421 #define FEP_IXON        0002000
  422 #define FEP_IXANY       0004000
  423 #define FEP_IXOFF       0010000
  424 

Cache object: caf85065cdfca9928eacc81c0d398e82


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.