📄 config.c
字号:
/* $Id: config.c,v 2.57.6.6 2000/12/10 23:39:19 kai Exp $ * * Author Karsten Keil (keil@isdn4linux.de) * based on the teles driver from Jan den Ouden * * This file is (c) under GNU PUBLIC LICENSE * */#include <linux/types.h>#include <linux/stddef.h>#include <linux/timer.h>#include <linux/config.h>#include <linux/init.h>#include <linux/pci.h>#include "hisax.h"#include <linux/module.h>#include <linux/kernel_stat.h>#include <linux/tqueue.h>#include <linux/interrupt.h>#define HISAX_STATUS_BUFSIZE 4096#define INCLUDE_INLINE_FUNCS/* * This structure array contains one entry per card. An entry looks * like this: * * { type, protocol, p0, p1, p2, NULL } * * type * 1 Teles 16.0 p0=irq p1=membase p2=iobase * 2 Teles 8.0 p0=irq p1=membase * 3 Teles 16.3 p0=irq p1=iobase * 4 Creatix PNP p0=irq p1=IO0 (ISAC) p2=IO1 (HSCX) * 5 AVM A1 (Fritz) p0=irq p1=iobase * 6 ELSA PC [p0=iobase] or nothing (autodetect) * 7 ELSA Quickstep p0=irq p1=iobase * 8 Teles PCMCIA p0=irq p1=iobase * 9 ITK ix1-micro p0=irq p1=iobase * 10 ELSA PCMCIA p0=irq p1=iobase * 11 Eicon.Diehl Diva p0=irq p1=iobase * 12 Asuscom ISDNLink p0=irq p1=iobase * 13 Teleint p0=irq p1=iobase * 14 Teles 16.3c p0=irq p1=iobase * 15 Sedlbauer speed p0=irq p1=iobase * 15 Sedlbauer PC/104 p0=irq p1=iobase * 15 Sedlbauer speed pci no parameter * 16 USR Sportster internal p0=irq p1=iobase * 17 MIC card p0=irq p1=iobase * 18 ELSA Quickstep 1000PCI no parameter * 19 Compaq ISDN S0 ISA card p0=irq p1=IO0 (HSCX) p2=IO1 (ISAC) p3=IO2 * 20 Travers Technologies NETjet-S PCI card * 21 TELES PCI no parameter * 22 Sedlbauer Speed Star p0=irq p1=iobase * 23 reserved * 24 Dr Neuhaus Niccy PnP/PCI card p0=irq p1=IO0 p2=IO1 (PnP only) * 25 Teles S0Box p0=irq p1=iobase (from isapnp setup) * 26 AVM A1 PCMCIA (Fritz) p0=irq p1=iobase * 27 AVM PnP/PCI p0=irq p1=iobase (PCI no parameter) * 28 Sedlbauer Speed Fax+ p0=irq p1=iobase (from isapnp setup) * 29 Siemens I-Surf p0=irq p1=iobase p2=memory (from isapnp setup) * 30 ACER P10 p0=irq p1=iobase (from isapnp setup) * 31 HST Saphir p0=irq p1=iobase * 32 Telekom A4T none * 33 Scitel Quadro p0=subcontroller (4*S0, subctrl 1...4) * 34 Gazel ISDN cards * 35 HFC 2BDS0 PCI none * 36 Winbond 6692 PCI none * 37 HFC 2BDS0 S+/SP p0=irq p1=iobase * 38 Travers Technologies NETspider-U PCI card * 39 HFC 2BDS0-SP PCMCIA p0=irq p1=iobase * * protocol can be either ISDN_PTYPE_EURO or ISDN_PTYPE_1TR6 or ISDN_PTYPE_NI1 * * */const char *CardType[] ={"No Card", "Teles 16.0", "Teles 8.0", "Teles 16.3", "Creatix/Teles PnP", "AVM A1", "Elsa ML", "Elsa Quickstep", "Teles PCMCIA", "ITK ix1-micro Rev.2", "Elsa PCMCIA", "Eicon.Diehl Diva", "ISDNLink", "TeleInt", "Teles 16.3c", "Sedlbauer Speed Card", "USR Sportster", "ith mic Linux", "Elsa PCI", "Compaq ISA", "NETjet-S", "Teles PCI", "Sedlbauer Speed Star (PCMCIA)", "AMD 7930", "NICCY", "S0Box", "AVM A1 (PCMCIA)", "AVM Fritz PnP/PCI", "Sedlbauer Speed Fax +", "Siemens I-Surf", "Acer P10", "HST Saphir", "Telekom A4T", "Scitel Quadro", "Gazel", "HFC 2BDS0 PCI", "Winbond 6692", "HFC 2BDS0 SX", "NETspider-U", "HFC-2BDS0-SP PCMCIA",};void HiSax_closecard(int cardnr);#ifdef CONFIG_HISAX_ELSA#define DEFAULT_CARD ISDN_CTYPE_ELSA#define DEFAULT_CFG {0,0,0,0}int elsa_init_pcmcia(void*, int, int*, int);EXPORT_SYMBOL(elsa_init_pcmcia);#endif /* CONFIG_HISAX_ELSA */#ifdef CONFIG_HISAX_AVM_A1#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_A1#define DEFAULT_CFG {10,0x340,0,0}#endif#ifdef CONFIG_HISAX_AVM_A1_PCMCIA#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_A1_PCMCIA#define DEFAULT_CFG {11,0x170,0,0}int avm_a1_init_pcmcia(void*, int, int*, int);EXPORT_SYMBOL(avm_a1_init_pcmcia);#endif /* CONFIG_HISAX_AVM_A1_PCMCIA */#ifdef CONFIG_HISAX_FRITZPCI#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_FRITZPCI#define DEFAULT_CFG {0,0,0,0}#endif#ifdef CONFIG_HISAX_16_3#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_16_3#define DEFAULT_CFG {15,0x180,0,0}#endif#ifdef CONFIG_HISAX_S0BOX#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_S0BOX#define DEFAULT_CFG {7,0x378,0,0}#endif#ifdef CONFIG_HISAX_16_0#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_16_0#define DEFAULT_CFG {15,0xd0000,0xd80,0}#endif#ifdef CONFIG_HISAX_TELESPCI#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_TELESPCI#define DEFAULT_CFG {0,0,0,0}#endif#ifdef CONFIG_HISAX_IX1MICROR2#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_IX1MICROR2#define DEFAULT_CFG {5,0x390,0,0}#endif#ifdef CONFIG_HISAX_DIEHLDIVA#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_DIEHLDIVA#define DEFAULT_CFG {0,0x0,0,0}#endif#ifdef CONFIG_HISAX_ASUSCOM#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_ASUSCOM#define DEFAULT_CFG {5,0x200,0,0}#endif#ifdef CONFIG_HISAX_TELEINT#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_TELEINT#define DEFAULT_CFG {5,0x300,0,0}#endif#ifdef CONFIG_HISAX_SEDLBAUER#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_SEDLBAUER#define DEFAULT_CFG {11,0x270,0,0}int sedl_init_pcmcia(void*, int, int*, int);EXPORT_SYMBOL(sedl_init_pcmcia);#endif /* CONFIG_HISAX_SEDLBAUER */#ifdef CONFIG_HISAX_SPORTSTER#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_SPORTSTER#define DEFAULT_CFG {7,0x268,0,0}#endif#ifdef CONFIG_HISAX_MIC#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_MIC#define DEFAULT_CFG {12,0x3e0,0,0}#endif#ifdef CONFIG_HISAX_NETJET#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_NETJET_S#define DEFAULT_CFG {0,0,0,0}#endif#ifdef CONFIG_HISAX_HFCS#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_TELES3C#define DEFAULT_CFG {5,0x500,0,0}#endif#ifdef CONFIG_HISAX_HFC_PCI#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_HFC_PCI#define DEFAULT_CFG {0,0,0,0}#endif#ifdef CONFIG_HISAX_HFC_SX#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_HFC_SX#define DEFAULT_CFG {5,0x2E0,0,0}int hfc_init_pcmcia(void*, int, int*, int);EXPORT_SYMBOL(hfc_init_pcmcia);#endif#ifdef CONFIG_HISAX_AMD7930#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_AMD7930#define DEFAULT_CFG {12,0x3e0,0,0}#endif#ifdef CONFIG_HISAX_NICCY#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_NICCY#define DEFAULT_CFG {0,0x0,0,0}#endif#ifdef CONFIG_HISAX_ISURF#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_ISURF#define DEFAULT_CFG {5,0x100,0xc8000,0}#endif#ifdef CONFIG_HISAX_HSTSAPHIR#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_HSTSAPHIR#define DEFAULT_CFG {5,0x250,0,0}#endif#ifdef CONFIG_HISAX_BKM_A4T #undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_BKM_A4T#define DEFAULT_CFG {0,0x0,0,0}#endif#ifdef CONFIG_HISAX_SCT_QUADRO#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_SCT_QUADRO#define DEFAULT_CFG {1,0x0,0,0}#endif#ifdef CONFIG_HISAX_GAZEL#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_GAZEL#define DEFAULT_CFG {15,0x180,0,0}#endif#ifdef CONFIG_HISAX_W6692#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_W6692#define DEFAULT_CFG {0,0,0,0}#endif#ifdef CONFIG_HISAX_NETJET_U#undef DEFAULT_CARD#undef DEFAULT_CFG#define DEFAULT_CARD ISDN_CTYPE_NETJET_U#define DEFAULT_CFG {0,0,0,0}#endif#ifdef CONFIG_HISAX_1TR6#define DEFAULT_PROTO ISDN_PTYPE_1TR6#define DEFAULT_PROTO_NAME "1TR6"#endif#ifdef CONFIG_HISAX_NI1#undef DEFAULT_PROTO#define DEFAULT_PROTO ISDN_PTYPE_NI1#undef DEFAULT_PROTO_NAME#define DEFAULT_PROTO_NAME "NI1"#endif#ifdef CONFIG_HISAX_EURO#undef DEFAULT_PROTO#define DEFAULT_PROTO ISDN_PTYPE_EURO#undef DEFAULT_PROTO_NAME#define DEFAULT_PROTO_NAME "EURO"#endif#ifndef DEFAULT_PROTO#define DEFAULT_PROTO ISDN_PTYPE_UNKNOWN#define DEFAULT_PROTO_NAME "UNKNOWN"#endif#ifndef DEFAULT_CARD#error "HiSax: No cards configured"#endifint hisax_init_pcmcia(void *, int *, struct IsdnCard *);EXPORT_SYMBOL(hisax_init_pcmcia);EXPORT_SYMBOL(HiSax_closecard);#define FIRST_CARD { \ DEFAULT_CARD, \ DEFAULT_PROTO, \ DEFAULT_CFG, \ NULL, \}#define EMPTY_CARD {0, DEFAULT_PROTO, {0, 0, 0, 0}, NULL}struct IsdnCard cards[] ={ FIRST_CARD, EMPTY_CARD, EMPTY_CARD, EMPTY_CARD, EMPTY_CARD, EMPTY_CARD, EMPTY_CARD, EMPTY_CARD,};static char HiSaxID[64] __devinitdata = { 0, };char *HiSax_id __devinitdata = HiSaxID;#ifdef MODULE/* Variables for insmod */static int type[8] __devinitdata = { 0, };static int protocol[8] __devinitdata = { 0, };static int io[8] __devinitdata = { 0, };#undef IO0_IO1#ifdef CONFIG_HISAX_16_3#define IO0_IO1#endif#ifdef CONFIG_HISAX_NICCY#undef IO0_IO1#define IO0_IO1#endif#ifdef IO0_IO1static int io0[8] __devinitdata = { 0, };static int io1[8] __devinitdata = { 0, };#endifstatic int irq[8] __devinitdata = { 0, };static int mem[8] __devinitdata = { 0, };static char *id __devinitdata = HiSaxID;MODULE_AUTHOR("Karsten Keil");MODULE_PARM(type, "1-8i");MODULE_PARM(protocol, "1-8i");MODULE_PARM(io, "1-8i");MODULE_PARM(irq, "1-8i");MODULE_PARM(mem, "1-8i");MODULE_PARM(id, "s");#ifdef IO0_IO1MODULE_PARM(io0, "1-8i");MODULE_PARM(io1, "1-8i");#endif /* IO0_IO1 */#endif /* MODULE */int nrcards;extern char *l1_revision;extern char *l2_revision;extern char *l3_revision;extern char *lli_revision;extern char *tei_revision;char *HiSax_getrev(const char *revision){ char *rev; char *p; if ((p = strchr(revision, ':'))) { rev = p + 2; p = strchr(rev, '$'); *--p = 0; } else rev = "???"; return rev;}void __initHiSaxVersion(void){ char tmp[64]; printk(KERN_INFO "HiSax: Linux Driver for passive ISDN cards\n");#ifdef MODULE printk(KERN_INFO "HiSax: Version 3.5 (module)\n");#else printk(KERN_INFO "HiSax: Version 3.5 (kernel)\n");#endif strcpy(tmp, l1_revision); printk(KERN_INFO "HiSax: Layer1 Revision %s\n", HiSax_getrev(tmp)); strcpy(tmp, l2_revision); printk(KERN_INFO "HiSax: Layer2 Revision %s\n", HiSax_getrev(tmp)); strcpy(tmp, tei_revision); printk(KERN_INFO "HiSax: TeiMgr Revision %s\n", HiSax_getrev(tmp)); strcpy(tmp, l3_revision); printk(KERN_INFO "HiSax: Layer3 Revision %s\n", HiSax_getrev(tmp)); strcpy(tmp, lli_revision); printk(KERN_INFO "HiSax: LinkLayer Revision %s\n", HiSax_getrev(tmp)); certification_check(1);}voidHiSax_mod_dec_use_count(void){ MOD_DEC_USE_COUNT;}voidHiSax_mod_inc_use_count(void){ MOD_INC_USE_COUNT;}#ifndef MODULE#define MAX_ARG (HISAX_MAX_CARDS*5)static int __initHiSax_setup(char *line){ int i, j, argc; int ints[MAX_ARG + 1]; char *str; str = get_options(line, MAX_ARG, ints); argc = ints[0]; printk(KERN_DEBUG"HiSax_setup: argc(%d) str(%s)\n", argc, str); i = 0; j = 1; while (argc && (i < HISAX_MAX_CARDS)) { if (argc) { cards[i].typ = ints[j]; j++; argc--; } if (argc) { cards[i].protocol = ints[j]; j++; argc--; } if (argc) { cards[i].para[0] = ints[j]; j++; argc--; } if (argc) { cards[i].para[1] = ints[j]; j++; argc--; } if (argc) { cards[i].para[2] = ints[j]; j++; argc--; } i++; } if (str && *str) { strcpy(HiSaxID, str); HiSax_id = HiSaxID; } else { strcpy(HiSaxID, "HiSax"); HiSax_id = HiSaxID; } return(1);}__setup("hisax=", HiSax_setup);#endif /* MODULES */#if CARD_TELES0extern int setup_teles0(struct IsdnCard *card);#endif#if CARD_TELES3extern int setup_teles3(struct IsdnCard *card);#endif#if CARD_S0BOXextern int setup_s0box(struct IsdnCard *card);#endif#if CARD_TELESPCIextern int setup_telespci(struct IsdnCard *card);#endif#if CARD_AVM_A1extern int setup_avm_a1(struct IsdnCard *card);#endif#if CARD_AVM_A1_PCMCIAextern int setup_avm_a1_pcmcia(struct IsdnCard *card);#endif#if CARD_FRITZPCIextern int setup_avm_pcipnp(struct IsdnCard *card);#endif#if CARD_ELSAextern int setup_elsa(struct IsdnCard *card);#endif#if CARD_IX1MICROR2extern int setup_ix1micro(struct IsdnCard *card);#endif#if CARD_DIEHLDIVAextern int setup_diva(struct IsdnCard *card);#endif#if CARD_ASUSCOMextern int setup_asuscom(struct IsdnCard *card);#endif#if CARD_TELEINTextern int setup_TeleInt(struct IsdnCard *card);#endif#if CARD_SEDLBAUERextern int setup_sedlbauer(struct IsdnCard *card);#endif#if CARD_SPORTSTERextern int setup_sportster(struct IsdnCard *card);#endif#if CARD_MICextern int setup_mic(struct IsdnCard *card);#endif#if CARD_NETJET_Sextern int setup_netjet_s(struct IsdnCard *card);#endif#if CARD_HFCSextern int setup_hfcs(struct IsdnCard *card);#endif#if CARD_HFC_PCIextern int setup_hfcpci(struct IsdnCard *card);#endif#if CARD_HFC_SXextern int setup_hfcsx(struct IsdnCard *card);#endif#if CARD_AMD7930extern int setup_amd7930(struct IsdnCard *card);#endif#if CARD_NICCYextern int setup_niccy(struct IsdnCard *card);#endif#if CARD_ISURFextern int setup_isurf(struct IsdnCard *card);#endif#if CARD_HSTSAPHIRextern int setup_saphir(struct IsdnCard *card);#endif#if CARD_TESTEMUextern int setup_testemu(struct IsdnCard *card);#endif#if CARD_BKM_A4Textern int setup_bkm_a4t(struct IsdnCard *card);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -