source: svn/trunk/newcon3bcm2_21bu/toolchain/mips-linux-uclibc/include/linux/scc.h @ 2

Last change on this file since 2 was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 4.4 KB
Line 
1
2#ifndef _SCC_H
3#define _SCC_H
4
5
6/* selection of hardware types */
7
8#define PA0HZP          0x00    /* hardware type for PA0HZP SCC card and compatible */
9#define EAGLE           0x01    /* hardware type for EAGLE card */
10#define PC100           0x02    /* hardware type for PC100 card */
11#define PRIMUS          0x04    /* hardware type for PRIMUS-PC (DG9BL) card */
12#define DRSI            0x08    /* hardware type for DRSI PC*Packet card */
13#define BAYCOM          0x10    /* hardware type for BayCom (U)SCC */
14
15/* DEV ioctl() commands */
16
17enum SCC_ioctl_cmds {
18        SIOCSCCRESERVED = SIOCDEVPRIVATE,
19        SIOCSCCCFG,
20        SIOCSCCINI,
21        SIOCSCCCHANINI,
22        SIOCSCCSMEM,
23        SIOCSCCGKISS,
24        SIOCSCCSKISS,
25        SIOCSCCGSTAT,
26        SIOCSCCCAL
27};
28
29/* Device parameter control (from WAMPES) */
30
31enum L1_params {
32        PARAM_DATA,
33        PARAM_TXDELAY,
34        PARAM_PERSIST,
35        PARAM_SLOTTIME,
36        PARAM_TXTAIL,
37        PARAM_FULLDUP,
38        PARAM_SOFTDCD,          /* was: PARAM_HW */
39        PARAM_MUTE,             /* ??? */
40        PARAM_DTR,
41        PARAM_RTS,
42        PARAM_SPEED,
43        PARAM_ENDDELAY,         /* ??? */
44        PARAM_GROUP,
45        PARAM_IDLE,
46        PARAM_MIN,
47        PARAM_MAXKEY,
48        PARAM_WAIT,
49        PARAM_MAXDEFER,
50        PARAM_TX,
51        PARAM_HWEVENT = 31,
52        PARAM_RETURN = 255      /* reset kiss mode */
53};
54
55/* fulldup parameter */
56
57enum FULLDUP_modes {
58        KISS_DUPLEX_HALF,       /* normal CSMA operation */
59        KISS_DUPLEX_FULL,       /* fullduplex, key down trx after transmission */
60        KISS_DUPLEX_LINK,       /* fullduplex, key down trx after 'idletime' sec */
61        KISS_DUPLEX_OPTIMA      /* fullduplex, let the protocol layer control the hw */
62};
63
64/* misc. parameters */
65
66#define TIMER_OFF       65535U  /* to switch off timers */
67#define NO_SUCH_PARAM   65534U  /* param not implemented */
68
69/* HWEVENT parameter */
70
71enum HWEVENT_opts {
72        HWEV_DCD_ON,
73        HWEV_DCD_OFF,
74        HWEV_ALL_SENT
75};
76
77/* channel grouping */
78
79#define RXGROUP         0100    /* if set, only tx when all channels clear */
80#define TXGROUP         0200    /* if set, don't transmit simultaneously */
81
82/* Tx/Rx clock sources */
83
84enum CLOCK_sources {
85        CLK_DPLL,       /* normal halfduplex operation */
86        CLK_EXTERNAL,   /* external clocking (G3RUH/DF9IC modems) */
87        CLK_DIVIDER,    /* Rx = DPLL, Tx = divider (fullduplex with */
88                        /* modems without clock regeneration */
89        CLK_BRG         /* experimental fullduplex mode with DPLL/BRG for */
90                        /* MODEMs without clock recovery */
91};
92
93/* Tx state */
94
95enum TX_state {
96        TXS_IDLE,       /* Transmitter off, no data pending */
97        TXS_BUSY,       /* waiting for permission to send / tailtime */
98        TXS_ACTIVE,     /* Transmitter on, sending data */
99        TXS_NEWFRAME,   /* reset CRC and send (next) frame */
100        TXS_IDLE2,      /* Transmitter on, no data pending */
101        TXS_WAIT,       /* Waiting for Mintime to expire */
102        TXS_TIMEOUT     /* We had a transmission timeout */
103};
104
105typedef unsigned long io_port;  /* type definition for an 'io port address' */
106
107/* SCC statistical information */
108
109struct scc_stat {
110        long rxints;            /* Receiver interrupts */
111        long txints;            /* Transmitter interrupts */
112        long exints;            /* External/status interrupts */
113        long spints;            /* Special receiver interrupts */
114
115        long txframes;          /* Packets sent */
116        long rxframes;          /* Number of Frames Actually Received */
117        long rxerrs;            /* CRC Errors */
118        long txerrs;            /* KISS errors */
119       
120        unsigned int nospace;   /* "Out of buffers" */
121        unsigned int rx_over;   /* Receiver Overruns */
122        unsigned int tx_under;  /* Transmitter Underruns */
123
124        unsigned int tx_state;  /* Transmitter state */
125        int tx_queued;          /* tx frames enqueued */
126
127        unsigned int maxqueue;  /* allocated tx_buffers */
128        unsigned int bufsize;   /* used buffersize */
129};
130
131struct scc_modem {
132        long speed;             /* Line speed, bps */
133        char clocksrc;          /* 0 = DPLL, 1 = external, 2 = divider */
134        char nrz;               /* NRZ instead of NRZI */       
135};
136
137struct scc_kiss_cmd {
138        int      command;       /* one of the KISS-Commands defined above */
139        unsigned param;         /* KISS-Param */
140};
141
142struct scc_hw_config {
143        io_port data_a;         /* data port channel A */
144        io_port ctrl_a;         /* control port channel A */
145        io_port data_b;         /* data port channel B */
146        io_port ctrl_b;         /* control port channel B */
147        io_port vector_latch;   /* INTACK-Latch (#) */
148        io_port special;        /* special function port */
149
150        int     irq;            /* irq */
151        long    clock;          /* clock */
152        char    option;         /* command for function port */
153
154        char brand;             /* hardware type */
155        char escc;              /* use ext. features of a 8580/85180/85280 */
156};
157
158/* (#) only one INTACK latch allowed. */
159
160
161struct scc_mem_config {
162        unsigned int dummy;
163        unsigned int bufsize;
164};
165
166struct scc_calibrate {
167        unsigned int time;
168        unsigned char pattern;
169};
170
171#endif /* defined(_SCC_H) */
Note: See TracBrowser for help on using the repository browser.