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
hisax
hisax.h
Go to the documentation of this file.
1
/* $Id: hisax.h,v 2.64.2.4 2004/02/11 13:21:33 keil Exp $
2
*
3
* Basic declarations, defines and prototypes
4
*
5
* This software may be used and distributed according to the terms
6
* of the GNU General Public License, incorporated herein by reference.
7
*
8
*/
9
#include <linux/errno.h>
10
#include <linux/fs.h>
11
#include <
linux/major.h
>
12
#include <asm/io.h>
13
#include <
linux/delay.h
>
14
#include <linux/kernel.h>
15
#include <linux/signal.h>
16
#include <linux/slab.h>
17
#include <
linux/mm.h
>
18
#include <linux/mman.h>
19
#include <
linux/interrupt.h
>
20
#include <
linux/ioport.h
>
21
#include <
linux/timer.h
>
22
#include <linux/wait.h>
23
#include <linux/isdnif.h>
24
#include <linux/tty.h>
25
#include <
linux/serial_reg.h
>
26
#include <linux/netdevice.h>
27
28
#define ERROR_STATISTIC
29
30
#define REQUEST 0
31
#define CONFIRM 1
32
#define INDICATION 2
33
#define RESPONSE 3
34
35
#define HW_ENABLE 0x0000
36
#define HW_RESET 0x0004
37
#define HW_POWERUP 0x0008
38
#define HW_ACTIVATE 0x0010
39
#define HW_DEACTIVATE 0x0018
40
41
#define HW_INFO1 0x0010
42
#define HW_INFO2 0x0020
43
#define HW_INFO3 0x0030
44
#define HW_INFO4 0x0040
45
#define HW_INFO4_P8 0x0040
46
#define HW_INFO4_P10 0x0048
47
#define HW_RSYNC 0x0060
48
#define HW_TESTLOOP 0x0070
49
#define CARD_RESET 0x00F0
50
#define CARD_INIT 0x00F2
51
#define CARD_RELEASE 0x00F3
52
#define CARD_TEST 0x00F4
53
#define CARD_AUX_IND 0x00F5
54
55
#define PH_ACTIVATE 0x0100
56
#define PH_DEACTIVATE 0x0110
57
#define PH_DATA 0x0120
58
#define PH_PULL 0x0130
59
#define PH_TESTLOOP 0x0140
60
#define PH_PAUSE 0x0150
61
#define MPH_ACTIVATE 0x0180
62
#define MPH_DEACTIVATE 0x0190
63
#define MPH_INFORMATION 0x01A0
64
65
#define DL_ESTABLISH 0x0200
66
#define DL_RELEASE 0x0210
67
#define DL_DATA 0x0220
68
#define DL_FLUSH 0x0224
69
#define DL_UNIT_DATA 0x0230
70
71
#define MDL_BC_RELEASE 0x0278 // Formula-n enter:now
72
#define MDL_BC_ASSIGN 0x027C // Formula-n enter:now
73
#define MDL_ASSIGN 0x0280
74
#define MDL_REMOVE 0x0284
75
#define MDL_ERROR 0x0288
76
#define MDL_INFO_SETUP 0x02E0
77
#define MDL_INFO_CONN 0x02E4
78
#define MDL_INFO_REL 0x02E8
79
80
#define CC_SETUP 0x0300
81
#define CC_RESUME 0x0304
82
#define CC_MORE_INFO 0x0310
83
#define CC_IGNORE 0x0320
84
#define CC_REJECT 0x0324
85
#define CC_SETUP_COMPL 0x0330
86
#define CC_PROCEEDING 0x0340
87
#define CC_ALERTING 0x0344
88
#define CC_PROGRESS 0x0348
89
#define CC_CONNECT 0x0350
90
#define CC_CHARGE 0x0354
91
#define CC_NOTIFY 0x0358
92
#define CC_DISCONNECT 0x0360
93
#define CC_RELEASE 0x0368
94
#define CC_SUSPEND 0x0370
95
#define CC_PROCEED_SEND 0x0374
96
#define CC_REDIR 0x0378
97
#define CC_T302 0x0382
98
#define CC_T303 0x0383
99
#define CC_T304 0x0384
100
#define CC_T305 0x0385
101
#define CC_T308_1 0x0388
102
#define CC_T308_2 0x038A
103
#define CC_T309 0x0309
104
#define CC_T310 0x0390
105
#define CC_T313 0x0393
106
#define CC_T318 0x0398
107
#define CC_T319 0x0399
108
#define CC_TSPID 0x03A0
109
#define CC_NOSETUP_RSP 0x03E0
110
#define CC_SETUP_ERR 0x03E1
111
#define CC_SUSPEND_ERR 0x03E2
112
#define CC_RESUME_ERR 0x03E3
113
#define CC_CONNECT_ERR 0x03E4
114
#define CC_RELEASE_ERR 0x03E5
115
#define CC_RESTART 0x03F4
116
#define CC_TDSS1_IO 0x13F4
/* DSS1 IO user timer */
117
#define CC_TNI1_IO 0x13F5
/* NI1 IO user timer */
118
119
/* define maximum number of possible waiting incoming calls */
120
#define MAX_WAITING_CALLS 2
121
122
123
#ifdef __KERNEL__
124
125
extern
const
char
*
CardType
[];
126
extern
int
nrcards
;
127
128
extern
const
char
*
l1_revision
;
129
extern
const
char
*
l2_revision
;
130
extern
const
char
*
l3_revision
;
131
extern
const
char
*
lli_revision
;
132
extern
const
char
*
tei_revision
;
133
134
/* include l3dss1 & ni1 specific process structures, but no other defines */
135
#ifdef CONFIG_HISAX_EURO
136
#define l3dss1_process
137
#include "
l3dss1.h
"
138
#undef l3dss1_process
139
#endif
/* CONFIG_HISAX_EURO */
140
141
#ifdef CONFIG_HISAX_NI1
142
#define l3ni1_process
143
#include "
l3ni1.h
"
144
#undef l3ni1_process
145
#endif
/* CONFIG_HISAX_NI1 */
146
147
#define MAX_DFRAME_LEN 260
148
#define MAX_DFRAME_LEN_L1 300
149
#define HSCX_BUFMAX 4096
150
#define MAX_DATA_SIZE (HSCX_BUFMAX - 4)
151
#define MAX_DATA_MEM (HSCX_BUFMAX + 64)
152
#define RAW_BUFMAX (((HSCX_BUFMAX * 6) / 5) + 5)
153
#define MAX_HEADER_LEN 4
154
#define MAX_WINDOW 8
155
#define MAX_MON_FRAME 32
156
#define MAX_DLOG_SPACE 2048
157
#define MAX_BLOG_SPACE 256
158
159
/* #define I4L_IRQ_FLAG SA_INTERRUPT */
160
#define I4L_IRQ_FLAG 0
161
162
/*
163
* Statemachine
164
*/
165
166
struct
FsmInst
;
167
168
typedef
void
(*
FSMFNPTR
)(
struct
FsmInst
*,
int
,
void
*);
169
170
struct
Fsm
{
171
FSMFNPTR
*
jumpmatrix
;
172
int
state_count
,
event_count
;
173
char
**
strEvent
, **
strState
;
174
};
175
176
struct
FsmInst
{
177
struct
Fsm
*
fsm
;
178
int
state
;
179
int
debug
;
180
void
*
userdata
;
181
int
userint
;
182
void
(*
printdebug
) (
struct
FsmInst
*,
char
*, ...);
183
};
184
185
struct
FsmNode
{
186
int
state
,
event
;
187
void
(*
routine
) (
struct
FsmInst
*,
int
,
void
*);
188
};
189
190
struct
FsmTimer
{
191
struct
FsmInst
*
fi
;
192
struct
timer_list
tl
;
193
int
event
;
194
void
*
arg
;
195
};
196
197
struct
L3Timer {
198
struct
l3_process *
pc
;
199
struct
timer_list
tl;
200
int
event
;
201
};
202
203
#define FLG_L1_ACTIVATING 1
204
#define FLG_L1_ACTIVATED 2
205
#define FLG_L1_DEACTTIMER 3
206
#define FLG_L1_ACTTIMER 4
207
#define FLG_L1_T3RUN 5
208
#define FLG_L1_PULL_REQ 6
209
#define FLG_L1_UINT 7
210
211
struct
Layer1 {
212
void
*
hardware
;
213
struct
BCState *bcs;
214
struct
PStack **stlistp;
215
unsigned
long
Flags
;
216
struct
FsmInst
l1m;
217
struct
FsmTimer
timer
;
218
void
(*l1l2) (
struct
PStack *,
int
,
void
*);
219
void
(*l1hw) (
struct
PStack *,
int
,
void
*);
220
void
(*l1tei) (
struct
PStack *,
int
,
void
*);
221
int
mode
,
bc
;
222
int
delay
;
223
};
224
225
#define GROUP_TEI 127
226
#define TEI_SAPI 63
227
#define CTRL_SAPI 0
228
#define PACKET_NOACK 7
229
230
/* Layer2 Flags */
231
232
#define FLG_LAPB 0
233
#define FLG_LAPD 1
234
#define FLG_ORIG 2
235
#define FLG_MOD128 3
236
#define FLG_PEND_REL 4
237
#define FLG_L3_INIT 5
238
#define FLG_T200_RUN 6
239
#define FLG_ACK_PEND 7
240
#define FLG_REJEXC 8
241
#define FLG_OWN_BUSY 9
242
#define FLG_PEER_BUSY 10
243
#define FLG_DCHAN_BUSY 11
244
#define FLG_L1_ACTIV 12
245
#define FLG_ESTAB_PEND 13
246
#define FLG_PTP 14
247
#define FLG_FIXED_TEI 15
248
#define FLG_L2BLOCK 16
249
250
struct
Layer2 {
251
int
tei;
252
int
sap;
253
int
maxlen;
254
u_long
flag
;
255
spinlock_t
lock
;
256
u_int
vs,
va
, vr;
257
int
rc
;
258
unsigned
int
window
;
259
unsigned
int
sow;
260
struct
sk_buff
*windowar[
MAX_WINDOW
];
261
struct
sk_buff_head
i_queue;
262
struct
sk_buff_head
ui_queue;
263
void
(*l2l1) (
struct
PStack *,
int
,
void
*);
264
void
(*l2l3) (
struct
PStack *,
int
,
void
*);
265
void
(*l2tei) (
struct
PStack *,
int
,
void
*);
266
struct
FsmInst
l2m;
267
struct
FsmTimer
t200, t203;
268
int
T200, N200, T203;
269
int
debug
;
270
char
debug_id[16];
271
};
272
273
struct
Layer3 {
274
void
(*l3l4) (
struct
PStack *,
int
,
void
*);
275
void
(*l3ml3) (
struct
PStack *,
int
,
void
*);
276
void
(*l3l2) (
struct
PStack *,
int
,
void
*);
277
struct
FsmInst
l3m;
278
struct
FsmTimer
l3m_timer;
279
struct
sk_buff_head
squeue;
280
struct
l3_process *proc;
281
struct
l3_process *global;
282
int
N303;
283
int
debug
;
284
char
debug_id[8];
285
};
286
287
struct
LLInterface {
288
void
(*l4l3) (
struct
PStack *,
int
,
void
*);
289
int
(*l4l3_proto) (
struct
PStack *,
isdn_ctrl
*);
290
void
*userdata;
291
u_long
flag
;
292
};
293
294
#define FLG_LLI_L1WAKEUP 1
295
#define FLG_LLI_L2WAKEUP 2
296
297
struct
Management {
298
int
ri;
299
struct
FsmInst
tei_m;
300
struct
FsmTimer
t202;
301
int
T202, N202,
debug
;
302
void
(*layer) (
struct
PStack *,
int
,
void
*);
303
};
304
305
#define NO_CAUSE 254
306
307
struct
Param {
308
u_char
cause
;
309
u_char
loc
;
310
u_char
diag
[6];
311
int
bchannel
;
312
int
chargeinfo;
313
int
spv;
/* SPV Flag */
314
setup_parm
setup
;
/* from isdnif.h numbers and Serviceindicator */
315
u_char
moderate;
/* transfer mode and rate (bearer octet 4) */
316
};
317
318
319
struct
PStack {
320
struct
PStack *
next
;
321
struct
Layer1
l1
;
322
struct
Layer2
l2
;
323
struct
Layer3
l3
;
324
struct
LLInterface
lli
;
325
struct
Management ma;
326
int
protocol
;
/* EDSS1, 1TR6 or NI1 */
327
328
/* protocol specific data fields */
329
union
330
{
u_char
uuuu;
/* only as dummy */
331
#ifdef CONFIG_HISAX_EURO
332
dss1_stk_priv dss1;
/* private dss1 data */
333
#endif
/* CONFIG_HISAX_EURO */
334
#ifdef CONFIG_HISAX_NI1
335
ni1_stk_priv ni1;
/* private ni1 data */
336
#endif
/* CONFIG_HISAX_NI1 */
337
} prot;
338
};
339
340
struct
l3_process {
341
int
callref;
342
int
state
;
343
struct
L3Timer
timer
;
344
int
N303;
345
int
debug
;
346
struct
Param para;
347
struct
Channel
*
chan
;
348
struct
PStack *
st
;
349
struct
l3_process *
next
;
350
ulong
redir_result;
351
352
/* protocol specific data fields */
353
union
354
{
u_char
uuuu;
/* only when euro not defined, avoiding empty union */
355
#ifdef CONFIG_HISAX_EURO
356
dss1_proc_priv dss1;
/* private dss1 data */
357
#endif
/* CONFIG_HISAX_EURO */
358
#ifdef CONFIG_HISAX_NI1
359
ni1_proc_priv ni1;
/* private ni1 data */
360
#endif
/* CONFIG_HISAX_NI1 */
361
} prot;
362
};
363
364
struct
hscx_hw
{
365
int
hscx;
366
int
rcvidx;
367
int
count
;
/* Current skb sent count */
368
u_char
*
rcvbuf
;
/* B-Channel receive Buffer */
369
u_char
tsaxr0;
370
u_char
tsaxr1;
371
};
372
373
struct
w6692B_hw {
374
int
bchan
;
375
int
rcvidx;
376
int
count
;
/* Current skb sent count */
377
u_char
*
rcvbuf
;
/* B-Channel receive Buffer */
378
};
379
380
struct
isar_reg {
381
unsigned
long
Flags
;
382
volatile
u_char
bstat;
383
volatile
u_char
iis;
384
volatile
u_char
cmsb;
385
volatile
u_char
clsb;
386
volatile
u_char
par[8];
387
};
388
389
struct
isar_hw
{
390
int
dpath;
391
int
rcvidx;
392
int
txcnt;
393
int
mml;
394
u_char
state
;
395
u_char
cmd
;
396
u_char
mod
;
397
u_char
newcmd;
398
u_char
newmod;
399
char
try_mod;
400
struct
timer_list
ftimer;
401
u_char
*
rcvbuf
;
/* B-Channel receive Buffer */
402
u_char
conmsg[16];
403
struct
isar_reg *
reg
;
404
};
405
406
struct
hdlc_stat_reg
{
407
#ifdef __BIG_ENDIAN
408
u_char
fill
;
409
u_char
mode
;
410
u_char
xml
;
411
u_char
cmd
;
412
#else
413
u_char
cmd
;
414
u_char
xml
;
415
u_char
mode
;
416
u_char
fill
;
417
#endif
418
}
__attribute__
((packed));
419
420
struct
hdlc_hw
{
421
union
{
422
u_int
ctrl
;
423
struct
hdlc_stat_reg
sr
;
424
}
ctrl
;
425
u_int
stat
;
426
int
rcvidx;
427
int
count
;
/* Current skb sent count */
428
u_char
*
rcvbuf
;
/* B-Channel receive Buffer */
429
};
430
431
struct
hfcB_hw {
432
unsigned
int
*
send
;
433
int
f1
;
434
int
f2
;
435
};
436
437
struct
tiger_hw
{
438
u_int
*
send
;
439
u_int
*s_irq;
440
u_int
*s_end;
441
u_int
*sendp;
442
u_int
*rec;
443
int
free
;
444
u_char
*
rcvbuf
;
445
u_char
*sendbuf;
446
u_char
*
sp
;
447
int
sendcnt;
448
u_int
s_tot;
449
u_int
r_bitcnt;
450
u_int
r_tot;
451
u_int
r_err;
452
u_int
r_fcs;
453
u_char
r_state;
454
u_char
r_one;
455
u_char
r_val;
456
u_char
s_state;
457
};
458
459
struct
amd7930_hw {
460
u_char
*tx_buff;
461
u_char
*rv_buff;
462
int
rv_buff_in;
463
int
rv_buff_out;
464
struct
sk_buff
*rv_skb;
465
struct
hdlc_state *hdlc_state;
466
struct
work_struct
tq_rcv;
467
struct
work_struct
tq_xmt;
468
};
469
470
#define BC_FLG_INIT 1
471
#define BC_FLG_ACTIV 2
472
#define BC_FLG_BUSY 3
473
#define BC_FLG_NOFRAME 4
474
#define BC_FLG_HALF 5
475
#define BC_FLG_EMPTY 6
476
#define BC_FLG_ORIG 7
477
#define BC_FLG_DLEETX 8
478
#define BC_FLG_LASTDLE 9
479
#define BC_FLG_FIRST 10
480
#define BC_FLG_LASTDATA 11
481
#define BC_FLG_NMD_DATA 12
482
#define BC_FLG_FTI_RUN 13
483
#define BC_FLG_LL_OK 14
484
#define BC_FLG_LL_CONN 15
485
#define BC_FLG_FTI_FTS 16
486
#define BC_FLG_FRH_WAIT 17
487
488
#define L1_MODE_NULL 0
489
#define L1_MODE_TRANS 1
490
#define L1_MODE_HDLC 2
491
#define L1_MODE_EXTRN 3
492
#define L1_MODE_HDLC_56K 4
493
#define L1_MODE_MODEM 7
494
#define L1_MODE_V32 8
495
#define L1_MODE_FAX 9
496
497
struct
BCState {
498
int
channel
;
499
int
mode
;
500
u_long
Flag;
501
struct
IsdnCardState *
cs
;
502
int
tx_cnt;
/* B-Channel transmit counter */
503
struct
sk_buff
*tx_skb;
/* B-Channel transmit Buffer */
504
struct
sk_buff_head
rqueue;
/* B-Channel receive Queue */
505
struct
sk_buff_head
squeue;
/* B-Channel send Queue */
506
int
ackcnt;
507
spinlock_t
aclock;
508
struct
PStack *
st
;
509
u_char
*blog;
510
u_char
*conmsg;
511
struct
timer_list
transbusy;
512
struct
work_struct
tqueue;
513
u_long
event
;
514
int
(*BC_SetStack) (
struct
PStack *,
struct
BCState *);
515
void
(*BC_Close) (
struct
BCState *);
516
#ifdef ERROR_STATISTIC
517
int
err_crc;
518
int
err_tx;
519
int
err_rdo;
520
int
err_inv;
521
#endif
522
union
{
523
struct
hscx_hw
hscx;
524
struct
hdlc_hw
hdlc;
525
struct
isar_hw
isar;
526
struct
hfcB_hw hfc;
527
struct
tiger_hw
tiger;
528
struct
amd7930_hw amd7930;
529
struct
w6692B_hw w6692;
530
struct
hisax_b_if
*b_if;
531
}
hw
;
532
};
533
534
struct
Channel
{
535
struct
PStack *b_st, *d_st;
536
struct
IsdnCardState *
cs
;
537
struct
BCState *bcs;
538
int
chan
;
539
int
incoming;
540
struct
FsmInst
fi;
541
struct
FsmTimer
drel_timer, dial_timer;
542
int
debug
;
543
int
l2_protocol, l2_active_protocol;
544
int
l3_protocol;
545
int
data_open;
546
struct
l3_process *proc;
547
setup_parm
setup
;
/* from isdnif.h numbers and Serviceindicator */
548
u_long
Flags
;
/* for remembering action done in l4 */
549
int
leased;
550
};
551
552
struct
elsa_hw {
553
struct
pci_dev
*
dev
;
554
unsigned
long
base
;
555
unsigned
int
cfg
;
556
unsigned
int
ctrl
;
557
unsigned
int
ale;
558
unsigned
int
isac
;
559
unsigned
int
itac;
560
unsigned
int
hscx;
561
unsigned
int
trig;
562
unsigned
int
timer
;
563
unsigned
int
counter
;
564
unsigned
int
status
;
565
struct
timer_list
tl;
566
unsigned
int
MFlag;
567
struct
BCState *bcs;
568
u_char
*transbuf;
569
u_char
*
rcvbuf
;
570
unsigned
int
transp
;
571
unsigned
int
rcvp;
572
unsigned
int
transcnt;
573
unsigned
int
rcvcnt;
574
u_char
IER
;
575
u_char
FCR
;
576
u_char
LCR
;
577
u_char
MCR
;
578
u_char
ctrl_reg
;
579
};
580
581
struct
teles3_hw {
582
unsigned
int
cfg_reg;
583
signed
int
isac
;
584
signed
int
hscx[2];
585
signed
int
isacfifo;
586
signed
int
hscxfifo[2];
587
};
588
589
struct
teles0_hw {
590
unsigned
int
cfg_reg;
591
void
__iomem
*membase;
592
unsigned
long
phymem;
593
};
594
595
struct
avm_hw {
596
unsigned
int
cfg_reg;
597
unsigned
int
isac
;
598
unsigned
int
hscx[2];
599
unsigned
int
isacfifo;
600
unsigned
int
hscxfifo[2];
601
unsigned
int
counter
;
602
struct
pci_dev
*
dev
;
603
};
604
605
struct
ix1_hw {
606
unsigned
int
cfg_reg;
607
unsigned
int
isac_ale;
608
unsigned
int
isac
;
609
unsigned
int
hscx_ale;
610
unsigned
int
hscx;
611
};
612
613
struct
diva_hw {
614
unsigned
long
cfg_reg;
615
unsigned
long
pci_cfg;
616
unsigned
int
ctrl
;
617
unsigned
long
isac_adr;
618
unsigned
int
isac
;
619
unsigned
long
hscx_adr;
620
unsigned
int
hscx;
621
unsigned
int
status
;
622
struct
timer_list
tl;
623
u_char
ctrl_reg
;
624
struct
pci_dev
*
dev
;
625
};
626
627
struct
asus_hw {
628
unsigned
int
cfg_reg;
629
unsigned
int
adr;
630
unsigned
int
isac
;
631
unsigned
int
hscx;
632
unsigned
int
u7;
633
unsigned
int
pots
;
634
};
635
636
637
struct
hfc_hw {
638
unsigned
int
addr
;
639
unsigned
int
fifosize;
640
unsigned
char
cirm;
641
unsigned
char
ctmt;
642
unsigned
char
cip;
643
u_char
isac_spcr;
644
struct
timer_list
timer
;
645
};
646
647
struct
sedl_hw {
648
unsigned
int
cfg_reg;
649
unsigned
int
adr;
650
unsigned
int
isac
;
651
unsigned
int
hscx;
652
unsigned
int
reset_on;
653
unsigned
int
reset_off;
654
struct
isar_reg isar;
655
unsigned
int
chip
;
656
unsigned
int
bus
;
657
struct
pci_dev
*
dev
;
658
};
659
660
struct
spt_hw {
661
unsigned
int
cfg_reg;
662
unsigned
int
isac
;
663
unsigned
int
hscx[2];
664
unsigned
char
res_irq;
665
};
666
667
struct
mic_hw {
668
unsigned
int
cfg_reg;
669
unsigned
int
adr;
670
unsigned
int
isac
;
671
unsigned
int
hscx;
672
};
673
674
struct
njet_hw {
675
unsigned
long
base
;
676
unsigned
int
isac
;
677
unsigned
int
auxa;
678
unsigned
char
auxd;
679
unsigned
char
dmactrl;
680
unsigned
char
ctrl_reg
;
681
unsigned
char
irqmask0;
682
unsigned
char
irqstat0
;
683
unsigned
char
last_is0;
684
struct
pci_dev
*
dev
;
685
};
686
687
struct
hfcPCI_hw
{
688
unsigned
char
cirm
;
689
unsigned
char
ctmt
;
690
unsigned
char
conn
;
691
unsigned
char
mst_m
;
692
unsigned
char
int_m1
;
693
unsigned
char
int_m2
;
694
unsigned
char
int_s1;
695
unsigned
char
sctrl
;
696
unsigned
char
sctrl_r
;
697
unsigned
char
sctrl_e
;
698
unsigned
char
trm
;
699
unsigned
char
stat
;
700
unsigned
char
fifo
;
701
unsigned
char
fifo_en
;
702
unsigned
char
bswapped
;
703
unsigned
char
nt_mode;
704
int
nt_timer
;
705
struct
pci_dev
*
dev
;
706
unsigned
char
*
pci_io
;
/* start of PCI IO memory */
707
dma_addr_t
dma
;
/* dma handle for Fifos */
708
void
*
fifos
;
/* FIFO memory */
709
int
last_bfifo_cnt
[2];
/* marker saving last b-fifo frame count */
710
struct
timer_list
timer
;
711
};
712
713
struct
hfcSX_hw {
714
unsigned
long
base
;
715
unsigned
char
cirm;
716
unsigned
char
ctmt;
717
unsigned
char
conn;
718
unsigned
char
mst_m;
719
unsigned
char
int_m1;
720
unsigned
char
int_m2;
721
unsigned
char
int_s1;
722
unsigned
char
sctrl;
723
unsigned
char
sctrl_r;
724
unsigned
char
sctrl_e;
725
unsigned
char
trm;
726
unsigned
char
stat
;
727
unsigned
char
fifo
;
728
unsigned
char
bswapped;
729
unsigned
char
nt_mode;
730
unsigned
char
chip
;
731
int
b_fifo_size;
732
unsigned
char
last_fifo;
733
void
*
extra
;
734
int
nt_timer;
735
struct
timer_list
timer
;
736
};
737
738
struct
hfcD_hw {
739
unsigned
int
addr
;
740
unsigned
int
bfifosize;
741
unsigned
int
dfifosize;
742
unsigned
char
cirm;
743
unsigned
char
ctmt;
744
unsigned
char
cip;
745
unsigned
char
conn;
746
unsigned
char
mst_m;
747
unsigned
char
int_m1;
748
unsigned
char
int_m2;
749
unsigned
char
int_s1;
750
unsigned
char
sctrl;
751
unsigned
char
stat
;
752
unsigned
char
fifo
;
753
unsigned
char
f1
;
754
unsigned
char
f2
;
755
unsigned
int
*
send
;
756
struct
timer_list
timer
;
757
};
758
759
struct
isurf_hw {
760
unsigned
int
reset
;
761
unsigned
long
phymem;
762
void
__iomem
*
isac
;
763
void
__iomem
*isar;
764
struct
isar_reg isar_r;
765
};
766
767
struct
saphir_hw {
768
struct
pci_dev
*
dev
;
769
unsigned
int
cfg_reg;
770
unsigned
int
ale;
771
unsigned
int
isac
;
772
unsigned
int
hscx;
773
struct
timer_list
timer
;
774
};
775
776
struct
bkm_hw {
777
struct
pci_dev
*
dev
;
778
unsigned
long
base
;
779
/* A4T stuff */
780
unsigned
long
isac_adr;
781
unsigned
int
isac_ale;
782
unsigned
long
jade_adr;
783
unsigned
int
jade_ale;
784
/* Scitel Quadro stuff */
785
unsigned
long
plx_adr;
786
unsigned
long
data_adr;
787
};
788
789
struct
gazel_hw {
790
struct
pci_dev
*
dev
;
791
unsigned
int
cfg_reg;
792
unsigned
int
pciaddr[2];
793
signed
int
ipac;
794
signed
int
isac
;
795
signed
int
hscx[2];
796
signed
int
isacfifo;
797
signed
int
hscxfifo[2];
798
unsigned
char
timeslot;
799
unsigned
char
iom2;
800
};
801
802
struct
w6692_hw
{
803
struct
pci_dev
*
dev
;
804
unsigned
int
iobase
;
805
struct
timer_list
timer
;
806
};
807
808
struct
arcofi_msg {
809
struct
arcofi_msg *
next
;
810
u_char
receive;
811
u_char
len
;
812
u_char
msg
[10];
813
};
814
815
struct
isac_chip {
816
int
ph_state;
817
u_char
*mon_tx;
818
u_char
*mon_rx;
819
int
mon_txp;
820
int
mon_txc;
821
int
mon_rxp;
822
struct
arcofi_msg *arcofi_list;
823
struct
timer_list
arcofitimer;
824
wait_queue_head_t
arcofi_wait;
825
u_char
arcofi_bc;
826
u_char
arcofi_state;
827
u_char
mocr;
828
u_char
adf2;
829
};
830
831
struct
hfcd_chip {
832
int
ph_state;
833
};
834
835
struct
hfcpci_chip {
836
int
ph_state;
837
};
838
839
struct
hfcsx_chip {
840
int
ph_state;
841
};
842
843
struct
w6692_chip {
844
int
ph_state;
845
};
846
847
struct
amd7930_chip {
848
u_char
lmr1;
849
u_char
ph_state;
850
u_char
old_state;
851
u_char
flg_t3;
852
unsigned
int
tx_xmtlen;
853
struct
timer_list
timer3;
854
void
(*ph_command) (
struct
IsdnCardState *,
u_char
,
char
*);
855
void
(*setIrqMask) (
struct
IsdnCardState *,
u_char
);
856
};
857
858
struct
icc_chip {
859
int
ph_state;
860
u_char
*mon_tx;
861
u_char
*mon_rx;
862
int
mon_txp;
863
int
mon_txc;
864
int
mon_rxp;
865
struct
arcofi_msg *arcofi_list;
866
struct
timer_list
arcofitimer;
867
wait_queue_head_t
arcofi_wait;
868
u_char
arcofi_bc;
869
u_char
arcofi_state;
870
u_char
mocr;
871
u_char
adf2;
872
};
873
874
#define HW_IOM1 0
875
#define HW_IPAC 1
876
#define HW_ISAR 2
877
#define HW_ARCOFI 3
878
#define FLG_TWO_DCHAN 4
879
#define FLG_L1_DBUSY 5
880
#define FLG_DBUSY_TIMER 6
881
#define FLG_LOCK_ATOMIC 7
882
#define FLG_ARCOFI_TIMER 8
883
#define FLG_ARCOFI_ERROR 9
884
#define FLG_HW_L1_UINT 10
885
886
struct
IsdnCardState {
887
spinlock_t
lock
;
888
u_char
typ;
889
u_char
subtyp;
890
int
protocol
;
891
u_int
irq
;
892
u_long
irq_flags;
893
u_long
HW_Flags;
894
int
*busy_flag;
895
int
chanlimit;
/* limited number of B-chans to use */
896
int
logecho;
/* log echo if supported by card */
897
union
{
898
struct
elsa_hw elsa;
899
struct
teles0_hw teles0;
900
struct
teles3_hw teles3;
901
struct
avm_hw avm;
902
struct
ix1_hw ix1;
903
struct
diva_hw diva;
904
struct
asus_hw asus;
905
struct
hfc_hw hfc;
906
struct
sedl_hw sedl;
907
struct
spt_hw spt;
908
struct
mic_hw
mic
;
909
struct
njet_hw njet;
910
struct
hfcD_hw hfcD;
911
struct
hfcPCI_hw
hfcpci;
912
struct
hfcSX_hw hfcsx;
913
struct
ix1_hw niccy;
914
struct
isurf_hw isurf;
915
struct
saphir_hw saphir;
916
struct
bkm_hw ax;
917
struct
gazel_hw gazel;
918
struct
w6692_hw
w6692;
919
struct
hisax_d_if
*
hisax_d_if
;
920
}
hw
;
921
int
myid;
922
isdn_if
iif;
923
spinlock_t
statlock;
924
u_char
*status_buf;
925
u_char
*status_read;
926
u_char
*status_write;
927
u_char
*status_end;
928
u_char
(*readisac) (
struct
IsdnCardState *,
u_char
);
929
void
(*writeisac) (
struct
IsdnCardState *,
u_char
,
u_char
);
930
void
(*readisacfifo) (
struct
IsdnCardState *,
u_char
*,
int
);
931
void
(*writeisacfifo) (
struct
IsdnCardState *,
u_char
*,
int
);
932
u_char
(*BC_Read_Reg) (
struct
IsdnCardState *,
int
,
u_char
);
933
void
(*BC_Write_Reg) (
struct
IsdnCardState *,
int
,
u_char
,
u_char
);
934
void
(*BC_Send_Data) (
struct
BCState *);
935
int
(*cardmsg) (
struct
IsdnCardState *,
int
,
void
*);
936
void
(*setstack_d) (
struct
PStack *,
struct
IsdnCardState *);
937
void
(*DC_Close) (
struct
IsdnCardState *);
938
irq_handler_t
irq_func;
939
int
(*auxcmd) (
struct
IsdnCardState *,
isdn_ctrl
*);
940
struct
Channel
channel
[2 +
MAX_WAITING_CALLS
];
941
struct
BCState bcs[2 +
MAX_WAITING_CALLS
];
942
struct
PStack *stlist;
943
struct
sk_buff_head
rq
, sq;
/* D-channel queues */
944
int
cardnr;
945
char
*dlog;
946
int
debug
;
947
union
{
948
struct
isac_chip
isac
;
949
struct
hfcd_chip hfcd;
950
struct
hfcpci_chip hfcpci;
951
struct
hfcsx_chip hfcsx;
952
struct
w6692_chip w6692;
953
struct
amd7930_chip amd7930;
954
struct
icc_chip icc;
955
}
dc
;
956
u_char
*
rcvbuf
;
957
int
rcvidx;
958
struct
sk_buff
*tx_skb;
959
int
tx_cnt;
960
u_long
event
;
961
struct
work_struct
tqueue;
962
struct
timer_list
dbusytimer;
963
unsigned
int
irq_cnt;
964
#ifdef ERROR_STATISTIC
965
int
err_crc;
966
int
err_tx;
967
int
err_rx;
968
#endif
969
};
970
971
972
#define schedule_event(s, ev) do { test_and_set_bit(ev, &s->event); schedule_work(&s->tqueue); } while (0)
973
974
#define MON0_RX 1
975
#define MON1_RX 2
976
#define MON0_TX 4
977
#define MON1_TX 8
978
979
980
#ifdef ISDN_CHIP_ISAC
981
#undef ISDN_CHIP_ISAC
982
#endif
983
984
#ifdef CONFIG_HISAX_16_0
985
#define CARD_TELES0 1
986
#ifndef ISDN_CHIP_ISAC
987
#define ISDN_CHIP_ISAC 1
988
#endif
989
#else
990
#define CARD_TELES0 0
991
#endif
992
993
#ifdef CONFIG_HISAX_16_3
994
#define CARD_TELES3 1
995
#ifndef ISDN_CHIP_ISAC
996
#define ISDN_CHIP_ISAC 1
997
#endif
998
#else
999
#define CARD_TELES3 0
1000
#endif
1001
1002
#ifdef CONFIG_HISAX_TELESPCI
1003
#define CARD_TELESPCI 1
1004
#ifndef ISDN_CHIP_ISAC
1005
#define ISDN_CHIP_ISAC 1
1006
#endif
1007
#else
1008
#define CARD_TELESPCI 0
1009
#endif
1010
1011
#ifdef CONFIG_HISAX_AVM_A1
1012
#define CARD_AVM_A1 1
1013
#ifndef ISDN_CHIP_ISAC
1014
#define ISDN_CHIP_ISAC 1
1015
#endif
1016
#else
1017
#define CARD_AVM_A1 0
1018
#endif
1019
1020
#ifdef CONFIG_HISAX_AVM_A1_PCMCIA
1021
#define CARD_AVM_A1_PCMCIA 1
1022
#ifndef ISDN_CHIP_ISAC
1023
#define ISDN_CHIP_ISAC 1
1024
#endif
1025
#else
1026
#define CARD_AVM_A1_PCMCIA 0
1027
#endif
1028
1029
#ifdef CONFIG_HISAX_FRITZPCI
1030
#define CARD_FRITZPCI 1
1031
#ifndef ISDN_CHIP_ISAC
1032
#define ISDN_CHIP_ISAC 1
1033
#endif
1034
#else
1035
#define CARD_FRITZPCI 0
1036
#endif
1037
1038
#ifdef CONFIG_HISAX_ELSA
1039
#define CARD_ELSA 1
1040
#ifndef ISDN_CHIP_ISAC
1041
#define ISDN_CHIP_ISAC 1
1042
#endif
1043
#else
1044
#define CARD_ELSA 0
1045
#endif
1046
1047
#ifdef CONFIG_HISAX_IX1MICROR2
1048
#define CARD_IX1MICROR2 1
1049
#ifndef ISDN_CHIP_ISAC
1050
#define ISDN_CHIP_ISAC 1
1051
#endif
1052
#else
1053
#define CARD_IX1MICROR2 0
1054
#endif
1055
1056
#ifdef CONFIG_HISAX_DIEHLDIVA
1057
#define CARD_DIEHLDIVA 1
1058
#ifndef ISDN_CHIP_ISAC
1059
#define ISDN_CHIP_ISAC 1
1060
#endif
1061
#else
1062
#define CARD_DIEHLDIVA 0
1063
#endif
1064
1065
#ifdef CONFIG_HISAX_ASUSCOM
1066
#define CARD_ASUSCOM 1
1067
#ifndef ISDN_CHIP_ISAC
1068
#define ISDN_CHIP_ISAC 1
1069
#endif
1070
#else
1071
#define CARD_ASUSCOM 0
1072
#endif
1073
1074
#ifdef CONFIG_HISAX_TELEINT
1075
#define CARD_TELEINT 1
1076
#ifndef ISDN_CHIP_ISAC
1077
#define ISDN_CHIP_ISAC 1
1078
#endif
1079
#else
1080
#define CARD_TELEINT 0
1081
#endif
1082
1083
#ifdef CONFIG_HISAX_SEDLBAUER
1084
#define CARD_SEDLBAUER 1
1085
#ifndef ISDN_CHIP_ISAC
1086
#define ISDN_CHIP_ISAC 1
1087
#endif
1088
#else
1089
#define CARD_SEDLBAUER 0
1090
#endif
1091
1092
#ifdef CONFIG_HISAX_SPORTSTER
1093
#define CARD_SPORTSTER 1
1094
#ifndef ISDN_CHIP_ISAC
1095
#define ISDN_CHIP_ISAC 1
1096
#endif
1097
#else
1098
#define CARD_SPORTSTER 0
1099
#endif
1100
1101
#ifdef CONFIG_HISAX_MIC
1102
#define CARD_MIC 1
1103
#ifndef ISDN_CHIP_ISAC
1104
#define ISDN_CHIP_ISAC 1
1105
#endif
1106
#else
1107
#define CARD_MIC 0
1108
#endif
1109
1110
#ifdef CONFIG_HISAX_NETJET
1111
#define CARD_NETJET_S 1
1112
#ifndef ISDN_CHIP_ISAC
1113
#define ISDN_CHIP_ISAC 1
1114
#endif
1115
#else
1116
#define CARD_NETJET_S 0
1117
#endif
1118
1119
#ifdef CONFIG_HISAX_HFCS
1120
#define CARD_HFCS 1
1121
#else
1122
#define CARD_HFCS 0
1123
#endif
1124
1125
#ifdef CONFIG_HISAX_HFC_PCI
1126
#define CARD_HFC_PCI 1
1127
#else
1128
#define CARD_HFC_PCI 0
1129
#endif
1130
1131
#ifdef CONFIG_HISAX_HFC_SX
1132
#define CARD_HFC_SX 1
1133
#else
1134
#define CARD_HFC_SX 0
1135
#endif
1136
1137
#ifdef CONFIG_HISAX_NICCY
1138
#define CARD_NICCY 1
1139
#ifndef ISDN_CHIP_ISAC
1140
#define ISDN_CHIP_ISAC 1
1141
#endif
1142
#else
1143
#define CARD_NICCY 0
1144
#endif
1145
1146
#ifdef CONFIG_HISAX_ISURF
1147
#define CARD_ISURF 1
1148
#ifndef ISDN_CHIP_ISAC
1149
#define ISDN_CHIP_ISAC 1
1150
#endif
1151
#else
1152
#define CARD_ISURF 0
1153
#endif
1154
1155
#ifdef CONFIG_HISAX_S0BOX
1156
#define CARD_S0BOX 1
1157
#ifndef ISDN_CHIP_ISAC
1158
#define ISDN_CHIP_ISAC 1
1159
#endif
1160
#else
1161
#define CARD_S0BOX 0
1162
#endif
1163
1164
#ifdef CONFIG_HISAX_HSTSAPHIR
1165
#define CARD_HSTSAPHIR 1
1166
#ifndef ISDN_CHIP_ISAC
1167
#define ISDN_CHIP_ISAC 1
1168
#endif
1169
#else
1170
#define CARD_HSTSAPHIR 0
1171
#endif
1172
1173
#ifdef CONFIG_HISAX_BKM_A4T
1174
#define CARD_BKM_A4T 1
1175
#ifndef ISDN_CHIP_ISAC
1176
#define ISDN_CHIP_ISAC 1
1177
#endif
1178
#else
1179
#define CARD_BKM_A4T 0
1180
#endif
1181
1182
#ifdef CONFIG_HISAX_SCT_QUADRO
1183
#define CARD_SCT_QUADRO 1
1184
#ifndef ISDN_CHIP_ISAC
1185
#define ISDN_CHIP_ISAC 1
1186
#endif
1187
#else
1188
#define CARD_SCT_QUADRO 0
1189
#endif
1190
1191
#ifdef CONFIG_HISAX_GAZEL
1192
#define CARD_GAZEL 1
1193
#ifndef ISDN_CHIP_ISAC
1194
#define ISDN_CHIP_ISAC 1
1195
#endif
1196
#else
1197
#define CARD_GAZEL 0
1198
#endif
1199
1200
#ifdef CONFIG_HISAX_W6692
1201
#define CARD_W6692 1
1202
#ifndef ISDN_CHIP_W6692
1203
#define ISDN_CHIP_W6692 1
1204
#endif
1205
#else
1206
#define CARD_W6692 0
1207
#endif
1208
1209
#ifdef CONFIG_HISAX_NETJET_U
1210
#define CARD_NETJET_U 1
1211
#ifndef ISDN_CHIP_ICC
1212
#define ISDN_CHIP_ICC 1
1213
#endif
1214
#ifndef HISAX_UINTERFACE
1215
#define HISAX_UINTERFACE 1
1216
#endif
1217
#else
1218
#define CARD_NETJET_U 0
1219
#endif
1220
1221
#ifdef CONFIG_HISAX_ENTERNOW_PCI
1222
#define CARD_FN_ENTERNOW_PCI 1
1223
#else
1224
#define CARD_FN_ENTERNOW_PCI 0
1225
#endif
1226
1227
#define TEI_PER_CARD 1
1228
1229
/* L1 Debug */
1230
#define L1_DEB_WARN 0x01
1231
#define L1_DEB_INTSTAT 0x02
1232
#define L1_DEB_ISAC 0x04
1233
#define L1_DEB_ISAC_FIFO 0x08
1234
#define L1_DEB_HSCX 0x10
1235
#define L1_DEB_HSCX_FIFO 0x20
1236
#define L1_DEB_LAPD 0x40
1237
#define L1_DEB_IPAC 0x80
1238
#define L1_DEB_RECEIVE_FRAME 0x100
1239
#define L1_DEB_MONITOR 0x200
1240
#define DEB_DLOG_HEX 0x400
1241
#define DEB_DLOG_VERBOSE 0x800
1242
1243
#define L2FRAME_DEBUG
1244
1245
#ifdef L2FRAME_DEBUG
1246
extern
void
Logl2Frame
(
struct
IsdnCardState *
cs
,
struct
sk_buff
*
skb
,
char
*
buf
,
int
dir);
1247
#endif
1248
1249
#include "
hisax_cfg.h
"
1250
1251
void
init_bcstate
(
struct
IsdnCardState *
cs
,
int
bc
);
1252
1253
void
setstack_HiSax
(
struct
PStack *
st
,
struct
IsdnCardState *
cs
);
1254
void
HiSax_addlist
(
struct
IsdnCardState *
sp
,
struct
PStack *
st
);
1255
void
HiSax_rmlist
(
struct
IsdnCardState *
sp
,
struct
PStack *
st
);
1256
1257
void
setstack_l1_B
(
struct
PStack *
st
);
1258
1259
void
setstack_tei
(
struct
PStack *
st
);
1260
void
setstack_manager
(
struct
PStack *
st
);
1261
1262
void
setstack_isdnl2
(
struct
PStack *
st
,
char
*debug_id);
1263
void
releasestack_isdnl2
(
struct
PStack *
st
);
1264
void
setstack_transl2
(
struct
PStack *
st
);
1265
void
releasestack_transl2
(
struct
PStack *
st
);
1266
void
lli_writewakeup
(
struct
PStack *
st
,
int
len);
1267
1268
void
setstack_l3dc
(
struct
PStack *
st
,
struct
Channel
*chanp);
1269
void
setstack_l3bc
(
struct
PStack *
st
,
struct
Channel
*chanp);
1270
void
releasestack_isdnl3
(
struct
PStack *
st
);
1271
1272
u_char
*
findie
(
u_char
*
p
,
int
size
,
u_char
ie,
int
wanted_set);
1273
int
getcallref
(
u_char
*
p
);
1274
int
newcallref
(
void
);
1275
1276
int
FsmNew
(
struct
Fsm
*
fsm
,
struct
FsmNode
*fnlist,
int
fncount);
1277
void
FsmFree
(
struct
Fsm
*
fsm
);
1278
int
FsmEvent
(
struct
FsmInst
*fi,
int
event
,
void
*
arg
);
1279
void
FsmChangeState
(
struct
FsmInst
*fi,
int
newstate);
1280
void
FsmInitTimer
(
struct
FsmInst
*fi,
struct
FsmTimer
*
ft
);
1281
int
FsmAddTimer
(
struct
FsmTimer
*
ft
,
int
millisec,
int
event
,
1282
void
*
arg
,
int
where);
1283
void
FsmRestartTimer
(
struct
FsmTimer
*
ft
,
int
millisec,
int
event
,
1284
void
*
arg
,
int
where);
1285
void
FsmDelTimer
(
struct
FsmTimer
*
ft
,
int
where);
1286
int
jiftime
(
char
*
s
,
long
mark
);
1287
1288
int
HiSax_command
(
isdn_ctrl
*ic);
1289
int
HiSax_writebuf_skb
(
int
id
,
int
chan
,
int
ack
,
struct
sk_buff
*
skb
);
1290
__printf
(3, 4)
1291
void
HiSax_putstatus
(
struct
IsdnCardState *
cs
,
char
*
head
,
char
*
fmt
, ...);
1292
__printf
(3, 0)
1293
void
VHiSax_putstatus
(
struct
IsdnCardState *cs,
char
*head,
char
*fmt,
va_list
args);
1294
void
HiSax_reportcard
(
int
cardnr,
int
sel
);
1295
int
QuickHex
(
char
*txt,
u_char
*
p
,
int
cnt
);
1296
void
LogFrame
(
struct
IsdnCardState *cs,
u_char
*p,
int
size
);
1297
void
dlogframe
(
struct
IsdnCardState *cs,
struct
sk_buff
*
skb
,
int
dir);
1298
void
iecpy
(
u_char
*
dest
,
u_char
*iestart,
int
ieoffset);
1299
#endif
/* __KERNEL__ */
1300
1301
/*
1302
* Busywait delay for `jiffs' jiffies
1303
*/
1304
#define HZDELAY(jiffs) do { \
1305
int tout = jiffs; \
1306
\
1307
while (tout--) { \
1308
int loops = USEC_PER_SEC / HZ; \
1309
while (loops--) \
1310
udelay(1); \
1311
} \
1312
} while (0)
1313
1314
int
ll_run
(
struct
IsdnCardState *cs,
int
addfeatures);
1315
int
CallcNew
(
void
);
1316
void
CallcFree
(
void
);
1317
int
CallcNewChan
(
struct
IsdnCardState *cs);
1318
void
CallcFreeChan
(
struct
IsdnCardState *cs);
1319
int
Isdnl1New
(
void
);
1320
void
Isdnl1Free
(
void
);
1321
int
Isdnl2New
(
void
);
1322
void
Isdnl2Free
(
void
);
1323
int
Isdnl3New
(
void
);
1324
void
Isdnl3Free
(
void
);
1325
void
init_tei
(
struct
IsdnCardState *cs,
int
protocol
);
1326
void
release_tei
(
struct
IsdnCardState *cs);
1327
char
*
HiSax_getrev
(
const
char
*
revision
);
1328
int
TeiNew
(
void
);
1329
void
TeiFree
(
void
);
1330
1331
#ifdef CONFIG_PCI
1332
1333
#include <linux/pci.h>
1334
1335
/* adaptation wrapper for old usage
1336
* WARNING! This is unfit for use in a PCI hotplug environment,
1337
* as the returned PCI device can disappear at any moment in time.
1338
* Callers should be converted to use pci_get_device() instead.
1339
*/
1340
static
inline
struct
pci_dev
*hisax_find_pci_device(
unsigned
int
vendor
,
1341
unsigned
int
device
,
1342
struct
pci_dev
*
from
)
1343
{
1344
struct
pci_dev
*
pdev
;
1345
1346
pci_dev_get
(from);
1347
pdev =
pci_get_subsys
(vendor, device,
PCI_ANY_ID
,
PCI_ANY_ID
, from);
1348
pci_dev_put
(pdev);
1349
return
pdev;
1350
}
1351
1352
#endif
Generated on Thu Jan 10 2013 13:42:04 for Linux Kernel by
1.8.2