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