| Viewing file:  scc.h (4.44 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
/* $Id: scc.h,v 1.29 1997/04/02 14:56:45 jreuter Exp jreuter $ */
 #ifndef _UAPI_SCC_H
 #define _UAPI_SCC_H
 
 
 /* selection of hardware types */
 
 #define PA0HZP        0x00    /* hardware type for PA0HZP SCC card and compatible */
 #define EAGLE        0x01    /* hardware type for EAGLE card */
 #define PC100        0x02    /* hardware type for PC100 card */
 #define PRIMUS        0x04    /* hardware type for PRIMUS-PC (DG9BL) card */
 #define DRSI        0x08    /* hardware type for DRSI PC*Packet card */
 #define BAYCOM        0x10    /* hardware type for BayCom (U)SCC */
 
 /* DEV ioctl() commands */
 
 enum SCC_ioctl_cmds {
 SIOCSCCRESERVED = SIOCDEVPRIVATE,
 SIOCSCCCFG,
 SIOCSCCINI,
 SIOCSCCCHANINI,
 SIOCSCCSMEM,
 SIOCSCCGKISS,
 SIOCSCCSKISS,
 SIOCSCCGSTAT,
 SIOCSCCCAL
 };
 
 /* Device parameter control (from WAMPES) */
 
 enum L1_params {
 PARAM_DATA,
 PARAM_TXDELAY,
 PARAM_PERSIST,
 PARAM_SLOTTIME,
 PARAM_TXTAIL,
 PARAM_FULLDUP,
 PARAM_SOFTDCD,        /* was: PARAM_HW */
 PARAM_MUTE,        /* ??? */
 PARAM_DTR,
 PARAM_RTS,
 PARAM_SPEED,
 PARAM_ENDDELAY,        /* ??? */
 PARAM_GROUP,
 PARAM_IDLE,
 PARAM_MIN,
 PARAM_MAXKEY,
 PARAM_WAIT,
 PARAM_MAXDEFER,
 PARAM_TX,
 PARAM_HWEVENT = 31,
 PARAM_RETURN = 255    /* reset kiss mode */
 };
 
 /* fulldup parameter */
 
 enum FULLDUP_modes {
 KISS_DUPLEX_HALF,    /* normal CSMA operation */
 KISS_DUPLEX_FULL,    /* fullduplex, key down trx after transmission */
 KISS_DUPLEX_LINK,    /* fullduplex, key down trx after 'idletime' sec */
 KISS_DUPLEX_OPTIMA    /* fullduplex, let the protocol layer control the hw */
 };
 
 /* misc. parameters */
 
 #define TIMER_OFF    65535U    /* to switch off timers */
 #define NO_SUCH_PARAM    65534U    /* param not implemented */
 
 /* HWEVENT parameter */
 
 enum HWEVENT_opts {
 HWEV_DCD_ON,
 HWEV_DCD_OFF,
 HWEV_ALL_SENT
 };
 
 /* channel grouping */
 
 #define RXGROUP        0100    /* if set, only tx when all channels clear */
 #define TXGROUP        0200    /* if set, don't transmit simultaneously */
 
 /* Tx/Rx clock sources */
 
 enum CLOCK_sources {
 CLK_DPLL,    /* normal halfduplex operation */
 CLK_EXTERNAL,    /* external clocking (G3RUH/DF9IC modems) */
 CLK_DIVIDER,    /* Rx = DPLL, Tx = divider (fullduplex with */
 /* modems without clock regeneration */
 CLK_BRG        /* experimental fullduplex mode with DPLL/BRG for */
 /* MODEMs without clock recovery */
 };
 
 /* Tx state */
 
 enum TX_state {
 TXS_IDLE,    /* Transmitter off, no data pending */
 TXS_BUSY,    /* waiting for permission to send / tailtime */
 TXS_ACTIVE,    /* Transmitter on, sending data */
 TXS_NEWFRAME,    /* reset CRC and send (next) frame */
 TXS_IDLE2,    /* Transmitter on, no data pending */
 TXS_WAIT,    /* Waiting for Mintime to expire */
 TXS_TIMEOUT    /* We had a transmission timeout */
 };
 
 typedef unsigned long io_port;    /* type definition for an 'io port address' */
 
 /* SCC statistical information */
 
 struct scc_stat {
 long rxints;            /* Receiver interrupts */
 long txints;            /* Transmitter interrupts */
 long exints;            /* External/status interrupts */
 long spints;            /* Special receiver interrupts */
 
 long txframes;          /* Packets sent */
 long rxframes;          /* Number of Frames Actually Received */
 long rxerrs;            /* CRC Errors */
 long txerrs;        /* KISS errors */
 
 unsigned int nospace;    /* "Out of buffers" */
 unsigned int rx_over;    /* Receiver Overruns */
 unsigned int tx_under;    /* Transmitter Underruns */
 
 unsigned int tx_state;    /* Transmitter state */
 int tx_queued;        /* tx frames enqueued */
 
 unsigned int maxqueue;    /* allocated tx_buffers */
 unsigned int bufsize;    /* used buffersize */
 };
 
 struct scc_modem {
 long speed;        /* Line speed, bps */
 char clocksrc;        /* 0 = DPLL, 1 = external, 2 = divider */
 char nrz;        /* NRZ instead of NRZI */
 };
 
 struct scc_kiss_cmd {
 int       command;    /* one of the KISS-Commands defined above */
 unsigned param;        /* KISS-Param */
 };
 
 struct scc_hw_config {
 io_port data_a;        /* data port channel A */
 io_port ctrl_a;        /* control port channel A */
 io_port data_b;        /* data port channel B */
 io_port ctrl_b;        /* control port channel B */
 io_port vector_latch;    /* INTACK-Latch (#) */
 io_port    special;    /* special function port */
 
 int    irq;        /* irq */
 long    clock;        /* clock */
 char    option;        /* command for function port */
 
 char brand;        /* hardware type */
 char escc;        /* use ext. features of a 8580/85180/85280 */
 };
 
 /* (#) only one INTACK latch allowed. */
 
 
 struct scc_mem_config {
 unsigned int dummy;
 unsigned int bufsize;
 };
 
 struct scc_calibrate {
 unsigned int time;
 unsigned char pattern;
 };
 
 #endif /* _UAPI_SCC_H */
 
 |