📄 hisax.h
字号:
/* $Id: hisax.h,v 1.1.1.1 1999/11/15 13:42:18 vadim Exp $ * Basic declarations, defines and prototypes * * $Log: hisax.h,v $ * Revision 1.1.1.1 1999/11/15 13:42:18 vadim * Initial import * * Revision 1.13.2.19 1998/11/05 21:11:17 keil * AVM PnP support * * Revision 1.13.2.18 1998/11/03 00:06:33 keil * certification related changes * fixed logging for smaller stack use * * Revision 1.13.2.17 1998/10/11 19:33:48 niemann * Added new IPAC based cards. * Code cleanup and simplified (sedlbauer.c) * * Revision 1.13.2.16 1998/10/04 23:04:54 keil * ISAR works now * * Revision 1.13.2.15 1998/09/30 22:28:04 keil * more work for isar support * * Revision 1.13.2.14 1998/09/27 13:06:09 keil * Apply most changes from 2.1.X (HiSax 3.1) * * Revision 1.13.2.13 1998/08/25 14:01:30 calle * Ported driver for AVM Fritz!Card PCI from the 2.1 tree. * I could not test it. * * Revision 1.13.2.12 1998/07/15 14:43:33 calle * Support for AVM passive PCMCIA cards: * A1 PCMCIA, FRITZ!Card PCMCIA and FRITZ!Card PCMCIA 2.0 * * Revision 1.13.2.11 1998/05/27 18:05:30 keil * HiSax 3.0 * * Revision 1.13.2.10 1998/04/11 18:43:16 keil * New cards * * Revision 1.13.2.9 1998/03/07 23:15:21 tsbogend * made HiSax working on Linux/Alpha * * Revision 1.13.2.8 1998/02/11 14:23:10 keil * support for Dr Neuhaus Niccy PnP and PCI * * Revision 1.13.2.7 1998/02/09 11:21:22 keil * Sedlbauer PCMCIA support from Marcus Niemann * * Revision 1.13.2.6 1998/02/03 23:16:12 keil * german AOC * * Revision 1.13.2.5 1998/01/27 22:42:42 keil * changes for new teles 16.3c and dynalink ---> asuscom * * Revision 1.13.2.4 1998/01/11 22:55:17 keil * 16.3c support * * Revision 1.13.2.3 1997/11/27 12:31:59 keil * Working netjet driver * * Revision 1.13.2.2 1997/11/15 18:55:43 keil * New init, new cards * * Revision 1.13.2.1 1997/10/17 22:13:51 keil * update to last hisax version * * Revision 2.6 1997/09/11 17:25:51 keil * Add new cards * * Revision 2.5 1997/08/03 14:36:31 keil * Implement RESTART procedure * * Revision 2.4 1997/07/31 19:25:20 keil * PTP_DATA_LINK support * * Revision 2.3 1997/07/31 11:50:17 keil * ONE TEI and FIXED TEI handling * * Revision 2.2 1997/07/30 17:13:02 keil * more changes for 'One TEI per card' * * Revision 2.1 1997/07/27 21:45:13 keil * new main structures * * Revision 2.0 1997/06/26 11:06:27 keil * New card and L1 interface. * Eicon.Diehl Diva and Dynalink IS64PH support * * old changes removed KKe * */#include <linux/config.h>#include <linux/module.h>#include <linux/version.h>#include <linux/errno.h>#include <linux/fs.h>#include <linux/major.h>#include <asm/segment.h>#include <asm/io.h>#include <linux/delay.h>#include <linux/kernel.h>#include <linux/signal.h>#include <linux/malloc.h>#include <linux/mm.h>#include <linux/mman.h>#include <linux/ioport.h>#include <linux/timer.h>#include <linux/wait.h>#include <linux/isdnif.h>#include <linux/tty.h>#include <linux/serial_reg.h>#define REQUEST 0#define CONFIRM 1#define INDICATION 2#define RESPONSE 3#define HW_ENABLE 0x0000#define HW_RESET 0x0004#define HW_POWERUP 0x0008#define HW_ACTIVATE 0x0010#define HW_DEACTIVATE 0x0018#define HW_INFO2 0x0020#define HW_INFO3 0x0030#define HW_INFO4_P8 0x0040#define HW_INFO4_P10 0x0048#define HW_RSYNC 0x0060#define HW_TESTLOOP 0x0070#define CARD_RESET 0x00F0#define CARD_SETIRQ 0x00F1#define CARD_INIT 0x00F2#define CARD_RELEASE 0x00F3#define CARD_TEST 0x00F4#define CARD_AUX_IND 0x00F5#define CARD_LOAD_FIRM 0x00F6#define PH_ACTIVATE 0x0100#define PH_DEACTIVATE 0x0110#define PH_DATA 0x0120#define PH_PULL 0x0130#define PH_TESTLOOP 0x0140#define PH_PAUSE 0x0150#define MPH_ACTIVATE 0x0180#define MPH_DEACTIVATE 0x0190#define MPH_INFORMATION 0x01A0#define DL_ESTABLISH 0x0200#define DL_RELEASE 0x0210#define DL_DATA 0x0220#define DL_FLUSH 0x0224#define DL_UNIT_DATA 0x0230#define MDL_ASSIGN 0x0280#define MDL_REMOVE 0x0284#define MDL_ERROR 0x0288#define MDL_INFO_SETUP 0x02E0#define MDL_INFO_CONN 0x02E4#define MDL_INFO_REL 0x02E8#define CC_SETUP 0x0300#define CC_RESUME 0x0304#define CC_MORE_INFO 0x0310#define CC_IGNORE 0x0320#define CC_REJECT 0x0324#define CC_SETUP_COMPL 0x0330#define CC_PROCEEDING 0x0340#define CC_ALERTING 0x0344#define CC_CONNECT 0x0350#define CC_CHARGE 0x0354#define CC_DISCONNECT 0x0360#define CC_RELEASE 0x0368#define CC_SUSPEND 0x0370#define CC_T303 0x0383#define CC_T304 0x0384#define CC_T305 0x0385#define CC_T308_1 0x0388#define CC_T308_2 0x0389#define CC_T310 0x0390#define CC_T313 0x0393#define CC_T318 0x0398#define CC_T319 0x0399#define CC_NOSETUP_RSP 0x03E0#define CC_SETUP_ERR 0x03E1#define CC_SUSPEND_ERR 0x03E2#define CC_RESUME_ERR 0x03E3#define CC_CONNECT_ERR 0x03E4#define CC_RELEASE_ERR 0x03E5#define CC_DLRL 0x03F0#define CC_RESTART 0x03F4#ifdef __KERNEL__#define MAX_DFRAME_LEN 260#define MAX_DFRAME_LEN_L1 300#define HSCX_BUFMAX 4096#define MAX_DATA_SIZE (HSCX_BUFMAX - 4)#define MAX_DATA_MEM (HSCX_BUFMAX + 64)#define RAW_BUFMAX (((HSCX_BUFMAX*6)/5) + 5)#define MAX_HEADER_LEN 4#define MAX_WINDOW 8#define MAX_MON_FRAME 32#define MAX_DLOG_SPACE 2048#define MAX_BLOG_SPACE 256/* #define I4L_IRQ_FLAG SA_INTERRUPT */#define I4L_IRQ_FLAG 0/* * Statemachine */struct FsmInst;typedef void (* FSMFNPTR)(struct FsmInst *, int, void *);struct Fsm { FSMFNPTR *jumpmatrix; int state_count, event_count; char **strEvent, **strState;};struct FsmInst { struct Fsm *fsm; int state; int debug; void *userdata; int userint; void (*printdebug) (struct FsmInst *, char *, ...);};struct FsmNode { int state, event; void (*routine) (struct FsmInst *, int, void *);};struct FsmTimer { struct FsmInst *fi; struct timer_list tl; int event; void *arg;};struct L3Timer { struct l3_process *pc; struct timer_list tl; int event;};#define FLG_L1_ACTIVATING 1#define FLG_L1_ACTIVATED 2#define FLG_L1_DEACTTIMER 3#define FLG_L1_ACTTIMER 4#define FLG_L1_T3RUN 5#define FLG_L1_PULL_REQ 6struct Layer1 { void *hardware; struct BCState *bcs; struct PStack **stlistp; int Flags; struct FsmInst l1m; struct FsmTimer timer; void (*l1l2) (struct PStack *, int, void *); void (*l1hw) (struct PStack *, int, void *); void (*l1tei) (struct PStack *, int, void *); int mode, bc; int delay;};#define GROUP_TEI 127#define TEI_SAPI 63#define CTRL_SAPI 0#define PACKET_NOACK 250/* Layer2 Flags */#define FLG_LAPB 0#define FLG_LAPD 1#define FLG_ORIG 2#define FLG_MOD128 3#define FLG_PEND_REL 4#define FLG_L3_INIT 5#define FLG_T200_RUN 6#define FLG_ACK_PEND 7#define FLG_REJEXC 8#define FLG_OWN_BUSY 9#define FLG_PEER_BUSY 10#define FLG_DCHAN_BUSY 11#define FLG_L1_ACTIV 12#define FLG_ESTAB_PEND 13#define FLG_PTP 14#define FLG_FIXED_TEI 15struct Layer2 { int tei; int sap; int maxlen; unsigned int flag; int vs, va, vr; int rc; int window; int sow; struct sk_buff *windowar[MAX_WINDOW]; struct sk_buff_head i_queue; struct sk_buff_head ui_queue; void (*l2l1) (struct PStack *, int, void *); void (*l2l3) (struct PStack *, int, void *); void (*l2tei) (struct PStack *, int, void *); struct FsmInst l2m; struct FsmTimer t200, t203; int T200, N200, T203; int debug; char debug_id[16];};struct Layer3 { void (*l3l4) (struct PStack *, int, void *); void (*l3l2) (struct PStack *, int, void *); struct FsmInst l3m; struct sk_buff_head squeue; struct l3_process *proc; struct l3_process *global; int N303; int debug; char debug_id[8];};struct LLInterface { void (*l4l3) (struct PStack *, int, void *); void *userdata; void (*l1writewakeup) (struct PStack *, int); void (*l2writewakeup) (struct PStack *, int);};struct Management { int ri; struct FsmInst tei_m; struct FsmTimer t202; int T202, N202, debug; void (*layer) (struct PStack *, int, void *);};struct Param { int cause; int loc; int bchannel; setup_parm setup; /* from isdnif.h numbers and Serviceindicator */ int chargeinfo; /* Charge Info - only for 1tr6 in * the moment */ int spv; /* SPV Flag */};struct PStack { struct PStack *next; struct Layer1 l1; struct Layer2 l2; struct Layer3 l3; struct LLInterface lli; struct Management ma; int protocol; /* EDSS1 or 1TR6 */};struct l3_process { int callref; int state; struct L3Timer timer; int N303; int debug; struct Param para; struct Channel *chan; struct PStack *st; struct l3_process *next;};struct hscx_hw { int hscx; int rcvidx; int count; /* Current skb sent count */ u_char *rcvbuf; /* B-Channel receive Buffer */};struct isar_reg { unsigned int Flags; volatile u_char bstat; volatile u_char iis; volatile u_char cmsb; volatile u_char clsb; volatile u_char par[8];};struct isar_hw { int dpath; int rcvidx; int txcnt; int mml; u_char *rcvbuf; /* B-Channel receive Buffer */ struct isar_reg *reg;};struct hdlc_stat_reg { u_char cmd __attribute__((packed)); u_char xml __attribute__((packed)); u_char mode __attribute__((packed)); u_char fill __attribute__((packed));};struct hdlc_hw { union { u_int ctrl; struct hdlc_stat_reg sr; } ctrl; u_int stat; int rcvidx; int count; /* Current skb sent count */ u_char *rcvbuf; /* B-Channel receive Buffer */};struct hfcB_hw { unsigned int *send; int f1; int f2;};struct tiger_hw { u_int *send; u_int *s_irq; u_int *s_end; u_int *sendp; u_int *rec; int free; u_char *rcvbuf; u_char *sendbuf; u_char *sp; int sendcnt; u_int s_tot; u_int r_bitcnt; u_int r_tot; u_int r_err; u_int r_fcs; u_char r_state; u_char r_one; u_char r_val; u_char s_state;};struct amd7930_hw { u_char *tx_buff; u_char *rv_buff; int rv_buff_in; int rv_buff_out; struct sk_buff *rv_skb; struct hdlc_state *hdlc_state; struct tq_struct tq_rcv; struct tq_struct tq_xmt;};#define BC_FLG_INIT 1#define BC_FLG_ACTIV 2#define BC_FLG_BUSY 3#define BC_FLG_NOFRAME 4#define BC_FLG_HALF 5#define BC_FLG_EMPTY 6#define L1_MODE_NULL 0#define L1_MODE_TRANS 1#define L1_MODE_HDLC 2#define L1_MODE_MODEM 7struct BCState { int channel; int mode; int Flag; struct IsdnCardState *cs; int tx_cnt; /* B-Channel transmit counter */ struct sk_buff *tx_skb; /* B-Channel transmit Buffer */ struct sk_buff_head rqueue; /* B-Channel receive Queue */ struct sk_buff_head squeue; /* B-Channel send Queue */ struct PStack *st; u_char *blog; struct timer_list transbusy; struct tq_struct tqueue; int event; int (*BC_SetStack) (struct PStack *, struct BCState *); void (*BC_Close) (struct BCState *); union { struct hscx_hw hscx; struct hdlc_hw hdlc; struct isar_hw isar; struct hfcB_hw hfc; struct tiger_hw tiger; struct amd7930_hw amd7930; } hw;};struct Channel { struct PStack *b_st, *d_st; struct IsdnCardState *cs; struct BCState *bcs; int chan; int incoming; struct FsmInst fi; struct FsmTimer drel_timer, dial_timer; int debug; int l2_protocol, l2_active_protocol; int l3_protocol; int data_open; struct l3_process *proc; setup_parm setup; /* from isdnif.h numbers and Serviceindicator */ int Flags; /* for remembering action done in l4 */ int leased;};struct elsa_hw { unsigned int base; unsigned int cfg; unsigned int ctrl; unsigned int ale; unsigned int isac; unsigned int itac; unsigned int hscx; unsigned int trig; unsigned int timer; unsigned int counter; unsigned int status; struct timer_list tl; unsigned int MFlag; struct BCState *bcs; u_char *transbuf; u_char *rcvbuf; unsigned int transp; unsigned int rcvp; unsigned int transcnt; unsigned int rcvcnt; u_char IER; u_char FCR; u_char LCR; u_char MCR; u_char ctrl_reg;};struct teles3_hw { unsigned int cfg_reg;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -