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

📄 config.c

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* $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 + -