Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 | /* $Id: hisax.h,v 2.14 1998/02/11 17:28:04 keil Exp $ * Basic declarations, defines and prototypes * * $Log: hisax.h,v $ * Revision 2.14 1998/02/11 17:28:04 keil * Niccy PnP/PCI support * * Revision 2.13 1998/02/09 18:46:02 keil * Support for Sedlbauer PCMCIA (Marcus Niemann) * * Revision 2.12 1998/02/03 23:31:30 keil * add AMD7930 support * * Revision 2.11 1998/02/02 13:33:00 keil * New card support * * Revision 2.10 1997/11/08 21:37:52 keil * new l1 init;new Compaq card * * Revision 2.9 1997/11/06 17:09:09 keil * New 2.1 init code * * Revision 2.8 1997/10/29 19:04:13 keil * new L1; changes for 2.1 * * Revision 2.7 1997/10/10 20:56:47 fritz * New HL interface. * * 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/init.h> #define PH_ACTIVATE_REQ 0x0010 #define PH_ACTIVATE_CNF 0x0011 #define PH_ACTIVATE_IND 0x0012 #define PH_DEACTIVATE_REQ 0x0020 #define PH_DEACTIVATE_CNF 0x0021 #define PH_DEACTIVATE_IND 0x0022 #define PH_DEACT_REQ 0x0024 #define PH_DEACT_CNF 0x0025 #define PH_DEACT_IND 0x0026 #define PH_DEACT_ACK 0x0027 #define PH_TESTLOOP_REQ 0x0030 #define PH_PAUSE_CNF 0x0035 #define PH_PAUSE_IND 0x0036 #define PH_PULL_REQ 0x0038 #define PH_PULL_CNF 0x0039 #define PH_PULL_IND 0x003A #define PH_DATA_REQ 0x0040 #define PH_DATA_IND 0x0042 #define PH_INFO3_REQ 0x0008 #define PH_INFO2_IND 0x000A #define PH_ENABLE_REQ 0x0004 #define PH_RSYNC_IND 0x0006 #define PH_RESET_REQ 0x0000 #define PH_RESET_IND 0x0002 #define PH_POWERUP_CNF 0x0003 #define PH_ACTIV_REQ 0x000C #define PH_I4_P8_IND 0x000D #define PH_I4_P10_IND 0x000F #define MDL_ASSIGN_REQ 0x0050 #define MDL_ASSIGN_IND 0x0052 #define MDL_REMOVE_REQ 0x0054 #define MDL_ERROR_REQ 0x0058 #define MDL_ERROR_IND 0x005A #define CARD_AUX_IND 0x005E #define DL_UNIT_DATA 6 #define CC_ESTABLISH 7 #define DL_ESTABLISH 8 #define DL_DATA 9 #define CC_CONNECT 15 #define DL_RELEASE 20 #define DL_FLUSH 21 #define CC_REJECT 23 #define CC_SETUP_REQ 24 #define CC_SETUP_CNF 25 #define CC_SETUP_IND 26 #define CC_SETUP_RSP 27 #define CC_SETUP_COMPLETE_IND 28 #define CC_DISCONNECT_REQ 29 #define CC_DISCONNECT_IND 30 #define CC_RELEASE_CNF 31 #define CC_RELEASE_IND 32 #define CC_RELEASE_REQ 33 #define CC_REJECT_REQ 34 #define CC_PROCEEDING_IND 35 #define CC_DLRL 36 #define CC_DLEST 37 #define CC_ALERTING_REQ 38 #define CC_ALERTING_IND 39 #define DL_STOP 40 #define DL_START 41 #define MDL_INFO_SETUP 42 #define MDL_INFO_CONN 43 #define MDL_INFO_REL 44 #define MDL_NOTEIPROC 46 #define LC_ESTABLISH 47 #define LC_RELEASE 48 #define CC_INFO_CHARGE 52 #define CC_MORE_INFO 53 #define CC_IGNORE 54 #define CC_RESTART 55 #define CC_T303 60 #define CC_T304 61 #define CC_T305 62 #define CC_T308_1 64 #define CC_T308_2 65 #define CC_T310 66 #define CC_T313 67 #define CC_T318 68 #define CC_T319 69 #define CC_NOSETUP_RSP_ERR 70 #define CC_SETUP_ERR 71 #define CC_CONNECT_ERR 72 #define CC_RELEASE_ERR 73 #define CARD_RESET 0x1001 #define CARD_SETIRQ 0x1002 #define CARD_INIT 0x1003 #define CARD_RELEASE 0x1004 #define CARD_TEST 0x1005 #ifdef __KERNEL__ #define MAX_DFRAME_LEN 260 #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 I4L_IRQ_FLAG SA_INTERRUPT */ #define I4L_IRQ_FLAG 0 /* * Statemachine */ struct Fsm { int *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 6 struct Layer1 { void *hardware; struct BCState *bcs; struct PStack **stlistp; int Flags; struct FsmInst l1m; struct FsmTimer timer; void (*l1l2) (struct PStack *, int, void *); void (*l1man) (struct PStack *, int, void *); void (*l1tei) (struct PStack *, int, void *); int mode, bc; }; #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 struct Layer2 { int tei; int tei_wanted; 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 (*l2man) (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[32]; }; struct Layer3 { void (*l3l4) (struct l3_process *, int, void *); void (*l3l2) (struct PStack *, int, void *); struct l3_process *proc; struct l3_process *global; int N303; int debug; }; 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 *); void (*manl1) (struct PStack *, int, void *); void (*manl2) (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 rcvidx; int count; /* Current skb sent count */ u_char *rcvbuf; /* B-Channel receive Buffer */ struct sk_buff *tx_skb; /* B-Channel transmit Buffer */ }; struct hfcB_hw { unsigned int *send; int f1; int f2; struct sk_buff *tx_skb; /* B-Channel transmit Buffer */ }; struct tiger_hw { struct sk_buff *tx_skb; /* B-Channel transmit Buffer */ 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 foreign_hw { int doHDLCprocessing; 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; struct sk_buff *tx_skb; /* B-Channel transmit Buffer */ }; #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 struct BCState { int channel; int mode; int Flag; struct IsdnCardState *cs; int tx_cnt; /* B-Channel transmit counter */ struct sk_buff_head rqueue; /* B-Channel receive Queue */ struct sk_buff_head squeue; /* B-Channel send Queue */ struct PStack *st; struct tq_struct tqueue; int event; int (*BC_SetStack) (struct PStack *, struct BCState *); void (*BC_Close) (struct BCState *); union { struct hscx_hw hscx; struct hfcB_hw hfc; struct tiger_hw tiger; struct foreign_hw foreign; } hw; }; struct LcFsm { int type; int delay; struct FsmInst lcfi; struct Channel *ch; void (*lccall) (struct LcFsm *, int, void *); struct PStack *st; int l2_establish; int l2_start; struct FsmTimer act_timer; char debug_id[32]; }; struct Channel { struct PStack *b_st, *d_st; struct IsdnCardState *cs; struct BCState *bcs; int chan; int incoming; struct FsmInst fi; struct LcFsm *lc_d; struct LcFsm *lc_b; struct FsmTimer drel_timer, dial_timer; int debug; int l2_protocol, l2_active_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; u_char ctrl_reg; }; struct teles3_hw { unsigned int cfg_reg; unsigned int isac; unsigned int hscx[2]; unsigned int isacfifo; unsigned int hscxfifo[2]; }; struct teles0_hw { unsigned int cfg_reg; unsigned int membase; }; struct avm_hw { unsigned int cfg_reg; unsigned int isac; unsigned int hscx[2]; unsigned int isacfifo; unsigned int hscxfifo[2]; unsigned int counter; }; struct ix1_hw { unsigned int cfg_reg; unsigned int isac_ale; unsigned int isac; unsigned int hscx_ale; unsigned int hscx; }; struct diva_hw { unsigned int cfg_reg; unsigned int ctrl; unsigned int isac_adr; unsigned int isac; unsigned int hscx_adr; unsigned int hscx; unsigned int status; struct timer_list tl; u_char ctrl_reg; }; struct asus_hw { unsigned int cfg_reg; unsigned int adr; unsigned int isac; unsigned int hscx; unsigned int u7; unsigned int pots; }; struct hfc_hw { unsigned int addr; unsigned int fifosize; unsigned char cirm; unsigned char ctmt; unsigned char cip; u_char isac_spcr; struct timer_list timer; }; struct sedl_hw { unsigned int cfg_reg; unsigned int adr; unsigned int isac; unsigned int hscx; unsigned int reset_on; unsigned int reset_off; }; struct spt_hw { unsigned int cfg_reg; unsigned int isac; unsigned int hscx[2]; unsigned char res_irq; }; struct mic_hw { unsigned int cfg_reg; unsigned int adr; unsigned int isac; unsigned int hscx; }; struct njet_hw { unsigned int base; unsigned int isac; unsigned int auxa; unsigned char auxd; unsigned char dmactrl; unsigned char ctrl_reg; unsigned char irqmask0; unsigned char irqstat0; unsigned char last_is0; }; struct hfcD_hw { unsigned int addr; unsigned int bfifosize; unsigned int dfifosize; unsigned char cirm; unsigned char ctmt; unsigned char cip; unsigned char conn; unsigned char mst_m; unsigned char int_m1; unsigned char int_m2; unsigned char int_s1; unsigned char sctrl; unsigned char stat; unsigned char fifo; unsigned char f1; unsigned char f2; unsigned int *send; struct timer_list timer; }; #define HW_IOM1 0 #define HW_IPAC 1 #define FLG_TWO_DCHAN 4 #define FLG_L1_DBUSY 5 #define FLG_DBUSY_TIMER 6 #define FLG_LOCK_ATOMIC 7 #define HW_MON0_RX_END 8 #define HW_MON1_RX_END 9 #define HW_MON0_TX_END 10 #define HW_MON1_TX_END 11 struct IsdnCardState { unsigned char typ; unsigned char subtyp; int protocol; unsigned int irq; int HW_Flags; int *busy_flag; union { struct elsa_hw elsa; struct teles0_hw teles0; struct teles3_hw teles3; struct avm_hw avm; struct ix1_hw ix1; struct diva_hw diva; struct asus_hw asus; struct hfc_hw hfc; struct sedl_hw sedl; struct spt_hw spt; struct mic_hw mic; struct njet_hw njet; struct hfcD_hw hfcD; struct ix1_hw niccy; struct foreign_interface *foreign; } hw; int myid; isdn_if iif; u_char *status_buf; u_char *status_read; u_char *status_write; u_char *status_end; u_char (*readisac) (struct IsdnCardState *, u_char); void (*writeisac) (struct IsdnCardState *, u_char, u_char); void (*readisacfifo) (struct IsdnCardState *, u_char *, int); void (*writeisacfifo) (struct IsdnCardState *, u_char *, int); u_char (*BC_Read_Reg) (struct IsdnCardState *, int, u_char); void (*BC_Write_Reg) (struct IsdnCardState *, int, u_char, u_char); void (*BC_Send_Data) (struct BCState *); int (*cardmsg) (struct IsdnCardState *, int, void *); void (*l1cmd) (struct IsdnCardState *, int, void *); struct Channel channel[2]; struct BCState bcs[2]; struct PStack *stlist; u_char *rcvbuf; int rcvidx; struct sk_buff *tx_skb; int tx_cnt; int event; struct tq_struct tqueue; struct timer_list dbusytimer; struct sk_buff_head rq, sq; /* D-channel queues */ int ph_state; int cardnr; int dlogflag; char *dlogspace; int debug; u_char *mon_tx; u_char *mon_rx; int mon_txp; int mon_txc; int mon_rxp; u_char mocr; void (*setstack_d) (struct PStack *, struct IsdnCardState *); }; #define MON0_RX 1 #define MON1_RX 2 #define MON0_TX 4 #define MON1_TX 8 #define ISDN_CTYPE_16_0 1 #define ISDN_CTYPE_8_0 2 #define ISDN_CTYPE_16_3 3 #define ISDN_CTYPE_PNP 4 #define ISDN_CTYPE_A1 5 #define ISDN_CTYPE_ELSA 6 #define ISDN_CTYPE_ELSA_PNP 7 #define ISDN_CTYPE_TELESPCMCIA 8 #define ISDN_CTYPE_IX1MICROR2 9 #define ISDN_CTYPE_ELSA_PCMCIA 10 #define ISDN_CTYPE_DIEHLDIVA 11 #define ISDN_CTYPE_ASUSCOM 12 #define ISDN_CTYPE_TELEINT 13 #define ISDN_CTYPE_TELES3C 14 #define ISDN_CTYPE_SEDLBAUER 15 #define ISDN_CTYPE_SPORTSTER 16 #define ISDN_CTYPE_MIC 17 #define ISDN_CTYPE_ELSA_PCI 18 #define ISDN_CTYPE_COMPAQ_ISA 19 #define ISDN_CTYPE_NETJET 20 #define ISDN_CTYPE_TELESPCI 21 #define ISDN_CTYPE_SEDLBAUER_PCMCIA 22 #define ISDN_CTYPE_AMD7930 23 #define ISDN_CTYPE_NICCY 24 #define ISDN_CTYPE_DBRI 25 #define ISDN_CTYPE_COUNT 25 #ifdef ISDN_CHIP_ISAC #undef ISDN_CHIP_ISAC #endif #define HISAX_INITFUNC(__arginit) __initfunc(__arginit) #define HISAX_INITDATA __initdata #ifdef CONFIG_HISAX_16_0 #define CARD_TELES0 (1<< ISDN_CTYPE_16_0) | (1<< ISDN_CTYPE_8_0) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_TELES0 0 #endif #ifdef CONFIG_HISAX_16_3 #define CARD_TELES3 (1<< ISDN_CTYPE_16_3) | (1<< ISDN_CTYPE_PNP) | \ (1<< ISDN_CTYPE_TELESPCMCIA) | (1<< ISDN_CTYPE_COMPAQ_ISA) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_TELES3 0 #endif #ifdef CONFIG_HISAX_AVM_A1 #define CARD_AVM_A1 (1<< ISDN_CTYPE_A1) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_AVM_A1 0 #endif #ifdef CONFIG_HISAX_ELSA #define CARD_ELSA (1<< ISDN_CTYPE_ELSA) | (1<< ISDN_CTYPE_ELSA_PNP) | \ (1<< ISDN_CTYPE_ELSA_PCMCIA) | (1<< ISDN_CTYPE_ELSA_PCI) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #undef HISAX_INITFUNC #define HISAX_INITFUNC(__arginit) __arginit #undef HISAX_INITDATA #define HISAX_INITDATA #else #define CARD_ELSA 0 #endif #ifdef CONFIG_HISAX_IX1MICROR2 #define CARD_IX1MICROR2 (1 << ISDN_CTYPE_IX1MICROR2) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_IX1MICROR2 0 #endif #ifdef CONFIG_HISAX_DIEHLDIVA #define CARD_DIEHLDIVA (1 << ISDN_CTYPE_DIEHLDIVA) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_DIEHLDIVA 0 #endif #ifdef CONFIG_HISAX_ASUSCOM #define CARD_ASUSCOM (1 << ISDN_CTYPE_ASUSCOM) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_ASUSCOM 0 #endif #ifdef CONFIG_HISAX_TELEINT #define CARD_TELEINT (1 << ISDN_CTYPE_TELEINT) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_TELEINT 0 #endif #ifdef CONFIG_HISAX_SEDLBAUER #define CARD_SEDLBAUER (1 << ISDN_CTYPE_SEDLBAUER) | (1 << ISDN_CTYPE_SEDLBAUER_PCMCIA) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_SEDLBAUER 0 #endif #ifdef CONFIG_HISAX_SPORTSTER #define CARD_SPORTSTER (1 << ISDN_CTYPE_SPORTSTER) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_SPORTSTER 0 #endif #ifdef CONFIG_HISAX_MIC #define CARD_MIC (1 << ISDN_CTYPE_MIC) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_MIC 0 #endif #ifdef CONFIG_HISAX_NETJET #define CARD_NETJET (1 << ISDN_CTYPE_NETJET) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_NETJET 0 #endif #ifdef CONFIG_HISAX_TELES3C #define CARD_TELES3C (1<< ISDN_CTYPE_TELES3C) #else #define CARD_TELES3C 0 #endif #ifdef CONFIG_HISAX_AMD7930 #define CARD_AMD7930 (1 << ISDN_CTYPE_AMD7930) #else #define CARD_AMD7930 0 #endif #ifdef CONFIG_HISAX_NICCY #define CARD_NICCY (1 << ISDN_CTYPE_NICCY) #ifndef ISDN_CHIP_ISAC #define ISDN_CHIP_ISAC 1 #endif #else #define CARD_NICCY 0 #endif #ifdef CONFIG_HISAX_DBRI #define CARD_DBRI (1 << ISDN_CTYPE_DBRI) #else #define CARD_DBRI 0 #endif #define SUPORTED_CARDS (CARD_TELES0 | CARD_TELES3 | CARD_AVM_A1 | CARD_ELSA \ | CARD_IX1MICROR2 | CARD_DIEHLDIVA | CARD_ASUSCOM \ | CARD_TELEINT | CARD_SEDLBAUER | CARD_SPORTSTER \ | CARD_MIC | CARD_NETJET | CARD_TELES3C | CARD_AMD7930 \ | CARD_NICCY | CARD_DBRI) #define TEI_PER_CARD 0 #ifdef CONFIG_HISAX_1TR6 #undef TEI_PER_CARD #define TEI_PER_CARD 1 #endif #ifdef CONFIG_HISAX_EURO #undef TEI_PER_CARD #define TEI_PER_CARD 1 #define HISAX_EURO_SENDCOMPLETE 1 #ifdef CONFIG_HISAX_ML #undef HISAX_EURO_SENDCOMPLETE #endif #undef HISAX_DE_AOC #ifdef CONFIG_DE_AOC #define HISAX_DE_AOC 1 #endif #endif #if TEI_PER_CARD #undef TEI_FIXED #endif #undef PTP_DATA_LINK #ifdef PTP_DATA_LINK #undef TEI_FIXED #define TEI_FIXED 0 #define LAYER2_WATCHING #endif struct IsdnCard { int typ; int protocol; /* EDSS1 or 1TR6 */ unsigned int para[4]; struct IsdnCardState *cs; }; void setstack_isdnl2(struct PStack *st, char *debug_id); int HiSax_inithardware(int *); void HiSax_closehardware(void); void setstack_HiSax(struct PStack *st, struct IsdnCardState *cs); unsigned int random_ri(void); void setstack_isdnl3(struct PStack *st, struct Channel *chanp); void HiSax_addlist(struct IsdnCardState *sp, struct PStack *st); void releasestack_isdnl2(struct PStack *st); void releasestack_isdnl3(struct PStack *st); void HiSax_rmlist(struct IsdnCardState *sp, struct PStack *st); u_char *findie(u_char * p, int size, u_char ie, int wanted_set); int getcallref(u_char * p); int newcallref(void); void FsmNew(struct Fsm *fsm, struct FsmNode *fnlist, int fncount); void FsmFree(struct Fsm *fsm); int FsmEvent(struct FsmInst *fi, int event, void *arg); void FsmChangeState(struct FsmInst *fi, int newstate); void FsmInitTimer(struct FsmInst *fi, struct FsmTimer *ft); int FsmAddTimer(struct FsmTimer *ft, int millisec, int event, void *arg, int where); void FsmRestartTimer(struct FsmTimer *ft, int millisec, int event, void *arg, int where); void FsmDelTimer(struct FsmTimer *ft, int where); void jiftime(char *s, long mark); int HiSax_command(isdn_ctrl * ic); int HiSax_writebuf_skb(int id, int chan, int ack, struct sk_buff *skb); void HiSax_putstatus(struct IsdnCardState *csta, char *buf); void HiSax_reportcard(int cardnr); int QuickHex(char *txt, u_char * p, int cnt); void LogFrame(struct IsdnCardState *sp, u_char * p, int size); void dlogframe(struct IsdnCardState *sp, u_char * p, int size, char *comment); void iecpy(u_char * dest, u_char * iestart, int ieoffset); void setstack_transl2(struct PStack *st); void releasestack_transl2(struct PStack *st); void setstack_tei(struct PStack *st); void setstack_manager(struct PStack *st); #ifdef ISDN_CHIP_ISAC void setstack_isac(struct PStack *st, struct IsdnCardState *cs); #endif /* ISDN_CHIP_ISAC */ #endif /* __KERNEL__ */ #define HZDELAY(jiffs) {int tout = jiffs; while (tout--) udelay(1000000/HZ);} int ll_run(struct IsdnCardState *csta); void ll_stop(struct IsdnCardState *csta); void CallcNew(void); void CallcFree(void); int CallcNewChan(struct IsdnCardState *csta); void CallcFreeChan(struct IsdnCardState *csta); void Isdnl1New(void); void Isdnl1Free(void); void Isdnl2New(void); void Isdnl2Free(void); void init_tei(struct IsdnCardState *sp, int protocol); void release_tei(struct IsdnCardState *sp); char *HiSax_getrev(const char *revision); void TeiNew(void); void TeiFree(void); |