Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
isdn
hysdn
hysdn_defs.h
Go to the documentation of this file.
1
/* $Id: hysdn_defs.h,v 1.5.6.3 2001/09/23 22:24:54 kai Exp $
2
*
3
* Linux driver for HYSDN cards
4
* global definitions and exported vars and functions.
5
*
6
* Author Werner Cornelius (
[email protected]
) for Hypercope GmbH
7
* Copyright 1999 by Werner Cornelius (
[email protected]
)
8
*
9
* This software may be used and distributed according to the terms
10
* of the GNU General Public License, incorporated herein by reference.
11
*
12
*/
13
14
#ifndef HYSDN_DEFS_H
15
#define HYSDN_DEFS_H
16
17
#include <
linux/hysdn_if.h
>
18
#include <
linux/interrupt.h
>
19
#include <
linux/workqueue.h
>
20
#include <
linux/skbuff.h
>
21
22
#include "
ince1pc.h
"
23
24
#ifdef CONFIG_HYSDN_CAPI
25
#include <
linux/capi.h
>
26
#include <
linux/isdn/capicmd.h
>
27
#include <
linux/isdn/capiutil.h
>
28
#include <
linux/isdn/capilli.h
>
29
30
/***************************/
31
/* CAPI-Profile values. */
32
/***************************/
33
34
#define GLOBAL_OPTION_INTERNAL_CONTROLLER 0x0001
35
#define GLOBAL_OPTION_EXTERNAL_CONTROLLER 0x0002
36
#define GLOBAL_OPTION_HANDSET 0x0004
37
#define GLOBAL_OPTION_DTMF 0x0008
38
#define GLOBAL_OPTION_SUPPL_SERVICES 0x0010
39
#define GLOBAL_OPTION_CHANNEL_ALLOCATION 0x0020
40
#define GLOBAL_OPTION_B_CHANNEL_OPERATION 0x0040
41
42
#define B1_PROT_64KBIT_HDLC 0x0001
43
#define B1_PROT_64KBIT_TRANSPARENT 0x0002
44
#define B1_PROT_V110_ASYNCH 0x0004
45
#define B1_PROT_V110_SYNCH 0x0008
46
#define B1_PROT_T30 0x0010
47
#define B1_PROT_64KBIT_INV_HDLC 0x0020
48
#define B1_PROT_56KBIT_TRANSPARENT 0x0040
49
50
#define B2_PROT_ISO7776 0x0001
51
#define B2_PROT_TRANSPARENT 0x0002
52
#define B2_PROT_SDLC 0x0004
53
#define B2_PROT_LAPD 0x0008
54
#define B2_PROT_T30 0x0010
55
#define B2_PROT_PPP 0x0020
56
#define B2_PROT_TRANSPARENT_IGNORE_B1_FRAMING_ERRORS 0x0040
57
58
#define B3_PROT_TRANSPARENT 0x0001
59
#define B3_PROT_T90NL 0x0002
60
#define B3_PROT_ISO8208 0x0004
61
#define B3_PROT_X25_DCE 0x0008
62
#define B3_PROT_T30 0x0010
63
#define B3_PROT_T30EXT 0x0020
64
65
#define HYSDN_MAXVERSION 8
66
67
/* Number of sendbuffers in CAPI-queue */
68
#define HYSDN_MAX_CAPI_SKB 20
69
70
#endif
/* CONFIG_HYSDN_CAPI*/
71
72
/************************************************/
73
/* constants and bits for debugging/log outputs */
74
/************************************************/
75
#define LOG_MAX_LINELEN 120
76
#define DEB_OUT_SYSLOG 0x80000000
/* output to syslog instead of proc fs */
77
#define LOG_MEM_ERR 0x00000001
/* log memory errors like kmalloc failure */
78
#define LOG_POF_OPEN 0x00000010
/* log pof open and close activities */
79
#define LOG_POF_RECORD 0x00000020
/* log pof record parser */
80
#define LOG_POF_WRITE 0x00000040
/* log detailed pof write operation */
81
#define LOG_POF_CARD 0x00000080
/* log pof related card functions */
82
#define LOG_CNF_LINE 0x00000100
/* all conf lines are put to procfs */
83
#define LOG_CNF_DATA 0x00000200
/* non comment conf lines are shown with channel */
84
#define LOG_CNF_MISC 0x00000400
/* additional conf line debug outputs */
85
#define LOG_SCHED_ASYN 0x00001000
/* debug schedulers async tx routines */
86
#define LOG_PROC_OPEN 0x00100000
/* open and close from procfs are logged */
87
#define LOG_PROC_ALL 0x00200000
/* all actions from procfs are logged */
88
#define LOG_NET_INIT 0x00010000
/* network init and deinit logging */
89
90
#define DEF_DEB_FLAGS 0x7fff000f
/* everything is logged to procfs */
91
92
/**********************************/
93
/* proc filesystem name constants */
94
/**********************************/
95
#define PROC_SUBDIR_NAME "hysdn"
96
#define PROC_CONF_BASENAME "cardconf"
97
#define PROC_LOG_BASENAME "cardlog"
98
99
/***********************************/
100
/* PCI 32 bit parms for IO and MEM */
101
/***********************************/
102
#define PCI_REG_PLX_MEM_BASE 0
103
#define PCI_REG_PLX_IO_BASE 1
104
#define PCI_REG_MEMORY_BASE 3
105
106
/**************/
107
/* card types */
108
/**************/
109
#define BD_NONE 0U
110
#define BD_PERFORMANCE 1U
111
#define BD_VALUE 2U
112
#define BD_PCCARD 3U
113
#define BD_ERGO 4U
114
#define BD_METRO 5U
115
#define BD_CHAMP2 6U
116
#define BD_PLEXUS 7U
117
118
/******************************************************/
119
/* defined states for cards shown by reading cardconf */
120
/******************************************************/
121
#define CARD_STATE_UNUSED 0
/* never been used or booted */
122
#define CARD_STATE_BOOTING 1
/* booting is in progress */
123
#define CARD_STATE_BOOTERR 2
/* a previous boot was aborted */
124
#define CARD_STATE_RUN 3
/* card is active */
125
126
/*******************************/
127
/* defines for error_log_state */
128
/*******************************/
129
#define ERRLOG_STATE_OFF 0
/* error log is switched off, nothing to do */
130
#define ERRLOG_STATE_ON 1
/* error log is switched on, wait for data */
131
#define ERRLOG_STATE_START 2
/* start error logging */
132
#define ERRLOG_STATE_STOP 3
/* stop error logging */
133
134
/*******************************/
135
/* data structure for one card */
136
/*******************************/
137
typedef
struct
HYSDN_CARD
{
138
139
/* general variables for the cards */
140
int
myid
;
/* own driver card id */
141
unsigned
char
bus
;
/* pci bus the card is connected to */
142
unsigned
char
devfn
;
/* slot+function bit encoded */
143
unsigned
short
subsysid
;
/* PCI subsystem id */
144
unsigned
char
brdtype
;
/* type of card */
145
unsigned
int
bchans
;
/* number of available B-channels */
146
unsigned
int
faxchans
;
/* number of available fax-channels */
147
unsigned
char
mac_addr
[6];
/* MAC Address read from card */
148
unsigned
int
irq
;
/* interrupt number */
149
unsigned
int
iobase
;
/* IO-port base address */
150
unsigned
long
plxbase
;
/* PLX memory base */
151
unsigned
long
membase
;
/* DPRAM memory base */
152
unsigned
long
memend
;
/* DPRAM memory end */
153
void
*
dpram
;
/* mapped dpram */
154
int
state
;
/* actual state of card -> CARD_STATE_** */
155
struct
HYSDN_CARD
*
next
;
/* pointer to next card */
156
157
/* data areas for the /proc file system */
158
void
*
proclog
;
/* pointer to proclog filesystem specific data */
159
void
*
procconf
;
/* pointer to procconf filesystem specific data */
160
161
/* debugging and logging */
162
unsigned
char
err_log_state
;
/* actual error log state of the card */
163
unsigned
long
debug_flags
;
/* tells what should be debugged and where */
164
void
(*
set_errlog_state
) (
struct
HYSDN_CARD
*,
int
);
165
166
/* interrupt handler + interrupt synchronisation */
167
struct
work_struct
irq_queue
;
/* interrupt task queue */
168
unsigned
char
volatile
irq_enabled
;
/* interrupt enabled if != 0 */
169
unsigned
char
volatile
hw_lock
;
/* hardware is currently locked -> no access */
170
171
/* boot process */
172
void
*
boot
;
/* pointer to boot private data */
173
int
(*
writebootimg
) (
struct
HYSDN_CARD
*,
unsigned
char
*,
unsigned
long
);
174
int
(*
writebootseq
) (
struct
HYSDN_CARD
*,
unsigned
char
*,
int
);
175
int
(*
waitpofready
) (
struct
HYSDN_CARD
*);
176
int
(*
testram
) (
struct
HYSDN_CARD
*);
177
178
/* scheduler for data transfer (only async parts) */
179
unsigned
char
async_data
[256];
/* async data to be sent (normally for config) */
180
unsigned
short
volatile
async_len
;
/* length of data to sent */
181
unsigned
short
volatile
async_channel
;
/* channel number for async transfer */
182
int
volatile
async_busy
;
/* flag != 0 sending in progress */
183
int
volatile
net_tx_busy
;
/* a network packet tx is in progress */
184
185
/* network interface */
186
void
*
netif
;
/* pointer to network structure */
187
188
/* init and deinit stopcard for booting, too */
189
void
(*
stopcard
) (
struct
HYSDN_CARD
*);
190
void
(*
releasehardware
) (
struct
HYSDN_CARD
*);
191
192
spinlock_t
hysdn_lock
;
193
#ifdef CONFIG_HYSDN_CAPI
194
struct
hycapictrl_info {
195
char
cardname[32];
196
spinlock_t
lock
;
197
int
versionlen;
198
char
versionbuf[1024];
199
char
*
version
[HYSDN_MAXVERSION];
200
201
char
infobuf[128];
/* for function procinfo */
202
203
struct
HYSDN_CARD
*
card
;
204
struct
capi_ctr
capi_ctrl;
205
struct
sk_buff
*skbs[HYSDN_MAX_CAPI_SKB];
206
int
in_idx, out_idx;
/* indexes to buffer ring */
207
int
sk_count;
/* number of buffers currently in ring */
208
struct
sk_buff
*tx_skb;
/* buffer for tx operation */
209
210
struct
list_head
ncci_head;
211
} *hyctrlinfo;
212
#endif
/* CONFIG_HYSDN_CAPI */
213
}
hysdn_card
;
214
215
#ifdef CONFIG_HYSDN_CAPI
216
typedef
struct
hycapictrl_info hycapictrl_info;
217
#endif
/* CONFIG_HYSDN_CAPI */
218
219
220
/*****************/
221
/* exported vars */
222
/*****************/
223
extern
hysdn_card
*
card_root
;
/* pointer to first card */
224
225
226
227
/*************************/
228
/* im/exported functions */
229
/*************************/
230
231
/* hysdn_procconf.c */
232
extern
int
hysdn_procconf_init
(
void
);
/* init proc config filesys */
233
extern
void
hysdn_procconf_release
(
void
);
/* deinit proc config filesys */
234
235
/* hysdn_proclog.c */
236
extern
int
hysdn_proclog_init
(
hysdn_card
*);
/* init proc log entry */
237
extern
void
hysdn_proclog_release
(
hysdn_card
*);
/* deinit proc log entry */
238
extern
void
hysdn_addlog
(
hysdn_card
*,
char
*, ...);
/* output data to log */
239
extern
void
hysdn_card_errlog
(
hysdn_card
*,
tErrLogEntry
*,
int
);
/* output card log */
240
241
/* boardergo.c */
242
extern
int
ergo_inithardware
(
hysdn_card
*
card
);
/* get hardware -> module init */
243
244
/* hysdn_boot.c */
245
extern
int
pof_write_close
(
hysdn_card
*);
/* close proc file after writing pof */
246
extern
int
pof_write_open
(
hysdn_card
*,
unsigned
char
**);
/* open proc file for writing pof */
247
extern
int
pof_write_buffer
(
hysdn_card
*,
int
);
/* write boot data to card */
248
extern
int
EvalSysrTokData
(
hysdn_card
*,
unsigned
char
*,
int
);
/* Check Sysready Token Data */
249
250
/* hysdn_sched.c */
251
extern
int
hysdn_sched_tx
(
hysdn_card
*,
unsigned
char
*,
252
unsigned
short
volatile
*,
unsigned
short
volatile
*,
253
unsigned
short
);
254
extern
int
hysdn_sched_rx
(
hysdn_card
*,
unsigned
char
*,
unsigned
short
,
255
unsigned
short
);
256
extern
int
hysdn_tx_cfgline
(
hysdn_card
*,
unsigned
char
*,
257
unsigned
short
);
/* send one cfg line */
258
259
/* hysdn_net.c */
260
extern
unsigned
int
hynet_enable
;
261
extern
int
hysdn_net_create
(
hysdn_card
*);
/* create a new net device */
262
extern
int
hysdn_net_release
(
hysdn_card
*);
/* delete the device */
263
extern
char
*
hysdn_net_getname
(
hysdn_card
*);
/* get name of net interface */
264
extern
void
hysdn_tx_netack
(
hysdn_card
*);
/* acknowledge a packet tx */
265
extern
struct
sk_buff
*
hysdn_tx_netget
(
hysdn_card
*);
/* get next network packet */
266
extern
void
hysdn_rx_netpkt
(
hysdn_card
*,
unsigned
char
*,
267
unsigned
short
);
/* rxed packet from network */
268
269
#ifdef CONFIG_HYSDN_CAPI
270
extern
unsigned
int
hycapi_enable
;
271
extern
int
hycapi_capi_create
(
hysdn_card
*);
/* create a new capi device */
272
extern
int
hycapi_capi_release
(
hysdn_card
*);
/* delete the device */
273
extern
int
hycapi_capi_stop
(
hysdn_card
*
card
);
/* suspend */
274
extern
void
hycapi_rx_capipkt
(
hysdn_card
*
card
,
unsigned
char
*
buf
,
275
unsigned
short
len
);
276
extern
void
hycapi_tx_capiack
(
hysdn_card
*
card
);
277
extern
struct
sk_buff
*
hycapi_tx_capiget
(
hysdn_card
*
card
);
278
extern
int
hycapi_init
(
void
);
279
extern
void
hycapi_cleanup
(
void
);
280
#endif
/* CONFIG_HYSDN_CAPI */
281
282
#endif
/* HYSDN_DEFS_H */
Generated on Thu Jan 10 2013 13:42:16 for Linux Kernel by
1.8.2