⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 linux-2.6.15.6
💻 C
📖 第 1 页 / 共 4 页
字号:
/* $Id: config.c,v 2.84.2.5 2004/02/11 13:21:33 keil Exp $ * * Author       Karsten Keil * Copyright    by Karsten Keil      <keil@isdn4linux.de> *              by Kai Germaschewski <kai.germaschewski@gmx.de> *  * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. * * For changes and modifications please read * Documentation/isdn/HiSax.cert * * based on the teles driver from Jan den Ouden * */#include <linux/types.h>#include <linux/stddef.h>#include <linux/timer.h>#include <linux/config.h>#include <linux/init.h>#include "hisax.h"#include <linux/module.h>#include <linux/kernel_stat.h>#include <linux/workqueue.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 *   40 hotplug interface *   41 Formula-n enter:now ISDN PCI a/b   none * * 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",	"Hotplug", "Formula-n enter:now PCI a/b", };#ifdef CONFIG_HISAX_ELSA#define DEFAULT_CARD ISDN_CTYPE_ELSA#define DEFAULT_CFG {0,0,0,0}#endif#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}#endif#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}#endif#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}#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#define DEFAULT_CARD 0#define DEFAULT_CFG {0,0,0,0}#endif#define FIRST_CARD { \	DEFAULT_CARD, \	DEFAULT_PROTO, \	DEFAULT_CFG, \	NULL, \}struct IsdnCard cards[HISAX_MAX_CARDS] = {	FIRST_CARD,};#define HISAX_IDSIZE (HISAX_MAX_CARDS*8)static char HiSaxID[HISAX_IDSIZE] = { 0, };static char *HiSax_id = HiSaxID;#ifdef MODULE/* Variables for insmod */static int type[HISAX_MAX_CARDS] = { 0, };static int protocol[HISAX_MAX_CARDS] = { 0, };static int io[HISAX_MAX_CARDS] = { 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[HISAX_MAX_CARDS] __devinitdata = { 0, };static int io1[HISAX_MAX_CARDS] __devinitdata = { 0, };#endifstatic int irq[HISAX_MAX_CARDS] __devinitdata = { 0, };static int mem[HISAX_MAX_CARDS] __devinitdata = { 0, };static char *id = HiSaxID;MODULE_DESCRIPTION("ISDN4Linux: Driver for passive ISDN cards");MODULE_AUTHOR("Karsten Keil");MODULE_LICENSE("GPL");module_param_array(type, int, NULL, 0);module_param_array(protocol, int, NULL, 0);module_param_array(io, int, NULL, 0);module_param_array(irq, int, NULL, 0);module_param_array(mem, int, NULL, 0);module_param(id, charp, 0);#ifdef IO0_IO1module_param_array(io0, int, NULL, 0);module_param_array(io1, int, NULL, 0);#endif#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;}static void __init HiSaxVersion(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));}#ifndef MODULE#define MAX_ARG	(HISAX_MAX_CARDS*5)static int __init HiSax_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)) {		cards[i].protocol = DEFAULT_PROTO;		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) {		if (strlen(str) < HISAX_IDSIZE)			strcpy(HiSaxID, str);		else			printk(KERN_WARNING "HiSax: ID too long!");	} 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_A1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -