linux/drivers/staging/dgnc/digi.h
<<
>>
Prefs
   1/*
   2 * Copyright 2003 Digi International (www.digi.com)
   3 *      Scott H Kilau <Scott_Kilau at digi dot com>
   4 *
   5 * This program is free software; you can redistribute it and/or modify
   6 * it under the terms of the GNU General Public License as published by
   7 * the Free Software Foundation; either version 2, or (at your option)
   8 * any later version.
   9 *
  10 * This program is distributed in the hope that it will be useful,
  11 * but WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED; without even the
  12 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  13 * PURPOSE.  See the GNU General Public License for more details.
  14 */
  15
  16#ifndef __DIGI_H
  17#define __DIGI_H
  18
  19#ifndef TIOCM_LE
  20#define         TIOCM_LE        0x01            /* line enable          */
  21#define         TIOCM_DTR       0x02            /* data terminal ready  */
  22#define         TIOCM_RTS       0x04            /* request to send      */
  23#define         TIOCM_ST        0x08            /* secondary transmit   */
  24#define         TIOCM_SR        0x10            /* secondary receive    */
  25#define         TIOCM_CTS       0x20            /* clear to send        */
  26#define         TIOCM_CAR       0x40            /* carrier detect       */
  27#define         TIOCM_RNG       0x80            /* ring indicator       */
  28#define         TIOCM_DSR       0x100           /* data set ready       */
  29#define         TIOCM_RI        TIOCM_RNG       /* ring (alternate)     */
  30#define         TIOCM_CD        TIOCM_CAR       /* carrier detect (alt) */
  31#endif
  32
  33#if !defined(TIOCMSET)
  34#define TIOCMSET        (('d' << 8) | 252)      /* set modem ctrl state */
  35#define TIOCMGET        (('d' << 8) | 253)      /* set modem ctrl state */
  36#endif
  37
  38#if !defined(TIOCMBIC)
  39#define TIOCMBIC        (('d' << 8) | 254)      /* set modem ctrl state */
  40#define TIOCMBIS        (('d' << 8) | 255)      /* set modem ctrl state */
  41#endif
  42
  43#define DIGI_GETA       (('e' << 8) | 94)       /* Read params          */
  44#define DIGI_SETA       (('e' << 8) | 95)       /* Set params           */
  45#define DIGI_SETAW      (('e' << 8) | 96)       /* Drain & set params   */
  46#define DIGI_SETAF      (('e' << 8) | 97)       /* Drain, flush & set params */
  47#define DIGI_GET_NI_INFO (('d' << 8) | 250) /* Non-intelligent state info */
  48#define DIGI_LOOPBACK (('d' << 8) | 252) /*
  49                                        * Enable/disable UART
  50                                        * internal loopback
  51                                        */
  52#define DIGI_FAST       0x0002          /* Fast baud rates              */
  53#define RTSPACE         0x0004          /* RTS input flow control       */
  54#define CTSPACE         0x0008          /* CTS output flow control      */
  55#define DIGI_COOK       0x0080          /* Cooked processing done in FEP */
  56#define DIGI_FORCEDCD   0x0100          /* Force carrier                */
  57#define DIGI_ALTPIN     0x0200          /* Alternate RJ-45 pin config   */
  58#define DIGI_PRINTER    0x0800          /* Hold port open for flow cntrl*/
  59#define DIGI_DTR_TOGGLE 0x2000          /* Support DTR Toggle           */
  60#define DIGI_RTS_TOGGLE 0x8000          /* Support RTS Toggle           */
  61#define DIGI_PLEN       28              /* String length                */
  62#define DIGI_TSIZ       10              /* Terminal string len          */
  63
  64/************************************************************************
  65 * Structure used with ioctl commands for DIGI parameters.
  66 ************************************************************************/
  67struct digi_t {
  68        unsigned short  digi_flags;             /* Flags (see above)    */
  69        unsigned short  digi_maxcps;            /* Max printer CPS      */
  70        unsigned short  digi_maxchar;           /* Max chars in print queue */
  71        unsigned short  digi_bufsize;           /* Buffer size          */
  72        unsigned char   digi_onlen;             /* Length of ON string  */
  73        unsigned char   digi_offlen;            /* Length of OFF string */
  74        char            digi_onstr[DIGI_PLEN];  /* Printer on string    */
  75        char            digi_offstr[DIGI_PLEN]; /* Printer off string   */
  76        char            digi_term[DIGI_TSIZ];   /* terminal string      */
  77};
  78
  79/************************************************************************
  80 * Structure to get driver status information
  81 ************************************************************************/
  82struct digi_dinfo {
  83        unsigned int    dinfo_nboards;          /* # boards configured  */
  84        char            dinfo_reserved[12];     /* for future expansion */
  85        char            dinfo_version[16];      /* driver version       */
  86};
  87
  88#define DIGI_GETDD      (('d' << 8) | 248)      /* get driver info      */
  89
  90/************************************************************************
  91 * Structure used with ioctl commands for per-board information
  92 *
  93 * physsize and memsize differ when board has "windowed" memory
  94 ************************************************************************/
  95struct digi_info {
  96        unsigned int    info_bdnum;             /* Board number (0 based)  */
  97        unsigned int    info_ioport;            /* io port address         */
  98        unsigned int    info_physaddr;          /* memory address          */
  99        unsigned int    info_physsize;          /* Size of host mem window */
 100        unsigned int    info_memsize;           /* Amount of dual-port mem */
 101                                                /* on board                */
 102        unsigned short  info_bdtype;            /* Board type              */
 103        unsigned short  info_nports;            /* number of ports         */
 104        char            info_bdstate;           /* board state             */
 105        char            info_reserved[7];       /* for future expansion    */
 106};
 107
 108#define DIGI_GETBD      (('d' << 8) | 249)      /* get board info          */
 109
 110struct digi_getbuffer /* Struct for holding buffer use counts */
 111{
 112        unsigned long tx_in;
 113        unsigned long tx_out;
 114        unsigned long rxbuf;
 115        unsigned long txbuf;
 116        unsigned long txdone;
 117};
 118
 119struct digi_getcounter {
 120        unsigned long norun;            /* number of UART overrun errors */
 121        unsigned long noflow;           /* number of buffer overflow errors */
 122        unsigned long nframe;           /* number of framing errors */
 123        unsigned long nparity;          /* number of parity errors */
 124        unsigned long nbreak;           /* number of breaks received */
 125        unsigned long rbytes;           /* number of received bytes */
 126        unsigned long tbytes;           /* number of bytes transmitted fully */
 127};
 128
 129/* Board State Definitions */
 130#define BD_RUNNING      0x0
 131#define BD_NOFEP        0x5
 132
 133#define DIGI_SETCUSTOMBAUD _IOW('e', 106, int)  /* Set integer baud rate */
 134#define DIGI_GETCUSTOMBAUD _IOR('e', 107, int)  /* Get integer baud rate */
 135
 136#define DIGI_REALPORT_GETBUFFERS (('e' << 8) | 108)
 137#define DIGI_REALPORT_SENDIMMEDIATE (('e' << 8) | 109)
 138#define DIGI_REALPORT_GETCOUNTERS (('e' << 8) | 110)
 139#define DIGI_REALPORT_GETEVENTS (('e' << 8) | 111)
 140
 141#define EV_OPU 0x0001 /* !<Output paused by client */
 142#define EV_OPS 0x0002 /* !<Output paused by reqular sw flowctrl */
 143#define EV_IPU 0x0010 /* !<Input paused unconditionally by user */
 144#define EV_IPS 0x0020 /* !<Input paused by high/low water marks */
 145#define EV_TXB 0x0040 /* !<Transmit break pending */
 146
 147/*
 148 * This structure holds data needed for the intelligent <--> nonintelligent
 149 * DPA translation
 150 */
 151struct ni_info {
 152        int board;
 153        int channel;
 154        int dtr;
 155        int rts;
 156        int cts;
 157        int dsr;
 158        int ri;
 159        int dcd;
 160        int curtx;
 161        int currx;
 162        unsigned short iflag;
 163        unsigned short oflag;
 164        unsigned short cflag;
 165        unsigned short lflag;
 166        unsigned int mstat;
 167        unsigned char hflow;
 168        unsigned char xmit_stopped;
 169        unsigned char recv_stopped;
 170        unsigned int baud;
 171};
 172
 173#define T_CLASSIC 0002
 174#define T_PCIBUS 0400
 175#define T_NEO_EXPRESS 0001
 176#define T_NEO 0000
 177
 178#define TTY_FLIPBUF_SIZE 512
 179#endif /* DIGI_H */
 180