1 /* $Id: card.h,v 1.1.4.1 2001/11/20 14:19:37 kai Exp $
2  *
3  * Driver parameters for SpellCaster ISA ISDN adapters
4  *
5  * Copyright (C) 1996  SpellCaster Telecommunications Inc.
6  *
7  * This software may be used and distributed according to the terms
8  * of the GNU General Public License, incorporated herein by reference.
9  *
10  * For more information, please contact gpl-info@spellcast.com or write:
11  *
12  *     SpellCaster Telecommunications Inc.
13  *     5621 Finch Avenue East, Unit #3
14  *     Scarborough, Ontario  Canada
15  *     M1B 2T9
16  *     +1 (416) 297-8565
17  *     +1 (416) 297-6433 Facsimile
18  */
19 
20 #ifndef CARD_H
21 #define CARD_H
22 
23 /*
24  * We need these if they're not already included
25  */
26 #include <linux/timer.h>
27 #include <linux/isdnif.h>
28 #include "message.h"
29 
30 /*
31  * Amount of time to wait for a reset to complete
32  */
33 #define CHECKRESET_TIME		milliseconds(4000)
34 
35 /*
36  * Amount of time between line status checks
37  */
38 #define CHECKSTAT_TIME		milliseconds(8000)
39 
40 /*
41  * The maximum amount of time to wait for a message response
42  * to arrive. Use exclusively by send_and_receive
43  */
44 #define SAR_TIMEOUT		milliseconds(10000)
45 
46 /*
47  * Macro to determine is a card id is valid
48  */
49 #define IS_VALID_CARD(x)	((x >= 0) && (x <= cinst))
50 
51 /*
52  * Per channel status and configuration
53  */
54 typedef struct {
55 	int l2_proto;
56 	int l3_proto;
57 	char dn[50];
58 	unsigned long first_sendbuf;	/* Offset of first send buffer */
59 	unsigned int num_sendbufs;	/* Number of send buffers */
60 	unsigned int free_sendbufs;	/* Number of free sendbufs */
61 	unsigned int next_sendbuf;	/* Next sequential buffer */
62 	char eazlist[50];		/* Set with SETEAZ */
63 	char sillist[50];		/* Set with SETSIL */
64 	int eazclear;			/* Don't accept calls if TRUE */
65 } bchan;
66 
67 /*
68  * Everything you want to know about the adapter ...
69  */
70 typedef struct {
71 	int model;
72 	int driverId;			/* LL Id */
73 	char devicename[20];		/* The device name */
74 	isdn_if *card;			/* ISDN4Linux structure */
75 	bchan *channel;			/* status of the B channels */
76 	char nChannels;			/* Number of channels */
77 	unsigned int interrupt;		/* Interrupt number */
78 	int iobase;			/* I/O Base address */
79 	int ioport[MAX_IO_REGS];	/* Index to I/O ports */
80 	int shmem_pgport;		/* port for the exp mem page reg. */
81 	int shmem_magic;		/* adapter magic number */
82 	unsigned int rambase;		/* Shared RAM base address */
83 	unsigned int ramsize;		/* Size of shared memory */
84 	RspMessage async_msg;		/* Async response message */
85 	int want_async_messages;	/* Snoop the Q ? */
86 	unsigned char seq_no;		/* Next send seq. number */
87 	struct timer_list reset_timer;	/* Check reset timer */
88 	struct timer_list stat_timer;	/* Check startproc timer */
89 	unsigned char nphystat;		/* Latest PhyStat info */
90 	unsigned char phystat;		/* Last PhyStat info */
91 	HWConfig_pl hwconfig;		/* Hardware config info */
92 	char load_ver[11];		/* CommManage Version string */
93 	char proc_ver[11];		/* CommEngine Version */
94 	int StartOnReset;		/* Indicates startproc after reset */
95 	int EngineUp;			/* Indicates CommEngine Up */
96 	int trace_mode;			/* Indicate if tracing is on */
97 } board;
98 
99 #endif /* CARD_H */
100