FreeBSD/Linux Kernel Cross Reference
sys/dev/ce/ceddk.h
1 /*
2 * Middle-level code for Cronyx Tau32-PCI adapters.
3 *
4 * Copyright (C) 2004 Cronyx Engineering
5 * Copyright (C) 2004 Roman Kurakin <rik@FreeBSD.org>
6 *
7 * This software is distributed with NO WARRANTIES, not even the implied
8 * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9 *
10 * Authors grant any other persons or organisations a permission to use,
11 * modify and redistribute this software in source and binary forms,
12 * as long as this message is kept with the software, all derivative
13 * works or modified versions.
14 *
15 * $Cronyx: ceddk.h,v 1.2.6.1 2005/11/09 13:01:39 rik Exp $
16 * $FreeBSD: releng/8.4/sys/dev/ce/ceddk.h 180132 2008-06-30 21:18:27Z rik $
17 */
18
19 #define TAU32_UserContext_Add void *sys;
20 #define TAU32_UserRequest_Add void *sys; TAU32_UserRequest *next;
21
22 #include <dev/ce/tau32-ddk.h>
23
24 #define NCHAN TAU32_CHANNELS
25 #ifndef NBRD
26 # define NBRD 6
27 #endif
28 #if NBRD != 6
29 # error "NBRD != 6"
30 #endif
31
32 #define BUFSZ 1664
33
34 typedef struct _ce_buf_item_t {
35 TAU32_UserRequest req;
36 unsigned char buf [BUFSZ+4];
37 unsigned long phys;
38 } ce_buf_item_t;
39
40 typedef struct _ce_buf_t {
41 ce_buf_item_t tx_item[TAU32_IO_QUEUE];
42 ce_buf_item_t rx_item[TAU32_IO_QUEUE];
43 } ce_buf_t;
44
45 typedef struct {
46 unsigned long bpv; /* bipolar violations */
47 unsigned long fse; /* frame sync errors */
48 unsigned long crce; /* CRC errors */
49 unsigned long rcrce; /* remote CRC errors (E-bit) */
50 unsigned long uas; /* unavailable seconds */
51 unsigned long les; /* line errored seconds */
52 unsigned long es; /* errored seconds */
53 unsigned long bes; /* bursty errored seconds */
54 unsigned long ses; /* severely errored seconds */
55 unsigned long oofs; /* out of frame seconds */
56 unsigned long css; /* controlled slip seconds */
57 unsigned long dm; /* degraded minutes */
58 } ce_gstat_t;
59
60 typedef struct _ce_chan_t {
61 unsigned char num;
62 unsigned char type;
63 #define T_NONE 0 /* no channel */
64 #define T_E1 3 /* E1 */
65 #define T_DATA 6 /* no physical interface */
66
67 struct _ce_board_t *board;
68 unsigned char dtr;
69 unsigned char rts;
70 ce_buf_item_t *tx_item;
71 ce_buf_item_t *rx_item;
72 TAU32_UserRequest *rx_queue;
73 TAU32_UserRequest *tx_queue;
74 unsigned char debug;
75 unsigned char debug_shadow;
76 void (*transmit) (struct _ce_chan_t*, void*, int);
77 void (*receive) (struct _ce_chan_t*, unsigned char*, int);
78 void (*error) (struct _ce_chan_t*, int);
79 #define CE_FRAME 1
80 #define CE_CRC 2
81 #define CE_UNDERRUN 3
82 #define CE_OVERRUN 4
83 #define CE_OVERFLOW 5
84 int tx_pending;
85 int rx_pending;
86 unsigned long rintr;
87 unsigned long tintr;
88 ulong64 ibytes;
89 ulong64 obytes;
90 unsigned long ipkts;
91 unsigned long opkts;
92 unsigned long underrun;
93 unsigned long overrun;
94 unsigned long frame;
95 unsigned long crc;
96
97 unsigned short status; /* E1/G.703 line status bit mask */
98 #define ESTS_NOALARM 0x0001 /* no alarm present */
99 #define ESTS_FARLOF 0x0002 /* receiving far loss of framing */
100 #define ESTS_AIS 0x0008 /* receiving all ones */
101 #define ESTS_LOF 0x0020 /* loss of framing */
102 #define ESTS_LOS 0x0040 /* loss of signal */
103 #define ESTS_AIS16 0x0100 /* receiving all ones in timeslot 16 */
104 #define ESTS_FARLOMF 0x0200 /* receiving alarm in timeslot 16 */
105 #define ESTS_LOMF 0x0400 /* loss of multiframe sync */
106 #define ESTS_TSTREQ 0x0800 /* test code detected */
107 #define ESTS_TSTERR 0x1000 /* test error */
108
109 unsigned long totsec; /* total seconds elapsed */
110 unsigned long cursec; /* current seconds elapsed */
111 unsigned long degsec; /* degraded seconds */
112 unsigned long degerr; /* errors during degraded seconds */
113 ce_gstat_t currnt; /* current 15-min interval data */
114 ce_gstat_t total; /* total statistics data */
115 ce_gstat_t interval [48]; /* 12 hour period data */
116
117 unsigned int acc_status;
118 unsigned long config;
119 unsigned long baud;
120 unsigned long ts;
121 unsigned long ts_mask;
122 unsigned char dir;
123 unsigned char lloop;
124 unsigned char rloop;
125 unsigned char higain;
126 unsigned char phony;
127 unsigned char scrambler;
128 unsigned char unfram;
129 unsigned char monitor;
130 unsigned char crc4;
131 unsigned char use16;
132 unsigned char gsyn; /* G.703 clock mode */
133 #define GSYN_INT 0 /* internal transmit clock source */
134 #define GSYN_RCV 1 /* transmit clock source = receive */
135 #define GSYN_RCV0 2 /* tclk = rclk from channel 0 */
136 #define GSYN_RCV1 3 /* ...from channel 1 */
137 unsigned long mtu;
138 void *sys;
139 } ce_chan_t;
140
141 #define CONFREQSZ 128
142 typedef struct _ce_conf_req {
143 TAU32_UserRequest req[CONFREQSZ+10];
144 TAU32_UserRequest *queue;
145 int pending;
146 } ce_conf_req;
147
148 typedef struct _ce_board_t {
149 TAU32_UserContext ddk;
150 ce_chan_t chan[NCHAN];
151 int num;
152 int mux;
153 #define TAU32_BASE_NAME "Tau-PCI-32"
154 #define TAU32_LITE_NAME "Tau-PCI-32/Lite"
155 #define TAU32_ADPCM_NAME "Tau-PCI-32/ADPCM"
156 #define TAU32_UNKNOWN_NAME "Unknown Tau-PCI-32"
157 char name [32];
158 ce_conf_req cr;
159 TAU32_CrossMatrix dxc;
160 unsigned long pmask;
161 void *sys;
162 } ce_board_t;
163
164 void ce_set_dtr (ce_chan_t *c, int on);
165 void ce_set_rts (ce_chan_t *c, int on);
166 int ce_get_cd (ce_chan_t *c);
167 int ce_get_cts (ce_chan_t *c);
168 int ce_get_dsr (ce_chan_t *c);
169
170 int ce_transmit_space (ce_chan_t *c);
171 int ce_send_packet (ce_chan_t *c, unsigned char *buf, int len, void *tag);
172 void ce_start_chan (ce_chan_t *c, int tx, int rx, ce_buf_t *cb, unsigned long phys);
173 void ce_stop_chan (ce_chan_t *c);
174 void ce_register_transmit (ce_chan_t *c, void (*func) (ce_chan_t*, void*, int));
175 void ce_register_receive (ce_chan_t *c, void (*func) (ce_chan_t*,
176 unsigned char*, int));
177 void ce_register_error (ce_chan_t *c, void (*func) (ce_chan_t*, int));
178
179 void TAU32_CALLBACK_TYPE
180 ce_error_callback(TAU32_UserContext *pContext, int Item,
181 unsigned NotifyBits);
182 void TAU32_CALLBACK_TYPE
183 ce_status_callback(TAU32_UserContext *pContext, int Item,
184 unsigned NotifyBits);
185
186 void ce_set_baud (ce_chan_t *c, unsigned long baud);
187 void ce_set_lloop (ce_chan_t *c, unsigned char on);
188 void ce_set_rloop (ce_chan_t *c, unsigned char on);
189 void ce_set_higain (ce_chan_t *c, unsigned char on);
190 void ce_set_unfram (ce_chan_t *c, unsigned char on);
191 void ce_set_ts (ce_chan_t *c, unsigned long ts);
192 void ce_set_phony (ce_chan_t *c, unsigned char on);
193 void ce_set_scrambler (ce_chan_t *c, unsigned char on);
194 void ce_set_monitor (ce_chan_t *c, unsigned char on);
195 void ce_set_use16 (ce_chan_t *c, unsigned char on);
196 void ce_set_crc4 (ce_chan_t *c, unsigned char on);
197 void ce_set_gsyn (ce_chan_t *c, int syn);
198 #define CABLE_TP 11
199 int ce_get_cable (ce_chan_t *c);
200 void ce_set_dir (ce_chan_t *c, int dir);
201 void ce_e1_timer (ce_chan_t *c);
202 void ce_init_board (ce_board_t *b);
Cache object: 0588add23884188f67dfe07e0a54afaa
|