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