hisax.h revision ddca2488a2a69421924485bbcec39b512b580d0e
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* $Id: hisax.h,v 2.64.2.4 2004/02/11 13:21:33 keil Exp $
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Basic declarations, defines and prototypes
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This software may be used and distributed according to the terms
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * of the GNU General Public License, incorporated herein by reference.
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/config.h>
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/errno.h>
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/fs.h>
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/major.h>
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/io.h>
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/delay.h>
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/kernel.h>
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/signal.h>
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/slab.h>
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/mm.h>
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/mman.h>
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/ioport.h>
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/timer.h>
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/wait.h>
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/isdnif.h>
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/tty.h>
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/serial_reg.h>
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/netdevice.h>
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ERROR_STATISTIC
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define REQUEST		0
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CONFIRM		1
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INDICATION	2
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESPONSE	3
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ENABLE	0x0000
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_RESET	0x0004
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_POWERUP	0x0008
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ACTIVATE	0x0010
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_DEACTIVATE	0x0018
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_INFO1	0x0010
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_INFO2	0x0020
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_INFO3	0x0030
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_INFO4	0x0040
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_INFO4_P8	0x0040
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_INFO4_P10	0x0048
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_RSYNC	0x0060
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_TESTLOOP	0x0070
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_RESET	0x00F0
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_INIT	0x00F2
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_RELEASE	0x00F3
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_TEST	0x00F4
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_AUX_IND	0x00F5
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PH_ACTIVATE	0x0100
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PH_DEACTIVATE	0x0110
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PH_DATA		0x0120
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PH_PULL		0x0130
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PH_TESTLOOP	0x0140
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PH_PAUSE	0x0150
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MPH_ACTIVATE	0x0180
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MPH_DEACTIVATE	0x0190
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MPH_INFORMATION	0x01A0
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_ESTABLISH	0x0200
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_RELEASE	0x0210
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_DATA		0x0220
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_FLUSH	0x0224
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DL_UNIT_DATA	0x0230
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MDL_BC_RELEASE  0x0278  // Formula-n enter:now
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MDL_BC_ASSIGN   0x027C  // Formula-n enter:now
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MDL_ASSIGN	0x0280
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MDL_REMOVE	0x0284
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MDL_ERROR	0x0288
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MDL_INFO_SETUP	0x02E0
771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MDL_INFO_CONN	0x02E4
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MDL_INFO_REL	0x02E8
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_SETUP	0x0300
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_RESUME	0x0304
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_MORE_INFO	0x0310
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_IGNORE	0x0320
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_REJECT	0x0324
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_SETUP_COMPL	0x0330
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_PROCEEDING	0x0340
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_ALERTING	0x0344
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_PROGRESS	0x0348
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_CONNECT	0x0350
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_CHARGE	0x0354
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_NOTIFY	0x0358
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_DISCONNECT	0x0360
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_RELEASE	0x0368
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_SUSPEND	0x0370
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_PROCEED_SEND 0x0374
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_REDIR        0x0378
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T302		0x0382
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T303		0x0383
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T304		0x0384
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T305		0x0385
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T308_1	0x0388
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T308_2	0x038A
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T309         0x0309
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T310		0x0390
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T313		0x0393
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T318		0x0398
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_T319		0x0399
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_TSPID	0x03A0
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_NOSETUP_RSP	0x03E0
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_SETUP_ERR	0x03E1
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_SUSPEND_ERR	0x03E2
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_RESUME_ERR	0x03E3
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_CONNECT_ERR	0x03E4
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_RELEASE_ERR	0x03E5
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_RESTART	0x03F4
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_TDSS1_IO     0x13F4    /* DSS1 IO user timer */
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CC_TNI1_IO      0x13F5    /* NI1 IO user timer */
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* define maximum number of possible waiting incoming calls */
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_WAITING_CALLS 2
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* include l3dss1 & ni1 specific process structures, but no other defines */
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HISAX_EURO
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  #define l3dss1_process
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  #include "l3dss1.h"
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  #undef  l3dss1_process
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* CONFIG_HISAX_EURO */
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HISAX_NI1
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  #define l3ni1_process
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  #include "l3ni1.h"
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  #undef  l3ni1_process
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* CONFIG_HISAX_NI1 */
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_DFRAME_LEN	260
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_DFRAME_LEN_L1	300
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HSCX_BUFMAX	4096
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_DATA_SIZE	(HSCX_BUFMAX - 4)
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_DATA_MEM	(HSCX_BUFMAX + 64)
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RAW_BUFMAX	(((HSCX_BUFMAX*6)/5) + 5)
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_HEADER_LEN	4
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_WINDOW	8
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_MON_FRAME	32
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_DLOG_SPACE	2048
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_BLOG_SPACE	256
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* #define I4L_IRQ_FLAG SA_INTERRUPT */
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define I4L_IRQ_FLAG    0
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Statemachine
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct FsmInst;
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef void (* FSMFNPTR)(struct FsmInst *, int, void *);
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct Fsm {
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	FSMFNPTR *jumpmatrix;
1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int state_count, event_count;
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	char **strEvent, **strState;
1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct FsmInst {
1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct Fsm *fsm;
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int state;
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int debug;
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void *userdata;
1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int userint;
1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*printdebug) (struct FsmInst *, char *, ...);
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct FsmNode {
1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int state, event;
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*routine) (struct FsmInst *, int, void *);
1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct FsmTimer {
1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmInst *fi;
1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list tl;
1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int event;
1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void *arg;
1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct L3Timer {
1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct l3_process *pc;
1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list tl;
1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int event;
1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_ACTIVATING	1
1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_ACTIVATED	2
1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_DEACTTIMER	3
1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_ACTTIMER		4
1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_T3RUN		5
1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_PULL_REQ		6
2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_UINT		7
2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct Layer1 {
2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void *hardware;
2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct BCState *bcs;
2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct PStack **stlistp;
2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	long Flags;
2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmInst l1m;
2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmTimer	timer;
2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l1l2) (struct PStack *, int, void *);
2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l1hw) (struct PStack *, int, void *);
2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l1tei) (struct PStack *, int, void *);
2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mode, bc;
2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int delay;
2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define GROUP_TEI	127
2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TEI_SAPI	63
2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CTRL_SAPI	0
219ddca2488a2a69421924485bbcec39b512b580d0eKarsten Keil#define PACKET_NOACK	7
2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Layer2 Flags */
2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_LAPB	0
2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_LAPD	1
2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_ORIG	2
2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_MOD128	3
2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_PEND_REL	4
2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L3_INIT	5
2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_T200_RUN	6
2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_ACK_PEND	7
2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_REJEXC	8
2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_OWN_BUSY	9
2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_PEER_BUSY	10
2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_DCHAN_BUSY	11
2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_ACTIV	12
2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_ESTAB_PEND	13
2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_PTP		14
2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_FIXED_TEI	15
2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L2BLOCK	16
2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct Layer2 {
2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int tei;
2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int sap;
2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int maxlen;
2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long flag;
2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	spinlock_t lock;
2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int vs, va, vr;
2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int rc;
2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int window;
2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int sow;
2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff *windowar[MAX_WINDOW];
2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff_head i_queue;
2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff_head ui_queue;
2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l2l1) (struct PStack *, int, void *);
2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l2l3) (struct PStack *, int, void *);
2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l2tei) (struct PStack *, int, void *);
2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmInst l2m;
2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmTimer t200, t203;
2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int T200, N200, T203;
2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int debug;
2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	char debug_id[16];
2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct Layer3 {
2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l3l4) (struct PStack *, int, void *);
2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        void (*l3ml3) (struct PStack *, int, void *);
2671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l3l2) (struct PStack *, int, void *);
2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmInst l3m;
2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        struct FsmTimer l3m_timer;
2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff_head squeue;
2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct l3_process *proc;
2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct l3_process *global;
2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int N303;
2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int debug;
2751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	char debug_id[8];
2761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
2771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct LLInterface {
2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*l4l3) (struct PStack *, int, void *);
2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        int  (*l4l3_proto) (struct PStack *, isdn_ctrl *);
2811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void *userdata;
2821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long flag;
2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
2841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	FLG_LLI_L1WAKEUP	1
2861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	FLG_LLI_L2WAKEUP	2
2871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct Management {
2891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int	ri;
2901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmInst tei_m;
2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmTimer t202;
2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int T202, N202, debug;
2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*layer) (struct PStack *, int, void *);
2941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NO_CAUSE 254
2971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct Param {
2991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char cause;
3001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char loc;
3011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char diag[6];
3021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int bchannel;
3031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int chargeinfo;
3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int spv;		/* SPV Flag */
3051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	setup_parm setup;	/* from isdnif.h numbers and Serviceindicator */
3061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char moderate;	/* transfer mode and rate (bearer octet 4) */
3071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct PStack {
3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct PStack *next;
3121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct Layer1 l1;
3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct Layer2 l2;
3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct Layer3 l3;
3151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct LLInterface lli;
3161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct Management ma;
3171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int protocol;		/* EDSS1, 1TR6 or NI1 */
3181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        /* protocol specific data fields */
3201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        union
3211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	 { u_char uuuu; /* only as dummy */
3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HISAX_EURO
3231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds           dss1_stk_priv dss1; /* private dss1 data */
3241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* CONFIG_HISAX_EURO */
3251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HISAX_NI1
3261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds           ni1_stk_priv ni1; /* private ni1 data */
3271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* CONFIG_HISAX_NI1 */
3281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	 } prot;
3291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct l3_process {
3321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int callref;
3331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int state;
3341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct L3Timer timer;
3351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int N303;
3361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int debug;
3371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct Param para;
3381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct Channel *chan;
3391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct PStack *st;
3401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct l3_process *next;
3411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        ulong redir_result;
3421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        /* protocol specific data fields */
3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        union
3451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	 { u_char uuuu; /* only when euro not defined, avoiding empty union */
3461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HISAX_EURO
3471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds           dss1_proc_priv dss1; /* private dss1 data */
3481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* CONFIG_HISAX_EURO */
3491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HISAX_NI1
3501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds           ni1_proc_priv ni1; /* private ni1 data */
3511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* CONFIG_HISAX_NI1 */
3521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	 } prot;
3531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hscx_hw {
3561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int hscx;
3571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int rcvidx;
3581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int count;              /* Current skb sent count */
3591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *rcvbuf;         /* B-Channel receive Buffer */
3601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char tsaxr0;
3611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char tsaxr1;
3621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct w6692B_hw {
3651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int bchan;
3661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int rcvidx;
3671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int count;              /* Current skb sent count */
3681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *rcvbuf;         /* B-Channel receive Buffer */
3691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct isar_reg {
3721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long Flags;
3731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	volatile u_char bstat;
3741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	volatile u_char iis;
3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	volatile u_char cmsb;
3761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	volatile u_char clsb;
3771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	volatile u_char par[8];
3781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct isar_hw {
3811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int dpath;
3821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int rcvidx;
3831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int txcnt;
3841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mml;
3851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char state;
3861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char cmd;
3871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char mod;
3881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char newcmd;
3891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char newmod;
3901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	char try_mod;
3911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list ftimer;
3921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *rcvbuf;         /* B-Channel receive Buffer */
3931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char conmsg[16];
3941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct isar_reg *reg;
3951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hdlc_stat_reg {
3981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __BIG_ENDIAN
3996a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck	u_char fill;
4006a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck	u_char mode;
4016a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck	u_char xml;
4026a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck	u_char cmd;
4031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
4046a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck	u_char cmd;
4056a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck	u_char xml;
4066a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck	u_char mode;
4076a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck	u_char fill;
4081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
4096a878184c202395ea17212f111ab9ec4b5f6d6eeJan Blunck} __attribute__((packed));
4101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hdlc_hw {
4121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	union {
4131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u_int ctrl;
4141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hdlc_stat_reg sr;
4151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} ctrl;
4161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int stat;
4171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int rcvidx;
4181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int count;              /* Current skb sent count */
4191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *rcvbuf;         /* B-Channel receive Buffer */
4201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
4211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hfcB_hw {
4231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int *send;
4241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int f1;
4251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int f2;
4261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
4271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct tiger_hw {
4291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int *send;
4301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int *s_irq;
4311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int *s_end;
4321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int *sendp;
4331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int *rec;
4341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int free;
4351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *rcvbuf;
4361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *sendbuf;
4371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *sp;
4381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int sendcnt;
4391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int s_tot;
4401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int r_bitcnt;
4411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int r_tot;
4421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int r_err;
4431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int r_fcs;
4441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char r_state;
4451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char r_one;
4461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char r_val;
4471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char s_state;
4481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
4491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct amd7930_hw {
4511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *tx_buff;
4521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *rv_buff;
4531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int rv_buff_in;
4541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int rv_buff_out;
4551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff *rv_skb;
4561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct hdlc_state *hdlc_state;
4571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct work_struct tq_rcv;
4581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct work_struct tq_xmt;
4591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
4601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_INIT	1
4621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_ACTIV	2
4631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_BUSY	3
4641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_NOFRAME	4
4651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_HALF	5
4661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_EMPTY	6
4671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_ORIG	7
4681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_DLEETX	8
4691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_LASTDLE	9
4701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_FIRST	10
4711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_LASTDATA	11
4721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_NMD_DATA	12
4731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_FTI_RUN	13
4741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_LL_OK	14
4751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_LL_CONN	15
4761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_FTI_FTS	16
4771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BC_FLG_FRH_WAIT	17
4781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_MODE_NULL	0
4801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_MODE_TRANS	1
4811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_MODE_HDLC	2
4821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_MODE_EXTRN	3
4831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_MODE_HDLC_56K 4
4841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_MODE_MODEM	7
4851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_MODE_V32	8
4861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_MODE_FAX	9
4871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct BCState {
4891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int channel;
4901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mode;
4911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long Flag;
4921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct IsdnCardState *cs;
4931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int tx_cnt;		/* B-Channel transmit counter */
4941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff *tx_skb; /* B-Channel transmit Buffer */
4951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff_head rqueue;	/* B-Channel receive Queue */
4961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff_head squeue;	/* B-Channel send Queue */
4971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ackcnt;
4981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	spinlock_t aclock;
4991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct PStack *st;
5001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *blog;
5011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *conmsg;
5021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list transbusy;
5031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct work_struct tqueue;
5041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long event;
5051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int  (*BC_SetStack) (struct PStack *, struct BCState *);
5061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*BC_Close) (struct BCState *);
5071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef ERROR_STATISTIC
5081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int err_crc;
5091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int err_tx;
5101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int err_rdo;
5111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int err_inv;
5121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
5131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	union {
5141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hscx_hw hscx;
5151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hdlc_hw hdlc;
5161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct isar_hw isar;
5171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hfcB_hw hfc;
5181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct tiger_hw tiger;
5191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct amd7930_hw  amd7930;
5201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct w6692B_hw w6692;
5211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hisax_b_if *b_if;
5221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} hw;
5231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
5241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct Channel {
5261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct PStack *b_st, *d_st;
5271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct IsdnCardState *cs;
5281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct BCState *bcs;
5291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int chan;
5301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int incoming;
5311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmInst fi;
5321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct FsmTimer drel_timer, dial_timer;
5331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int debug;
5341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int l2_protocol, l2_active_protocol;
5351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int l3_protocol;
5361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int data_open;
5371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct l3_process *proc;
5381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	setup_parm setup;	/* from isdnif.h numbers and Serviceindicator */
5391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long Flags;		/* for remembering action done in l4 */
5401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int leased;
5411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
5421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct elsa_hw {
5441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
5451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long base;
5461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg;
5471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int ctrl;
5481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int ale;
5491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
5501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int itac;
5511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx;
5521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int trig;
5531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int timer;
5541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int counter;
5551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int status;
5561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list tl;
5571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int MFlag;
5581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct BCState *bcs;
5591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *transbuf;
5601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *rcvbuf;
5611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int transp;
5621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int rcvp;
5631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int transcnt;
5641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int rcvcnt;
5651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char IER;
5661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char FCR;
5671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char LCR;
5681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char MCR;
5691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char ctrl_reg;
5701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
5711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct teles3_hw {
5731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
5741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	signed   int isac;
5751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	signed   int hscx[2];
5761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	signed   int isacfifo;
5771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	signed   int hscxfifo[2];
5781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
5791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct teles0_hw {
5811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
5821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void __iomem *membase;
5831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long phymem;
5841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
5851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct avm_hw {
5871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
5881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
5891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx[2];
5901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isacfifo;
5911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscxfifo[2];
5921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int counter;
5931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
5941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
5951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct ix1_hw {
5971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
5981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac_ale;
5991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
6001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx_ale;
6011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx;
6021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct diva_hw {
6051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long cfg_reg;
6061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long pci_cfg;
6071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int ctrl;
6081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long isac_adr;
6091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
6101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long hscx_adr;
6111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx;
6121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int status;
6131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list tl;
6141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char ctrl_reg;
6151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
6161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct asus_hw {
6191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
6201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int adr;
6211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
6221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx;
6231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int u7;
6241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int pots;
6251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hfc_hw {
6291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int addr;
6301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int fifosize;
6311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char cirm;
6321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char ctmt;
6331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char cip;
6341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char isac_spcr;
6351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list timer;
6361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct sedl_hw {
6391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
6401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int adr;
6411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
6421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx;
6431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int reset_on;
6441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int reset_off;
6451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct isar_reg isar;
6461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int chip;
6471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int bus;
6481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
6491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct spt_hw {
6521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
6531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
6541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx[2];
6551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char res_irq;
6561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mic_hw {
6591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
6601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int adr;
6611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
6621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx;
6631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct njet_hw {
6661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long base;
6671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
6681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int auxa;
6691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char auxd;
6701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char dmactrl;
6711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char ctrl_reg;
6721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char irqmask0;
6731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char irqstat0;
6741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char last_is0;
6751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
6761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hfcPCI_hw {
6791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char cirm;
6801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char ctmt;
6811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char conn;
6821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char mst_m;
6831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_m1;
6841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_m2;
6851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_s1;
6861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char sctrl;
6871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char sctrl_r;
6881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char sctrl_e;
6891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char trm;
6901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char stat;
6911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char fifo;
6921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char fifo_en;
6931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char bswapped;
6941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char nt_mode;
6951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        int nt_timer;
6961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        struct pci_dev *dev;
6971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char *pci_io; /* start of PCI IO memory */
6981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        void *share_start; /* shared memory for Fifos start */
6991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        void *fifos; /* FIFO memory */
7001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        int last_bfifo_cnt[2]; /* marker saving last b-fifo frame count */
7011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list timer;
7021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hfcSX_hw {
7051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned long base;
7061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char cirm;
7071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char ctmt;
7081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char conn;
7091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char mst_m;
7101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_m1;
7111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_m2;
7121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_s1;
7131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char sctrl;
7141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char sctrl_r;
7151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char sctrl_e;
7161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char trm;
7171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char stat;
7181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char fifo;
7191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char bswapped;
7201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char nt_mode;
7211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char chip;
7221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        int b_fifo_size;
7231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        unsigned char last_fifo;
7241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        void *extra;
7251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        int nt_timer;
7261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list timer;
7271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hfcD_hw {
7301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int addr;
7311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int bfifosize;
7321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int dfifosize;
7331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char cirm;
7341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char ctmt;
7351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char cip;
7361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char conn;
7371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char mst_m;
7381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_m1;
7391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_m2;
7401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char int_s1;
7411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char sctrl;
7421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char stat;
7431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char fifo;
7441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char f1;
7451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char f2;
7461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int *send;
7471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list timer;
7481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct isurf_hw {
7511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int reset;
7521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long phymem;
7531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void __iomem *isac;
7541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void __iomem *isar;
7551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct isar_reg isar_r;
7561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct saphir_hw {
7591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
7601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
7611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int ale;
7621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac;
7631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int hscx;
7641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list timer;
7651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct bkm_hw {
7681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
7691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long base;
7701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/* A4T stuff */
7711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long isac_adr;
7721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int isac_ale;
7731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long jade_adr;
7741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int jade_ale;
7751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/* Scitel Quadro stuff */
7761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long plx_adr;
7771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long data_adr;
7781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct gazel_hw {
7811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
7821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int cfg_reg;
7831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int pciaddr[2];
7841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        signed   int ipac;
7851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	signed   int isac;
7861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	signed   int hscx[2];
7871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	signed   int isacfifo;
7881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	signed   int hscxfifo[2];
7891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char timeslot;
7901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char iom2;
7911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct w6692_hw {
7941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_dev *dev;
7951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int iobase;
7961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list timer;
7971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_TESTEMU
8001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct te_hw {
8011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char *sfifo;
8021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char *sfifo_w;
8031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char *sfifo_r;
8041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned char *sfifo_e;
8051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int sfifo_cnt;
8061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int stat;
8071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	wait_queue_head_t rwaitq;
8081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	wait_queue_head_t swaitq;
8091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
8111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct arcofi_msg {
8131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct arcofi_msg *next;
8141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char receive;
8151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char len;
8161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char msg[10];
8171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct isac_chip {
8201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ph_state;
8211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *mon_tx;
8221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *mon_rx;
8231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mon_txp;
8241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mon_txc;
8251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mon_rxp;
8261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct arcofi_msg *arcofi_list;
8271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list arcofitimer;
8281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	wait_queue_head_t arcofi_wait;
8291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char arcofi_bc;
8301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char arcofi_state;
8311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char mocr;
8321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char adf2;
8331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hfcd_chip {
8361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ph_state;
8371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hfcpci_chip {
8401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ph_state;
8411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct hfcsx_chip {
8441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ph_state;
8451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct w6692_chip {
8481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ph_state;
8491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct amd7930_chip {
8521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char lmr1;
8531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char ph_state;
8541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char old_state;
8551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char flg_t3;
8561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned int tx_xmtlen;
8571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list timer3;
8581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*ph_command) (struct IsdnCardState *, u_char, char *);
8591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*setIrqMask) (struct IsdnCardState *, u_char);
8601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct icc_chip {
8631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ph_state;
8641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *mon_tx;
8651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char *mon_rx;
8661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mon_txp;
8671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mon_txc;
8681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mon_rxp;
8691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct arcofi_msg *arcofi_list;
8701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list arcofitimer;
8711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	wait_queue_head_t arcofi_wait;
8721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char arcofi_bc;
8731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char arcofi_state;
8741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char mocr;
8751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char adf2;
8761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_IOM1			0
8791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_IPAC			1
8801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ISAR			2
8811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HW_ARCOFI		3
8821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_TWO_DCHAN		4
8831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_L1_DBUSY		5
8841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_DBUSY_TIMER 	6
8851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_LOCK_ATOMIC 	7
8861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_ARCOFI_TIMER	8
8871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_ARCOFI_ERROR	9
8881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FLG_HW_L1_UINT		10
8891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct IsdnCardState {
8911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	spinlock_t	lock;
8921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		typ;
8931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		subtyp;
8941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		protocol;
8951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_int		irq;
8961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long		irq_flags;
8971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long		HW_Flags;
8981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		*busy_flag;
8991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        int		chanlimit; /* limited number of B-chans to use */
9001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds        int		logecho; /* log echo if supported by card */
9011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	union {
9021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct elsa_hw elsa;
9031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct teles0_hw teles0;
9041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct teles3_hw teles3;
9051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct avm_hw avm;
9061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct ix1_hw ix1;
9071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct diva_hw diva;
9081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct asus_hw asus;
9091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hfc_hw hfc;
9101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct sedl_hw sedl;
9111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct spt_hw spt;
9121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct mic_hw mic;
9131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct njet_hw njet;
9141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hfcD_hw hfcD;
9151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hfcPCI_hw hfcpci;
9161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hfcSX_hw hfcsx;
9171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct ix1_hw niccy;
9181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct isurf_hw isurf;
9191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct saphir_hw saphir;
9201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HISAX_TESTEMU
9211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct te_hw te;
9221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
9231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct bkm_hw ax;
9241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct gazel_hw gazel;
9251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct w6692_hw w6692;
9261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hisax_d_if *hisax_d_if;
9271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} hw;
9281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		myid;
9291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	isdn_if		iif;
9301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	spinlock_t	statlock;
9311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		*status_buf;
9321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		*status_read;
9331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		*status_write;
9341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		*status_end;
9351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		(*readisac) (struct IsdnCardState *, u_char);
9361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*writeisac) (struct IsdnCardState *, u_char, u_char);
9371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*readisacfifo) (struct IsdnCardState *, u_char *, int);
9381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*writeisacfifo) (struct IsdnCardState *, u_char *, int);
9391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		(*BC_Read_Reg) (struct IsdnCardState *, int, u_char);
9401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*BC_Write_Reg) (struct IsdnCardState *, int, u_char, u_char);
9411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*BC_Send_Data) (struct BCState *);
9421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		(*cardmsg) (struct IsdnCardState *, int, void *);
9431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*setstack_d) (struct PStack *, struct IsdnCardState *);
9441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void		(*DC_Close) (struct IsdnCardState *);
9451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		(*irq_func) (int, void *, struct pt_regs *);
9461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		(*auxcmd) (struct IsdnCardState *, isdn_ctrl *);
9471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct Channel	channel[2+MAX_WAITING_CALLS];
9481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct BCState	bcs[2+MAX_WAITING_CALLS];
9491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct PStack	*stlist;
9501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff_head rq, sq; /* D-channel queues */
9511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		cardnr;
9521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	char		*dlog;
9531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		debug;
9541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	union {
9551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct isac_chip isac;
9561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hfcd_chip hfcd;
9571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hfcpci_chip hfcpci;
9581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct hfcsx_chip hfcsx;
9591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct w6692_chip w6692;
9601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct amd7930_chip amd7930;
9611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		struct icc_chip icc;
9621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} dc;
9631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char		*rcvbuf;
9641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		rcvidx;
9651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sk_buff	*tx_skb;
9661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		tx_cnt;
9671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long		event;
9681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct work_struct tqueue;
9691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct timer_list dbusytimer;
9701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef ERROR_STATISTIC
9711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		err_crc;
9721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		err_tx;
9731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int		err_rx;
9741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
9751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
9761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
9771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
9781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  schedule_event(s, ev)	do {test_and_set_bit(ev, &s->event);schedule_work(&s->tqueue); } while(0)
9791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
9801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  MON0_RX	1
9811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  MON1_RX	2
9821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  MON0_TX	4
9831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  MON1_TX	8
9841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
9851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
9861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef ISDN_CHIP_ISAC
9871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#undef ISDN_CHIP_ISAC
9881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
9891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
9901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_16_0
9911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_TELES0 1
9921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
9931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
9941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
9951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
9961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_TELES0  0
9971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
9981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
9991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_16_3
10001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_TELES3 1
10011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_TELES3  0
10061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_TELESPCI
10091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_TELESPCI 1
10101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_TELESPCI  0
10151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_AVM_A1
10181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_AVM_A1 1
10191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_AVM_A1  0
10241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_AVM_A1_PCMCIA
10271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_AVM_A1_PCMCIA 1
10281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_AVM_A1_PCMCIA  0
10331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_FRITZPCI
10361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_FRITZPCI 1
10371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_FRITZPCI  0
10421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_ELSA
10451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_ELSA 1
10461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_ELSA  0
10511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_IX1MICROR2
10541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_IX1MICROR2 1
10551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_IX1MICROR2 0
10601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_DIEHLDIVA
10631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_DIEHLDIVA 1
10641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_DIEHLDIVA 0
10691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_ASUSCOM
10721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_ASUSCOM 1
10731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_ASUSCOM 0
10781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_TELEINT
10811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_TELEINT 1
10821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_TELEINT 0
10871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_SEDLBAUER
10901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_SEDLBAUER 1
10911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
10921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
10931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
10951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_SEDLBAUER 0
10961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
10971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
10981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_SPORTSTER
10991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_SPORTSTER 1
11001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
11011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
11021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_SPORTSTER 0
11051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_MIC
11081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_MIC 1
11091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
11101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
11111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_MIC 0
11141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_NETJET
11171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_NETJET_S 1
11181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
11191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
11201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_NETJET_S 0
11231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_HFCS
11261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_HFCS 1
11271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_HFCS 0
11291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_HFC_PCI
11321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_HFC_PCI 1
11331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_HFC_PCI 0
11351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_HFC_SX
11381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_HFC_SX 1
11391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_HFC_SX 0
11411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_AMD7930
11441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_AMD7930 1
11451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_AMD7930 0
11471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_NICCY
11501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_NICCY 1
11511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
11521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
11531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_NICCY 0
11561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_ISURF
11591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_ISURF 1
11601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
11611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
11621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_ISURF 0
11651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_S0BOX
11681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_S0BOX 1
11691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
11701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
11711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_S0BOX 0
11741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_HSTSAPHIR
11771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_HSTSAPHIR 1
11781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
11791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
11801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_HSTSAPHIR 0
11831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_TESTEMU
11861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_TESTEMU 1
11871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CTYPE_TESTEMU 99
11881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#undef ISDN_CTYPE_COUNT
11891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  ISDN_CTYPE_COUNT ISDN_CTYPE_TESTEMU
11901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
11911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_TESTEMU 0
11921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_BKM_A4T
11951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_BKM_A4T 1
11961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
11971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
11981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
11991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
12001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_BKM_A4T 0
12011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_SCT_QUADRO
12041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_SCT_QUADRO 1
12051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
12061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
12071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
12091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_SCT_QUADRO 0
12101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_GAZEL
12131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_GAZEL 1
12141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ISAC
12151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ISAC 1
12161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
12181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define  CARD_GAZEL  0
12191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef	CONFIG_HISAX_W6692
12221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_W6692	1
12231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef	ISDN_CHIP_W6692
12241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	ISDN_CHIP_W6692	1
12251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
12271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	CARD_W6692	0
12281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef  CONFIG_HISAX_NETJET_U
12311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_NETJET_U 1
12321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef ISDN_CHIP_ICC
12331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ISDN_CHIP_ICC 1
12341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef HISAX_UINTERFACE
12361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HISAX_UINTERFACE 1
12371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
12391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_NETJET_U 0
12401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_HISAX_ENTERNOW_PCI
12431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CARD_FN_ENTERNOW_PCI 1
1244f718404aa939d2ae19efda8e71f7fa79cbdf1646Al Viro#else
1245f718404aa939d2ae19efda8e71f7fa79cbdf1646Al Viro#define CARD_FN_ENTERNOW_PCI 0
12461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TEI_PER_CARD 1
12491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* L1 Debug */
12511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_WARN		0x01
12521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_INTSTAT		0x02
12531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_ISAC		0x04
12541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_ISAC_FIFO	0x08
12551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_HSCX		0x10
12561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_HSCX_FIFO	0x20
12571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_LAPD	        0x40
12581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_IPAC	        0x80
12591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	L1_DEB_RECEIVE_FRAME    0x100
12601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L1_DEB_MONITOR		0x200
12611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DEB_DLOG_HEX		0x400
12621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DEB_DLOG_VERBOSE	0x800
12631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define L2FRAME_DEBUG
12651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef L2FRAME_DEBUG
12671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void Logl2Frame(struct IsdnCardState *cs, struct sk_buff *skb, char *buf, int dir);
12681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
12691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "hisax_cfg.h"
12711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid init_bcstate(struct IsdnCardState *cs, int bc);
12731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid setstack_HiSax(struct PStack *st, struct IsdnCardState *cs);
12751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid HiSax_addlist(struct IsdnCardState *sp, struct PStack *st);
12761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid HiSax_rmlist(struct IsdnCardState *sp, struct PStack *st);
12771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid setstack_l1_B(struct PStack *st);
12791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid setstack_tei(struct PStack *st);
12811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid setstack_manager(struct PStack *st);
12821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid setstack_isdnl2(struct PStack *st, char *debug_id);
12841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid releasestack_isdnl2(struct PStack *st);
12851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid setstack_transl2(struct PStack *st);
12861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid releasestack_transl2(struct PStack *st);
12871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid lli_writewakeup(struct PStack *st, int len);
12881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid setstack_l3dc(struct PStack *st, struct Channel *chanp);
12901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid setstack_l3bc(struct PStack *st, struct Channel *chanp);
12911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid releasestack_isdnl3(struct PStack *st);
12921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu_char *findie(u_char * p, int size, u_char ie, int wanted_set);
12941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint getcallref(u_char * p);
12951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint newcallref(void);
12961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint FsmNew(struct Fsm *fsm, struct FsmNode *fnlist, int fncount);
12981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid FsmFree(struct Fsm *fsm);
12991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint FsmEvent(struct FsmInst *fi, int event, void *arg);
13001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid FsmChangeState(struct FsmInst *fi, int newstate);
13011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid FsmInitTimer(struct FsmInst *fi, struct FsmTimer *ft);
13021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint FsmAddTimer(struct FsmTimer *ft, int millisec, int event,
13031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void *arg, int where);
13041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid FsmRestartTimer(struct FsmTimer *ft, int millisec, int event,
13051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void *arg, int where);
13061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid FsmDelTimer(struct FsmTimer *ft, int where);
13071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint jiftime(char *s, long mark);
13081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
13091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint HiSax_command(isdn_ctrl * ic);
13101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint HiSax_writebuf_skb(int id, int chan, int ack, struct sk_buff *skb);
13111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid HiSax_putstatus(struct IsdnCardState *cs, char *head, char *fmt, ...);
13121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid VHiSax_putstatus(struct IsdnCardState *cs, char *head, char *fmt, va_list args);
13131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid HiSax_reportcard(int cardnr, int sel);
13141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint QuickHex(char *txt, u_char * p, int cnt);
13151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid LogFrame(struct IsdnCardState *cs, u_char * p, int size);
13161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid dlogframe(struct IsdnCardState *cs, struct sk_buff *skb, int dir);
13171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid iecpy(u_char * dest, u_char * iestart, int ieoffset);
13181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif	/* __KERNEL__ */
13191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
13201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define HZDELAY(jiffs) {int tout = jiffs; while (tout--) udelay(1000000/HZ);}
13211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
13221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint ll_run(struct IsdnCardState *cs, int addfeatures);
13231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint CallcNew(void);
13241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid CallcFree(void);
13251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint CallcNewChan(struct IsdnCardState *cs);
13261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid CallcFreeChan(struct IsdnCardState *cs);
13271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint Isdnl1New(void);
13281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid Isdnl1Free(void);
13291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint Isdnl2New(void);
13301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid Isdnl2Free(void);
13311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint Isdnl3New(void);
13321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid Isdnl3Free(void);
13331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid init_tei(struct IsdnCardState *cs, int protocol);
13341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid release_tei(struct IsdnCardState *cs);
13351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldschar *HiSax_getrev(const char *revision);
13361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsint TeiNew(void);
13371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsvoid TeiFree(void);
1338