您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ HscxVersion函数代码示例

51自学网 2021-06-01 21:26:18
  C++
这篇教程C++ HscxVersion函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中HscxVersion函数的典型用法代码示例。如果您正苦于以下问题:C++ HscxVersion函数的具体用法?C++ HscxVersion怎么用?C++ HscxVersion使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了HscxVersion函数的23个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: setup_saphir

int __initsetup_saphir(struct IsdnCard *card){	struct IsdnCardState *cs = card->cs;	char tmp[64];	strcpy(tmp, saphir_rev);	printk(KERN_INFO "HiSax: HST Saphir driver Rev. %s/n", HiSax_getrev(tmp));	if (cs->typ != ISDN_CTYPE_HSTSAPHIR)		return (0);	/* IO-Ports */	cs->hw.saphir.cfg_reg = card->para[1];	cs->hw.saphir.isac = card->para[1] + ISAC_DATA;	cs->hw.saphir.hscx = card->para[1] + HSCX_DATA;	cs->hw.saphir.ale = card->para[1] + ADDRESS_REG;	cs->irq = card->para[0];	if (check_region((cs->hw.saphir.cfg_reg), 6)) {		printk(KERN_WARNING			"HiSax: %s config port %x-%x already in use/n",			CardType[card->typ],			cs->hw.saphir.cfg_reg,			cs->hw.saphir.cfg_reg + 5);		return (0);	} else		request_region(cs->hw.saphir.cfg_reg,6, "saphir");	printk(KERN_INFO	       "HiSax: %s config irq:%d io:0x%X/n",	       CardType[cs->typ], cs->irq,	       cs->hw.saphir.cfg_reg);	cs->hw.saphir.timer.function = (void *) SaphirWatchDog;	cs->hw.saphir.timer.data = (long) cs;	init_timer(&cs->hw.saphir.timer);	cs->hw.saphir.timer.expires = jiffies + 4*HZ;	add_timer(&cs->hw.saphir.timer);	if (saphir_reset(cs)) {		release_io_saphir(cs);		return (0);	}	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &saphir_card_msg;	cs->irq_func = &saphir_interrupt;	ISACVersion(cs, "saphir:");	if (HscxVersion(cs, "saphir:")) {		printk(KERN_WARNING		    "saphir: wrong HSCX versions check IO address/n");		release_io_saphir(cs);		return (0);	}	return (1);}
开发者ID:JBTech,项目名称:ralink_rt5350,代码行数:59,


示例2: setup_sportster

int __initsetup_sportster(struct IsdnCard *card){	struct IsdnCardState *cs = card->cs;	char tmp[64];	strcpy(tmp, sportster_revision);	printk(KERN_INFO "HiSax: USR Sportster driver Rev. %s/n", HiSax_getrev(tmp));	if (cs->typ != ISDN_CTYPE_SPORTSTER)		return (0);	cs->hw.spt.cfg_reg = card->para[1];	cs->irq = card->para[0];	if (!get_io_range(cs))		return (0);	cs->hw.spt.isac = cs->hw.spt.cfg_reg + SPORTSTER_ISAC;	cs->hw.spt.hscx[0] = cs->hw.spt.cfg_reg + SPORTSTER_HSCXA;	cs->hw.spt.hscx[1] = cs->hw.spt.cfg_reg + SPORTSTER_HSCXB;		switch(cs->irq) {		case 5:	cs->hw.spt.res_irq = 1;			break;		case 7:	cs->hw.spt.res_irq = 2;			break;		case 10:cs->hw.spt.res_irq = 3;			break;		case 11:cs->hw.spt.res_irq = 4;			break;		case 12:cs->hw.spt.res_irq = 5;			break;		case 14:cs->hw.spt.res_irq = 6;			break;		case 15:cs->hw.spt.res_irq = 7;			break;		default:release_io_sportster(cs);			printk(KERN_WARNING "Sportster: wrong IRQ/n");			return(0);	}	printk(KERN_INFO "HiSax: %s config irq:%d cfg:0x%X/n",		CardType[cs->typ], cs->irq, cs->hw.spt.cfg_reg);	setup_isac(cs);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &Sportster_card_msg;	cs->irq_func = &sportster_interrupt;	ISACVersion(cs, "Sportster:");	if (HscxVersion(cs, "Sportster:")) {		printk(KERN_WARNING		       "Sportster: wrong HSCX versions check IO address/n");		release_io_sportster(cs);		return (0);	}	return (1);}
开发者ID:jameshilliard,项目名称:actiontec_opensrc_mi424wr-rev-ef_fw-20-19-8,代码行数:59,


示例3: setup_avm_a1_pcmcia

int __devinitsetup_avm_a1_pcmcia(struct IsdnCard *card){	u_char model, vers;	struct IsdnCardState *cs = card->cs;	long flags;	char tmp[64];	strcpy(tmp, avm_revision);	printk(KERN_INFO "HiSax: AVM A1 PCMCIA driver Rev. %s/n",						 HiSax_getrev(tmp));	if (cs->typ != ISDN_CTYPE_A1_PCMCIA)		return (0);	cs->hw.avm.cfg_reg = card->para[1];	cs->irq = card->para[0];	save_flags(flags);	outb(cs->hw.avm.cfg_reg+ASL1_OFFSET, ASL1_W_ENABLE_S0);        sti();	byteout(cs->hw.avm.cfg_reg+ASL0_OFFSET,0x00);	HZDELAY(HZ / 5 + 1);	byteout(cs->hw.avm.cfg_reg+ASL0_OFFSET,ASL0_W_RESET);	HZDELAY(HZ / 5 + 1);	byteout(cs->hw.avm.cfg_reg+ASL0_OFFSET,0x00);	byteout(cs->hw.avm.cfg_reg+ASL0_OFFSET, ASL0_W_TDISABLE|ASL0_W_TRESET);	restore_flags(flags);	model = bytein(cs->hw.avm.cfg_reg+MODREG_OFFSET);	vers = bytein(cs->hw.avm.cfg_reg+VERREG_OFFSET);	printk(KERN_INFO "AVM A1 PCMCIA: io 0x%x irq %d model %d version %d/n",				cs->hw.avm.cfg_reg, cs->irq, model, vers);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &AVM_card_msg;	cs->irq_func = &avm_a1p_interrupt;	ISACVersion(cs, "AVM A1 PCMCIA:");	if (HscxVersion(cs, "AVM A1 PCMCIA:")) {		printk(KERN_WARNING		       "AVM A1 PCMCIA: wrong HSCX versions check IO address/n");		return (0);	}	return (1);}
开发者ID:romanalexander,项目名称:Trickles,代码行数:57,


示例4: hscxisac_setup

inthscxisac_setup(struct IsdnCardState *cs, struct dc_hw_ops *isac_ops,	       struct bc_hw_ops *hscx_ops){	isac_setup(cs, isac_ops);	cs->bc_hw_ops = hscx_ops;	if (HscxVersion(cs, "HiSax:")) {		printk(KERN_WARNING "HiSax: invalid HSCX version/n");		return -ENODEV;	}	return 0;}
开发者ID:sarnobat,项目名称:knoppix,代码行数:12,


示例5: setup_mic

int __initsetup_mic(struct IsdnCard *card){	int bytecnt;	struct IsdnCardState *cs = card->cs;	char tmp[64];	strcpy(tmp, mic_revision);	printk(KERN_INFO "HiSax: mic driver Rev. %s/n", HiSax_getrev(tmp));	if (cs->typ != ISDN_CTYPE_MIC)		return (0);	bytecnt = 8;	cs->hw.mic.cfg_reg = card->para[1];	cs->irq = card->para[0];	cs->hw.mic.adr = cs->hw.mic.cfg_reg + MIC_ADR;	cs->hw.mic.isac = cs->hw.mic.cfg_reg + MIC_ISAC;	cs->hw.mic.hscx = cs->hw.mic.cfg_reg + MIC_HSCX;	if (check_region((cs->hw.mic.cfg_reg), bytecnt)) {		printk(KERN_WARNING		       "HiSax: %s config port %x-%x already in use/n",		       CardType[card->typ],		       cs->hw.mic.cfg_reg,		       cs->hw.mic.cfg_reg + bytecnt);		return (0);	} else {		request_region(cs->hw.mic.cfg_reg, bytecnt, "mic isdn");	}	printk(KERN_INFO	       "mic: defined at 0x%x IRQ %d/n",	       cs->hw.mic.cfg_reg,	       cs->irq);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &mic_card_msg;	cs->irq_func = &mic_interrupt;	ISACVersion(cs, "mic:");	if (HscxVersion(cs, "mic:")) {		printk(KERN_WARNING		    "mic: wrong HSCX versions check IO address/n");		release_io_mic(cs);		return (0);	}	return (1);}
开发者ID:dmgerman,项目名称:linux-pre-history,代码行数:52,


示例6: __initfunc

__initfunc(intsetup_ix1micro(struct IsdnCard *card)){	struct IsdnCardState *cs = card->cs;	char tmp[64];	strcpy(tmp, ix1_revision);	printk(KERN_INFO "HiSax: ITK IX1 driver Rev. %s/n", HiSax_getrev(tmp));	if (cs->typ != ISDN_CTYPE_IX1MICROR2)		return (0);	/* IO-Ports */	cs->hw.ix1.isac_ale = card->para[1] + ISAC_COMMAND_OFFSET;	cs->hw.ix1.hscx_ale = card->para[1] + HSCX_COMMAND_OFFSET;	cs->hw.ix1.isac = card->para[1] + ISAC_DATA_OFFSET;	cs->hw.ix1.hscx = card->para[1] + HSCX_DATA_OFFSET;	cs->hw.ix1.cfg_reg = card->para[1];	cs->irq = card->para[0];	if (cs->hw.ix1.cfg_reg) {		if (check_region((cs->hw.ix1.cfg_reg), 4)) {			printk(KERN_WARNING			  "HiSax: %s config port %x-%x already in use/n",			       CardType[card->typ],			       cs->hw.ix1.cfg_reg,			       cs->hw.ix1.cfg_reg + 4);			return (0);		} else			request_region(cs->hw.ix1.cfg_reg, 4, "ix1micro cfg");	}	printk(KERN_INFO	       "HiSax: %s config irq:%d io:0x%X/n",	       CardType[cs->typ], cs->irq,	       cs->hw.ix1.cfg_reg);	ix1_reset(cs);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &ix1_card_msg;	cs->irq_func = &ix1micro_interrupt;	ISACVersion(cs, "ix1-Micro:");	if (HscxVersion(cs, "ix1-Micro:")) {		printk(KERN_WARNING		    "ix1-Micro: wrong HSCX versions check IO address/n");		release_io_ix1micro(cs);		return (0);	}	return (1);}
开发者ID:chinnyannieb,项目名称:empeg-hijack,代码行数:52,


示例7: setup_sedlbauer

//.........这里部分代码省略.........		}	}/* * hw.sedl.chip is now properly set */	printk(KERN_INFO "Sedlbauer: %s detected/n",		Sedlbauer_Types[cs->subtyp]);	if (cs->hw.sedl.chip == SEDL_CHIP_IPAC) {		if (cs->hw.sedl.bus == SEDL_BUS_PCI) {	                cs->hw.sedl.adr  = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_ADR;			cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;			cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;		} else {	                cs->hw.sedl.adr  = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_ADR;			cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;			cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;		}		test_and_set_bit(HW_IPAC, &cs->HW_Flags);		cs->readisac = &ReadISAC_IPAC;		cs->writeisac = &WriteISAC_IPAC;		cs->readisacfifo = &ReadISACfifo_IPAC;		cs->writeisacfifo = &WriteISACfifo_IPAC;		cs->irq_func = &sedlbauer_interrupt_ipac;		val = readreg(cs->hw.sedl.adr, cs->hw.sedl.isac, IPAC_ID);		printk(KERN_INFO "Sedlbauer: IPAC version %x/n", val);		reset_sedlbauer(cs);	} else {		/* ISAC_HSCX oder ISAC_ISAR */		cs->readisac = &ReadISAC;		cs->writeisac = &WriteISAC;		cs->readisacfifo = &ReadISACfifo;		cs->writeisacfifo = &WriteISACfifo;		if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) {			if (cs->hw.sedl.bus == SEDL_BUS_PCI) {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ISAR;			} else {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR_RESET_ON;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR_RESET_OFF;			}			cs->bcs[0].hw.isar.reg = &cs->hw.sedl.isar;			cs->bcs[1].hw.isar.reg = &cs->hw.sedl.isar;			test_and_set_bit(HW_ISAR, &cs->HW_Flags);			cs->irq_func = &sedlbauer_interrupt_isar;			cs->auxcmd = &isar_auxcmd;			ISACVersion(cs, "Sedlbauer:");			cs->BC_Read_Reg = &ReadISAR;			cs->BC_Write_Reg = &WriteISAR;			cs->BC_Send_Data = &isar_fill_fifo;			ver = ISARVersion(cs, "Sedlbauer:");			if (ver < 0) {				printk(KERN_WARNING					"Sedlbauer: wrong ISAR version (ret = %d)/n", ver);				release_io_sedlbauer(cs);				return (0);			}		} else {			if (cs->hw.sedl.bus == SEDL_BUS_PCMCIA) {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_HSCX;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_RESET;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_RESET;			} else {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_HSCX;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_RESET_ON;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_RESET_OFF;			}			cs->irq_func = &sedlbauer_interrupt;			ISACVersion(cs, "Sedlbauer:");					if (HscxVersion(cs, "Sedlbauer:")) {				printk(KERN_WARNING					"Sedlbauer: wrong HSCX versions check IO address/n");				release_io_sedlbauer(cs);				return (0);			}			reset_sedlbauer(cs);		}	}	return (1);}
开发者ID:TitaniumBoy,项目名称:lin,代码行数:101,


示例8: setup_telespci

int __devinitsetup_telespci(struct IsdnCard *card){	struct IsdnCardState *cs = card->cs;	char tmp[64];#ifdef __BIG_ENDIAN#error "not running on big endian machines now"#endif	strcpy(tmp, telespci_revision);;	if (cs->typ != ISDN_CTYPE_TELESPCI)		return (0);	if ((dev_tel = hisax_find_pci_device (PCI_VENDOR_ID_ZORAN, PCI_DEVICE_ID_ZORAN_36120, dev_tel))) {		if (pci_enable_device(dev_tel))			return(0);		cs->irq = dev_tel->irq;		if (!cs->irq) {;			return(0);		}		cs->hw.teles0.membase = ioremap(pci_resource_start(dev_tel, 0),			PAGE_SIZE);//		printk(KERN_INFO "Found: Zoran, base-address: 0x%llx, irq: 0x%x/n",//			(unsigned long long)pci_resource_start(dev_tel, 0),;	} else {;		return(0);	}	/* Initialize Zoran PCI controller */	writel(0x00000000, cs->hw.teles0.membase + 0x28);	writel(0x01000000, cs->hw.teles0.membase + 0x28);	writel(0x01000000, cs->hw.teles0.membase + 0x28);	writel(0x7BFFFFFF, cs->hw.teles0.membase + 0x2C);	writel(0x70000000, cs->hw.teles0.membase + 0x3C);	writel(0x61000000, cs->hw.teles0.membase + 0x40);	/* writel(0x00800000, cs->hw.teles0.membase + 0x200); *///	printk(KERN_INFO//	       "HiSax: Teles PCI config irq:%d mem:%p/n",//	       cs->irq,;	setup_isac(cs);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &TelesPCI_card_msg;	cs->irq_func = &telespci_interrupt;	cs->irq_flags |= IRQF_SHARED;	ISACVersion(cs, "TelesPCI:");	if (HscxVersion(cs, "TelesPCI:")) {//		printk(KERN_WARNING;		release_io_telespci(cs);		return (0);	}	return (1);}
开发者ID:rrowicki,项目名称:Chrono_Kernel-1,代码行数:67,


示例9: setup_teles3

//.........这里部分代码省略.........				} else {					release_region(cs->hw.teles3.cfg_reg, 8);				}			}			return (0);		} else			request_region(cs->hw.teles3.isac + 32, 32, "HiSax isac");		if (check_region((cs->hw.teles3.hscx[0] + 32), 32)) {			printk(KERN_WARNING			 "HiSax: %s hscx A ports %x-%x already in use/n",			       CardType[cs->typ],			       cs->hw.teles3.hscx[0] + 32,			       cs->hw.teles3.hscx[0] + 64);			if (cs->hw.teles3.cfg_reg) {				if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) {					release_region(cs->hw.teles3.cfg_reg, 1);				} else {					release_region(cs->hw.teles3.cfg_reg, 8);				}			}			release_ioregs(cs, 1);			return (0);		} else			request_region(cs->hw.teles3.hscx[0] + 32, 32, "HiSax hscx A");		if (check_region((cs->hw.teles3.hscx[1] + 32), 32)) {			printk(KERN_WARNING			 "HiSax: %s hscx B ports %x-%x already in use/n",			       CardType[cs->typ],			       cs->hw.teles3.hscx[1] + 32,			       cs->hw.teles3.hscx[1] + 64);			if (cs->hw.teles3.cfg_reg) {				if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) {					release_region(cs->hw.teles3.cfg_reg, 1);				} else {					release_region(cs->hw.teles3.cfg_reg, 8);				}			}			release_ioregs(cs, 3);			return (0);		} else			request_region(cs->hw.teles3.hscx[1] + 32, 32, "HiSax hscx B");	}	if ((cs->hw.teles3.cfg_reg) && (cs->typ != ISDN_CTYPE_COMPAQ_ISA)) {		if ((val = bytein(cs->hw.teles3.cfg_reg + 0)) != 0x51) {			printk(KERN_WARNING "Teles: 16.3 Byte at %x is %x/n",			       cs->hw.teles3.cfg_reg + 0, val);			release_io_teles3(cs);			return (0);		}		if ((val = bytein(cs->hw.teles3.cfg_reg + 1)) != 0x93) {			printk(KERN_WARNING "Teles: 16.3 Byte at %x is %x/n",			       cs->hw.teles3.cfg_reg + 1, val);			release_io_teles3(cs);			return (0);		}		val = bytein(cs->hw.teles3.cfg_reg + 2);/* 0x1e=without AB							 * 0x1f=with AB							 * 0x1c 16.3 ???							 * 0x39 16.3 1.1							 * 0x38 16.3 1.3							 * 0x46 16.3 with AB + Video (Teles-Vision)							 */		if (val != 0x46 && val != 0x39 && val != 0x38 && val != 0x1c && val != 0x1e && val != 0x1f) {			printk(KERN_WARNING "Teles: 16.3 Byte at %x is %x/n",			       cs->hw.teles3.cfg_reg + 2, val);			release_io_teles3(cs);			return (0);		}	}	printk(KERN_INFO	       "HiSax: %s config irq:%d isac:0x%X  cfg:0x%X/n",	       CardType[cs->typ], cs->irq,	       cs->hw.teles3.isac + 32, cs->hw.teles3.cfg_reg);	printk(KERN_INFO	       "HiSax: hscx A:0x%X  hscx B:0x%X/n",	       cs->hw.teles3.hscx[0] + 32, cs->hw.teles3.hscx[1] + 32);	if (reset_teles3(cs)) {		printk(KERN_WARNING "Teles3: wrong IRQ/n");		release_io_teles3(cs);		return (0);	}	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &Teles_card_msg;	cs->irq_func = &teles3_interrupt;	ISACVersion(cs, "Teles3:");	if (HscxVersion(cs, "Teles3:")) {		printk(KERN_WARNING		       "Teles3: wrong HSCX versions check IO address/n");		release_io_teles3(cs);		return (0);	}	return (1);}
开发者ID:froggatt,项目名称:edimax-br-6528n,代码行数:101,


示例10: setup_diva

//.........这里部分代码省略.........		}		if (!cs->irq) {			printk(KERN_WARNING "Diva: No IRQ for PCI card found/n");			return(0);		}		if (!cs->hw.diva.cfg_reg) {			printk(KERN_WARNING "Diva: No IO-Adr for PCI card found/n");			return(0);		}		cs->irq_flags |= SA_SHIRQ;#else		printk(KERN_WARNING "Diva: cfgreg 0 and NO_PCI_BIOS/n");		printk(KERN_WARNING "Diva: unable to config DIVA PCI/n");		return (0);#endif /* CONFIG_PCI */		if (cs->subtyp == DIVA_IPAC_PCI) {			cs->hw.diva.ctrl = 0;			cs->hw.diva.isac = 0;			cs->hw.diva.hscx = 0;			cs->hw.diva.isac_adr = 0;			cs->hw.diva.hscx_adr = 0;			test_and_set_bit(HW_IPAC, &cs->HW_Flags);			bytecnt = 0;		} else {			cs->hw.diva.ctrl = cs->hw.diva.cfg_reg + DIVA_PCI_CTRL;			cs->hw.diva.isac = cs->hw.diva.cfg_reg + DIVA_PCI_ISAC_DATA;			cs->hw.diva.hscx = cs->hw.diva.cfg_reg + DIVA_HSCX_DATA;			cs->hw.diva.isac_adr = cs->hw.diva.cfg_reg + DIVA_PCI_ISAC_ADR;			cs->hw.diva.hscx_adr = cs->hw.diva.cfg_reg + DIVA_HSCX_ADR;			bytecnt = 32;		}	}	printk(KERN_INFO		"Diva: %s card configured at %#lx IRQ %d/n",		(cs->subtyp == DIVA_PCI) ? "PCI" :		(cs->subtyp == DIVA_ISA) ? "ISA" : 		(cs->subtyp == DIVA_IPAC_ISA) ? "IPAC ISA" : "IPAC PCI",		cs->hw.diva.cfg_reg, cs->irq);	if ((cs->subtyp == DIVA_IPAC_PCI) || (cs->subtyp == DIVA_PCI))		printk(KERN_INFO "Diva: %s PCI space at %#lx/n",			(cs->subtyp == DIVA_PCI) ? "PCI" : "IPAC PCI",			cs->hw.diva.pci_cfg);	if (cs->subtyp != DIVA_IPAC_PCI) {		if (check_region(cs->hw.diva.cfg_reg, bytecnt)) {			printk(KERN_WARNING			       "HiSax: %s config port %lx-%lx already in use/n",			       CardType[card->typ],			       cs->hw.diva.cfg_reg,			       cs->hw.diva.cfg_reg + bytecnt);			return (0);		} else {			request_region(cs->hw.diva.cfg_reg, bytecnt, "diva isdn");		}	}	reset_diva(cs);	cs->BC_Read_Reg  = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &Diva_card_msg;	if (cs->subtyp == DIVA_IPAC_ISA) {		cs->readisac  = &ReadISAC_IPAC;		cs->writeisac = &WriteISAC_IPAC;		cs->readisacfifo  = &ReadISACfifo_IPAC;		cs->writeisacfifo = &WriteISACfifo_IPAC;		cs->irq_func = &diva_irq_ipac_isa;		val = readreg(cs->hw.diva.isac_adr, cs->hw.diva.isac, IPAC_ID);		printk(KERN_INFO "Diva: IPAC version %x/n", val);	} else if (cs->subtyp == DIVA_IPAC_PCI) {		cs->readisac  = &MemReadISAC_IPAC;		cs->writeisac = &MemWriteISAC_IPAC;		cs->readisacfifo  = &MemReadISACfifo_IPAC;		cs->writeisacfifo = &MemWriteISACfifo_IPAC;		cs->BC_Read_Reg  = &MemReadHSCX;		cs->BC_Write_Reg = &MemWriteHSCX;		cs->BC_Send_Data = &Memhscx_fill_fifo;		cs->irq_func = &diva_irq_ipac_pci;		val = memreadreg(cs->hw.diva.cfg_reg, IPAC_ID);		printk(KERN_INFO "Diva: IPAC version %x/n", val);	} else { /* DIVA 2.0 */		cs->hw.diva.tl.function = (void *) diva_led_handler;		cs->hw.diva.tl.data = (long) cs;		init_timer(&cs->hw.diva.tl);		cs->readisac  = &ReadISAC;		cs->writeisac = &WriteISAC;		cs->readisacfifo  = &ReadISACfifo;		cs->writeisacfifo = &WriteISACfifo;		cs->irq_func = &diva_interrupt;		ISACVersion(cs, "Diva:");		if (HscxVersion(cs, "Diva:")) {			printk(KERN_WARNING		       "Diva: wrong HSCX versions check IO address/n");			release_io_diva(cs);			return (0);		}	}	return (1);}
开发者ID:nhanh0,项目名称:hah,代码行数:101,


示例11: setup_gazel

int __devinitsetup_gazel(struct IsdnCard *card){	struct IsdnCardState *cs = card->cs;	char tmp[64];	u_char val;	strcpy(tmp, gazel_revision);	printk(KERN_INFO "Gazel: Driver Revision %s/n", HiSax_getrev(tmp));	if (cs->typ != ISDN_CTYPE_GAZEL)		return (0);	if (card->para[0]) {		if (setup_gazelisa(card, cs))			return (0);	} else {#ifdef CONFIG_PCI_LEGACY		if (setup_gazelpci(cs))			return (0);#else		printk(KERN_WARNING "Gazel: Card PCI requested and NO_PCI_BIOS, unable to config/n");		return (0);#endif				/* CONFIG_PCI */	}	if (reserve_regions(card, cs)) {		return (0);	}	if (reset_gazel(cs)) {		printk(KERN_WARNING "Gazel: wrong IRQ/n");		release_io_gazel(cs);		return (0);	}	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &Gazel_card_msg;	switch (cs->subtyp) {		case R647:		case R685:			cs->irq_func = &gazel_interrupt;			ISACVersion(cs, "Gazel:");			if (HscxVersion(cs, "Gazel:")) {				printk(KERN_WARNING				       "Gazel: wrong HSCX versions check IO address/n");				release_io_gazel(cs);				return (0);			}			break;		case R742:		case R753:			cs->irq_func = &gazel_interrupt_ipac;			val = ReadISAC(cs, IPAC_ID - 0x80);			printk(KERN_INFO "Gazel: IPAC version %x/n", val);			break;	}	return (1);}
开发者ID:PennPanda,项目名称:linux-repo,代码行数:66,


示例12: setup_ix1micro

int __devinitsetup_ix1micro(struct IsdnCard *card){	struct IsdnCardState *cs = card->cs;	char tmp[64];	strcpy(tmp, ix1_revision);	printk(KERN_INFO "HiSax: ITK IX1 driver Rev. %s/n", HiSax_getrev(tmp));	if (cs->typ != ISDN_CTYPE_IX1MICROR2)		return (0);#ifdef __ISAPNP__	if (!card->para[1] && isapnp_present()) {		struct pnp_dev *pnp_d;		while(ipid->card_vendor) {			if ((pnp_c = pnp_find_card(ipid->card_vendor,				ipid->card_device, pnp_c))) {				pnp_d = NULL;				if ((pnp_d = pnp_find_dev(pnp_c,					ipid->vendor, ipid->function, pnp_d))) {					int err;					printk(KERN_INFO "HiSax: %s detected/n",						(char *)ipid->driver_data);					pnp_disable_dev(pnp_d);					err = pnp_activate_dev(pnp_d);					if (err<0) {						printk(KERN_WARNING "%s: pnp_activate_dev ret(%d)/n",							__FUNCTION__, err);						return(0);					}					card->para[1] = pnp_port_start(pnp_d, 0);					card->para[0] = pnp_irq(pnp_d, 0);					if (!card->para[0] || !card->para[1]) {						printk(KERN_ERR "ITK PnP:some resources are missing %ld/%lx/n",							card->para[0], card->para[1]);						pnp_disable_dev(pnp_d);						return(0);					}					break;				} else {					printk(KERN_ERR "ITK PnP: PnP error card found, no device/n");				}			}			ipid++;			pnp_c = NULL;		} 		if (!ipid->card_vendor) {			printk(KERN_INFO "ITK PnP: no ISAPnP card found/n");			return(0);		}	}#endif	/* IO-Ports */	cs->hw.ix1.isac_ale = card->para[1] + ISAC_COMMAND_OFFSET;	cs->hw.ix1.hscx_ale = card->para[1] + HSCX_COMMAND_OFFSET;	cs->hw.ix1.isac = card->para[1] + ISAC_DATA_OFFSET;	cs->hw.ix1.hscx = card->para[1] + HSCX_DATA_OFFSET;	cs->hw.ix1.cfg_reg = card->para[1];	cs->irq = card->para[0];	if (cs->hw.ix1.cfg_reg) {		if (!request_region(cs->hw.ix1.cfg_reg, 4, "ix1micro cfg")) {			printk(KERN_WARNING			  "HiSax: %s config port %x-%x already in use/n",			       CardType[card->typ],			       cs->hw.ix1.cfg_reg,			       cs->hw.ix1.cfg_reg + 4);			return (0);		}	}	printk(KERN_INFO "HiSax: %s config irq:%d io:0x%X/n",		CardType[cs->typ], cs->irq, cs->hw.ix1.cfg_reg);	setup_isac(cs);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &ix1_card_msg;	cs->irq_func = &ix1micro_interrupt;	ISACVersion(cs, "ix1-Micro:");	if (HscxVersion(cs, "ix1-Micro:")) {		printk(KERN_WARNING		    "ix1-Micro: wrong HSCX versions check IO address/n");		release_io_ix1micro(cs);		return (0);	}	return (1);}
开发者ID:ManiacTwister,项目名称:linux-hnd,代码行数:91,


示例13: setup_diva_common

static int setup_diva_common(struct IsdnCardState *cs){	int bytecnt;	u_char val;	if ((cs->subtyp == DIVA_ISA) || (cs->subtyp == DIVA_IPAC_ISA))		bytecnt = 8;	else		bytecnt = 32;	printk(KERN_INFO	       "Diva: %s card configured at %#lx IRQ %d/n",	       (cs->subtyp == DIVA_PCI) ? "PCI" :	       (cs->subtyp == DIVA_ISA) ? "ISA" :	       (cs->subtyp == DIVA_IPAC_ISA) ? "IPAC ISA" :	       (cs->subtyp == DIVA_IPAC_PCI) ? "IPAC PCI" : "IPACX PCI",	       cs->hw.diva.cfg_reg, cs->irq);	if ((cs->subtyp == DIVA_IPAC_PCI)  ||	    (cs->subtyp == DIVA_IPACX_PCI) ||	    (cs->subtyp == DIVA_PCI))		printk(KERN_INFO "Diva: %s space at %#lx/n",		       (cs->subtyp == DIVA_PCI) ? "PCI" :		       (cs->subtyp == DIVA_IPAC_PCI) ? "IPAC PCI" : "IPACX PCI",		       cs->hw.diva.pci_cfg);	if ((cs->subtyp != DIVA_IPAC_PCI) &&	    (cs->subtyp != DIVA_IPACX_PCI)) {		if (!request_region(cs->hw.diva.cfg_reg, bytecnt, "diva isdn")) {			printk(KERN_WARNING			       "HiSax: %s config port %lx-%lx already in use/n",			       "diva",			       cs->hw.diva.cfg_reg,			       cs->hw.diva.cfg_reg + bytecnt);			iounmap_diva(cs);			return (0);		}	}	cs->BC_Read_Reg  = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &Diva_card_msg;	setup_isac(cs);	if (cs->subtyp == DIVA_IPAC_ISA) {		cs->readisac  = &ReadISAC_IPAC;		cs->writeisac = &WriteISAC_IPAC;		cs->readisacfifo  = &ReadISACfifo_IPAC;		cs->writeisacfifo = &WriteISACfifo_IPAC;		cs->irq_func = &diva_irq_ipac_isa;		val = readreg(cs->hw.diva.isac_adr, cs->hw.diva.isac, IPAC_ID);		printk(KERN_INFO "Diva: IPAC version %x/n", val);	} else if (cs->subtyp == DIVA_IPAC_PCI) {		cs->readisac  = &MemReadISAC_IPAC;		cs->writeisac = &MemWriteISAC_IPAC;		cs->readisacfifo  = &MemReadISACfifo_IPAC;		cs->writeisacfifo = &MemWriteISACfifo_IPAC;		cs->BC_Read_Reg  = &MemReadHSCX;		cs->BC_Write_Reg = &MemWriteHSCX;		cs->BC_Send_Data = &Memhscx_fill_fifo;		cs->irq_func = &diva_irq_ipac_pci;		val = memreadreg(cs->hw.diva.cfg_reg, IPAC_ID);		printk(KERN_INFO "Diva: IPAC version %x/n", val);	} else if (cs->subtyp == DIVA_IPACX_PCI) {		cs->readisac  = &MemReadISAC_IPACX;		cs->writeisac = &MemWriteISAC_IPACX;		cs->readisacfifo  = &MemReadISACfifo_IPACX;		cs->writeisacfifo = &MemWriteISACfifo_IPACX;		cs->BC_Read_Reg  = &MemReadHSCX_IPACX;		cs->BC_Write_Reg = &MemWriteHSCX_IPACX;		cs->BC_Send_Data = NULL; // function located in ipacx module		cs->irq_func = &diva_irq_ipacx_pci;		printk(KERN_INFO "Diva: IPACX Design Id: %x/n",		       MemReadISAC_IPACX(cs, IPACX_ID) & 0x3F);	} else { /* DIVA 2.0 */		setup_timer(&cs->hw.diva.tl, (void *)diva_led_handler,			    (long)cs);		cs->readisac  = &ReadISAC;		cs->writeisac = &WriteISAC;		cs->readisacfifo  = &ReadISACfifo;		cs->writeisacfifo = &WriteISACfifo;		cs->irq_func = &diva_interrupt;		ISACVersion(cs, "Diva:");		if (HscxVersion(cs, "Diva:")) {			printk(KERN_WARNING			       "Diva: wrong HSCX versions check IO address/n");			release_io_diva(cs);			return (0);		}	}	return (1);}
开发者ID:asmalldev,项目名称:linux,代码行数:89,


示例14: setup_asuscom

int __initsetup_asuscom(struct IsdnCard *card){    int bytecnt;    struct IsdnCardState *cs = card->cs;    u_char val;    char tmp[64];    strcpy(tmp, Asuscom_revision);    printk(KERN_INFO "HiSax: Asuscom ISDNLink driver Rev. %s/n", HiSax_getrev(tmp));    if (cs->typ != ISDN_CTYPE_ASUSCOM)        return (0);#ifdef __ISAPNP__    if (!card->para[1] && isapnp_present()) {        struct pnp_dev *pnp_d;        while(ipid->card_vendor) {            if ((pnp_c = pnp_find_card(ipid->card_vendor,                                       ipid->card_device, pnp_c))) {                pnp_d = NULL;                if ((pnp_d = pnp_find_dev(pnp_c,                                          ipid->vendor, ipid->function, pnp_d))) {                    int err;                    printk(KERN_INFO "HiSax: %s detected/n",                           (char *)ipid->driver_data);                    pnp_disable_dev(pnp_d);                    err = pnp_activate_dev(pnp_d);                    if (err<0) {                        printk(KERN_WARNING "%s: pnp_activate_dev ret(%d)/n",                               __FUNCTION__, err);                        return(0);                    }                    card->para[1] = pnp_port_start(pnp_d, 0);                    card->para[0] = pnp_irq(pnp_d, 0);                    if (!card->para[0] || !card->para[1]) {                        printk(KERN_ERR "AsusPnP:some resources are missing %ld/%lx/n",                               card->para[0], card->para[1]);                        pnp_disable_dev(pnp_d);                        return(0);                    }                    break;                } else {                    printk(KERN_ERR "AsusPnP: PnP error card found, no device/n");                }            }            ipid++;            pnp_c = NULL;        }        if (!ipid->card_vendor) {            printk(KERN_INFO "AsusPnP: no ISAPnP card found/n");            return(0);        }    }#endif    bytecnt = 8;    cs->hw.asus.cfg_reg = card->para[1];    cs->irq = card->para[0];    if (!request_region(cs->hw.asus.cfg_reg, bytecnt, "asuscom isdn")) {        printk(KERN_WARNING               "HiSax: %s config port %x-%x already in use/n",               CardType[card->typ],               cs->hw.asus.cfg_reg,               cs->hw.asus.cfg_reg + bytecnt);        return (0);    }    printk(KERN_INFO "ISDNLink: defined at 0x%x IRQ %d/n",           cs->hw.asus.cfg_reg, cs->irq);    setup_isac(cs);    cs->BC_Read_Reg = &ReadHSCX;    cs->BC_Write_Reg = &WriteHSCX;    cs->BC_Send_Data = &hscx_fill_fifo;    cs->cardmsg = &Asus_card_msg;    val = readreg(cs->hw.asus.cfg_reg + ASUS_IPAC_ALE,                  cs->hw.asus.cfg_reg + ASUS_IPAC_DATA, IPAC_ID);    if ((val == 1) || (val == 2)) {        cs->subtyp = ASUS_IPAC;        cs->hw.asus.adr  = cs->hw.asus.cfg_reg + ASUS_IPAC_ALE;        cs->hw.asus.isac = cs->hw.asus.cfg_reg + ASUS_IPAC_DATA;        cs->hw.asus.hscx = cs->hw.asus.cfg_reg + ASUS_IPAC_DATA;        test_and_set_bit(HW_IPAC, &cs->HW_Flags);        cs->readisac = &ReadISAC_IPAC;        cs->writeisac = &WriteISAC_IPAC;        cs->readisacfifo = &ReadISACfifo_IPAC;        cs->writeisacfifo = &WriteISACfifo_IPAC;        cs->irq_func = &asuscom_interrupt_ipac;        printk(KERN_INFO "Asus: IPAC version %x/n", val);    } else {        cs->subtyp = ASUS_ISACHSCX;        cs->hw.asus.adr = cs->hw.asus.cfg_reg + ASUS_ADR;        cs->hw.asus.isac = cs->hw.asus.cfg_reg + ASUS_ISAC;        cs->hw.asus.hscx = cs->hw.asus.cfg_reg + ASUS_HSCX;        cs->hw.asus.u7 = cs->hw.asus.cfg_reg + ASUS_CTRL_U7;        cs->hw.asus.pots = cs->hw.asus.cfg_reg + ASUS_CTRL_POTS;        cs->readisac = &ReadISAC;        cs->writeisac = &WriteISAC;        cs->readisacfifo = &ReadISACfifo;        cs->writeisacfifo = &WriteISACfifo;        cs->irq_func = &asuscom_interrupt;        ISACVersion(cs, "ISDNLink:");        if (HscxVersion(cs, "ISDNLink:")) {//.........这里部分代码省略.........
开发者ID:BackupTheBerlios,项目名称:tew632-brp-svn,代码行数:101,


示例15: setup_diva

//.........这里部分代码省略.........		return (0);#endif /* CONFIG_PCI */		if ((cs->subtyp == DIVA_IPAC_PCI) ||		    (cs->subtyp == DIVA_IPACX_PCI)   ) {			cs->hw.diva.ctrl = 0;			cs->hw.diva.isac = 0;			cs->hw.diva.hscx = 0;			cs->hw.diva.isac_adr = 0;			cs->hw.diva.hscx_adr = 0;			test_and_set_bit(HW_IPAC, &cs->HW_Flags);			bytecnt = 0;		} else {			cs->hw.diva.ctrl = cs->hw.diva.cfg_reg + DIVA_PCI_CTRL;			cs->hw.diva.isac = cs->hw.diva.cfg_reg + DIVA_PCI_ISAC_DATA;			cs->hw.diva.hscx = cs->hw.diva.cfg_reg + DIVA_HSCX_DATA;			cs->hw.diva.isac_adr = cs->hw.diva.cfg_reg + DIVA_PCI_ISAC_ADR;			cs->hw.diva.hscx_adr = cs->hw.diva.cfg_reg + DIVA_HSCX_ADR;			bytecnt = 32;		}	}ready:	printk(KERN_INFO		"Diva: %s card configured at %#lx IRQ %d/n",		(cs->subtyp == DIVA_PCI) ? "PCI" :		(cs->subtyp == DIVA_ISA) ? "ISA" : 		(cs->subtyp == DIVA_IPAC_ISA) ? "IPAC ISA" :		(cs->subtyp == DIVA_IPAC_PCI) ? "IPAC PCI" : "IPACX PCI",		cs->hw.diva.cfg_reg, cs->irq);	if ((cs->subtyp == DIVA_IPAC_PCI)  || 	    (cs->subtyp == DIVA_IPACX_PCI) || 	    (cs->subtyp == DIVA_PCI)         )		printk(KERN_INFO "Diva: %s space at %#lx/n",			(cs->subtyp == DIVA_PCI) ? "PCI" :			(cs->subtyp == DIVA_IPAC_PCI) ? "IPAC PCI" : "IPACX PCI",			cs->hw.diva.pci_cfg);	if ((cs->subtyp != DIVA_IPAC_PCI) &&	    (cs->subtyp != DIVA_IPACX_PCI)   ) {		if (!request_region(cs->hw.diva.cfg_reg, bytecnt, "diva isdn")) {			printk(KERN_WARNING			       "HiSax: %s config port %lx-%lx already in use/n",			       CardType[card->typ],			       cs->hw.diva.cfg_reg,			       cs->hw.diva.cfg_reg + bytecnt);			return (0);		}	}	cs->BC_Read_Reg  = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &Diva_card_msg;	setup_isac(cs);	if (cs->subtyp == DIVA_IPAC_ISA) {		cs->readisac  = &ReadISAC_IPAC;		cs->writeisac = &WriteISAC_IPAC;		cs->readisacfifo  = &ReadISACfifo_IPAC;		cs->writeisacfifo = &WriteISACfifo_IPAC;		cs->irq_func = &diva_irq_ipac_isa;		val = readreg(cs->hw.diva.isac_adr, cs->hw.diva.isac, IPAC_ID);		printk(KERN_INFO "Diva: IPAC version %x/n", val);	} else if (cs->subtyp == DIVA_IPAC_PCI) {		cs->readisac  = &MemReadISAC_IPAC;		cs->writeisac = &MemWriteISAC_IPAC;		cs->readisacfifo  = &MemReadISACfifo_IPAC;		cs->writeisacfifo = &MemWriteISACfifo_IPAC;		cs->BC_Read_Reg  = &MemReadHSCX;		cs->BC_Write_Reg = &MemWriteHSCX;		cs->BC_Send_Data = &Memhscx_fill_fifo;		cs->irq_func = &diva_irq_ipac_pci;		val = memreadreg(cs->hw.diva.cfg_reg, IPAC_ID);		printk(KERN_INFO "Diva: IPAC version %x/n", val);	} else if (cs->subtyp == DIVA_IPACX_PCI) {		cs->readisac  = &MemReadISAC_IPACX;		cs->writeisac = &MemWriteISAC_IPACX;		cs->readisacfifo  = &MemReadISACfifo_IPACX;		cs->writeisacfifo = &MemWriteISACfifo_IPACX;		cs->BC_Read_Reg  = &MemReadHSCX_IPACX;		cs->BC_Write_Reg = &MemWriteHSCX_IPACX;		cs->BC_Send_Data = NULL; // function located in ipacx module		cs->irq_func = &diva_irq_ipacx_pci;		printk(KERN_INFO "Diva: IPACX Design Id: %x/n", 			MemReadISAC_IPACX(cs, IPACX_ID) &0x3F);	} else { /* DIVA 2.0 */		cs->hw.diva.tl.function = (void *) diva_led_handler;		cs->hw.diva.tl.data = (long) cs;		init_timer(&cs->hw.diva.tl);		cs->readisac  = &ReadISAC;		cs->writeisac = &WriteISAC;		cs->readisacfifo  = &ReadISACfifo;		cs->writeisacfifo = &WriteISACfifo;		cs->irq_func = &diva_interrupt;		ISACVersion(cs, "Diva:");		if (HscxVersion(cs, "Diva:")) {			printk(KERN_WARNING		       "Diva: wrong HSCX versions check IO address/n");			release_io_diva(cs);			return (0);		}	}	return (1);}
开发者ID:jameshilliard,项目名称:actiontec_opensrc_mi424wr-rev-e-f_fw-20-10-7-5,代码行数:101,


示例16: setup_niccy

//.........这里部分代码省略.........		cs->hw.niccy.hscx_ale = card->para[2] + HSCX_PNP;		cs->hw.niccy.cfg_reg = 0;		cs->subtyp = NICCY_PNP;		cs->irq = card->para[0];		if (!request_region(cs->hw.niccy.isac, 2, "niccy data")) {			printk(KERN_WARNING "HiSax: NICCY data port %x-%x "				"already in use/n",				cs->hw.niccy.isac, cs->hw.niccy.isac + 1);			return 0;		}		if (!request_region(cs->hw.niccy.isac_ale, 2, "niccy addr")) {			printk(KERN_WARNING "HiSax: NICCY address port %x-%x "				"already in use/n",				cs->hw.niccy.isac_ale,				cs->hw.niccy.isac_ale + 1);			release_region(cs->hw.niccy.isac, 2);			return 0;		}	} else {#ifdef CONFIG_PCI		static struct pci_dev *niccy_dev __devinitdata;		u_int pci_ioaddr;		cs->subtyp = 0;		if ((niccy_dev = hisax_find_pci_device(PCI_VENDOR_ID_SATSAGEM,						 PCI_DEVICE_ID_SATSAGEM_NICCY,						 niccy_dev))) {			if (pci_enable_device(niccy_dev))				return 0;			/* get IRQ */			if (!niccy_dev->irq) {				printk(KERN_WARNING				       "Niccy: No IRQ for PCI card found/n");				return 0;			}			cs->irq = niccy_dev->irq;			cs->hw.niccy.cfg_reg = pci_resource_start(niccy_dev, 0);			if (!cs->hw.niccy.cfg_reg) {				printk(KERN_WARNING				       "Niccy: No IO-Adr for PCI cfg found/n");				return 0;			}			pci_ioaddr = pci_resource_start(niccy_dev, 1);			if (!pci_ioaddr) {				printk(KERN_WARNING				       "Niccy: No IO-Adr for PCI card found/n");				return 0;			}			cs->subtyp = NICCY_PCI;		} else {			printk(KERN_WARNING "Niccy: No PCI card found/n");			return 0;		}		cs->irq_flags |= IRQF_SHARED;		cs->hw.niccy.isac = pci_ioaddr + ISAC_PCI_DATA;		cs->hw.niccy.isac_ale = pci_ioaddr + ISAC_PCI_ADDR;		cs->hw.niccy.hscx = pci_ioaddr + HSCX_PCI_DATA;		cs->hw.niccy.hscx_ale = pci_ioaddr + HSCX_PCI_ADDR;		if (!request_region(cs->hw.niccy.isac, 4, "niccy")) {			printk(KERN_WARNING			       "HiSax: NICCY data port %x-%x already in use/n",			       cs->hw.niccy.isac, cs->hw.niccy.isac + 4);			return 0;		}		if (!request_region(cs->hw.niccy.cfg_reg, 0x40, "niccy pci")) {			printk(KERN_WARNING			       "HiSax: NICCY pci port %x-%x already in use/n",			       cs->hw.niccy.cfg_reg,			       cs->hw.niccy.cfg_reg + 0x40);			release_region(cs->hw.niccy.isac, 4);			return 0;		}#else		printk(KERN_WARNING "Niccy: io0 0 and NO_PCI_BIOS/n");		printk(KERN_WARNING "Niccy: unable to config NICCY PCI/n");		return 0;#endif				/* CONFIG_PCI */	}	printk(KERN_INFO "HiSax: NICCY %s config irq:%d data:0x%X ale:0x%X/n",		(cs->subtyp == 1) ? "PnP" : "PCI",		cs->irq, cs->hw.niccy.isac, cs->hw.niccy.isac_ale);	setup_isac(cs);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &niccy_card_msg;	cs->irq_func = &niccy_interrupt;	ISACVersion(cs, "Niccy:");	if (HscxVersion(cs, "Niccy:")) {		printk(KERN_WARNING "Niccy: wrong HSCX versions check IO "			"address/n");		release_io_niccy(cs);		return 0;	}	return 1;}
开发者ID:Vincentxiaojie,项目名称:xpenology,代码行数:101,


示例17: __initfunc

//.........这里部分代码省略.........		u_int pci_ioaddr;		cs->subtyp = 0;		for (; pci_index < 0xff; pci_index++) {			if (pcibios_find_device(PCI_VENDOR_EICON_DIEHL,			   PCI_DIVA20_ID, pci_index, &pci_bus, &pci_device_fn)			   == PCIBIOS_SUCCESSFUL)				cs->subtyp = DIVA_PCI;			else if (pcibios_find_device(PCI_VENDOR_EICON_DIEHL,			   PCI_DIVA20_ID, pci_index, &pci_bus, &pci_device_fn)			   == PCIBIOS_SUCCESSFUL)			   	cs->subtyp = DIVA_PCI;			else				break;			/* get IRQ */			pcibios_read_config_byte(pci_bus, pci_device_fn,				PCI_INTERRUPT_LINE, &pci_irq);			/* get IO address */			pcibios_read_config_dword(pci_bus, pci_device_fn,				PCI_BASE_ADDRESS_2, &pci_ioaddr);			if (cs->subtyp)				break;		}		if (!cs->subtyp) {			printk(KERN_WARNING "Diva: No PCI card found/n");			return(0);		}		pci_index++;		if (!pci_irq) {			printk(KERN_WARNING "Diva: No IRQ for PCI card found/n");			return(0);		}		if (!pci_ioaddr) {			printk(KERN_WARNING "Diva: No IO-Adr for PCI card found/n");			return(0);		}		pci_ioaddr &= ~3; /* remove io/mem flag */		cs->hw.diva.cfg_reg = pci_ioaddr;		cs->hw.diva.ctrl = pci_ioaddr + DIVA_PCI_CTRL;		cs->hw.diva.isac = pci_ioaddr + DIVA_PCI_ISAC_DATA;		cs->hw.diva.hscx = pci_ioaddr + DIVA_HSCX_DATA;		cs->hw.diva.isac_adr = pci_ioaddr + DIVA_PCI_ISAC_ADR;		cs->hw.diva.hscx_adr = pci_ioaddr + DIVA_HSCX_ADR;		cs->irq = pci_irq;		bytecnt = 32;#else		printk(KERN_WARNING "Diva: cfgreg 0 and NO_PCI_BIOS/n");		printk(KERN_WARNING "Diva: unable to config DIVA PCI/n");		return (0);#endif /* CONFIG_PCI */	}	printk(KERN_INFO		"Diva: %s card configured at 0x%x IRQ %d/n",		(cs->subtyp == DIVA_PCI) ? "PCI" :		(cs->subtyp == DIVA_ISA) ? "ISA" : "IPAC",		cs->hw.diva.cfg_reg, cs->irq);	if (check_region(cs->hw.diva.cfg_reg, bytecnt)) {		printk(KERN_WARNING		       "HiSax: %s config port %x-%x already in use/n",		       CardType[card->typ],		       cs->hw.diva.cfg_reg,		       cs->hw.diva.cfg_reg + bytecnt);		return (0);	} else {		request_region(cs->hw.diva.cfg_reg, bytecnt, "diva isdn");	}	reset_diva(cs);	cs->BC_Read_Reg  = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &Diva_card_msg;	if (cs->subtyp == DIVA_IPAC_ISA) {		cs->readisac  = &ReadISAC_IPAC;		cs->writeisac = &WriteISAC_IPAC;		cs->readisacfifo  = &ReadISACfifo_IPAC;		cs->writeisacfifo = &WriteISACfifo_IPAC;		val = readreg(cs->hw.diva.isac_adr, cs->hw.diva.isac, IPAC_ID);		printk(KERN_INFO "Diva: IPAC version %x/n", val);	} else {		cs->hw.diva.tl.function = (void *) diva_led_handler;		cs->hw.diva.tl.data = (long) cs;		init_timer(&cs->hw.diva.tl);		cs->readisac  = &ReadISAC;		cs->writeisac = &WriteISAC;		cs->readisacfifo  = &ReadISACfifo;		cs->writeisacfifo = &WriteISACfifo;		ISACVersion(cs, "Diva:");		if (HscxVersion(cs, "Diva:")) {			printk(KERN_WARNING		       "Diva: wrong HSCX versions check IO address/n");			release_io_diva(cs);			return (0);		}	}	return (1);}
开发者ID:shattered,项目名称:linux-m68k,代码行数:101,


示例18: setup_avm_a1

//.........这里部分代码省略.........		       "HiSax: %s hscx A ports %x-%x already in use/n",		       CardType[cs->typ],		       cs->hw.avm.hscx[0] + 32,		       cs->hw.avm.hscx[0] + 64);		release_ioregs(cs, 3);		return (0);	} else {		request_region(cs->hw.avm.hscx[0] + 32, 32, "HiSax hscx A");	}	if (check_region(cs->hw.avm.hscxfifo[0], 1)) {		printk(KERN_WARNING		       "HiSax: %s hscx A fifo port %x already in use/n",		       CardType[cs->typ],		       cs->hw.avm.hscxfifo[0]);		release_ioregs(cs, 7);		return (0);	} else {		request_region(cs->hw.avm.hscxfifo[0], 1, "HiSax hscx A fifo");	}	if (check_region(cs->hw.avm.hscx[1] + 32, 32)) {		printk(KERN_WARNING		       "HiSax: %s hscx B ports %x-%x already in use/n",		       CardType[cs->typ],		       cs->hw.avm.hscx[1] + 32,		       cs->hw.avm.hscx[1] + 64);		release_ioregs(cs, 0xf);		return (0);	} else {		request_region(cs->hw.avm.hscx[1] + 32, 32, "HiSax hscx B");	}	if (check_region(cs->hw.avm.hscxfifo[1], 1)) {		printk(KERN_WARNING		       "HiSax: %s hscx B fifo port %x already in use/n",		       CardType[cs->typ],		       cs->hw.avm.hscxfifo[1]);		release_ioregs(cs, 0x1f);		return (0);	} else {		request_region(cs->hw.avm.hscxfifo[1], 1, "HiSax hscx B fifo");	}	save_flags(flags);	byteout(cs->hw.avm.cfg_reg, 0x0);	sti();	HZDELAY(HZ / 5 + 1);	byteout(cs->hw.avm.cfg_reg, 0x1);	HZDELAY(HZ / 5 + 1);	byteout(cs->hw.avm.cfg_reg, 0x0);	HZDELAY(HZ / 5 + 1);	val = cs->irq;	if (val == 9)		val = 2;	byteout(cs->hw.avm.cfg_reg + 1, val);	HZDELAY(HZ / 5 + 1);	byteout(cs->hw.avm.cfg_reg, 0x0);	HZDELAY(HZ / 5 + 1);	restore_flags(flags);	val = bytein(cs->hw.avm.cfg_reg);	printk(KERN_INFO "AVM A1: Byte at %x is %x/n",	       cs->hw.avm.cfg_reg, val);	val = bytein(cs->hw.avm.cfg_reg + 3);	printk(KERN_INFO "AVM A1: Byte at %x is %x/n",	       cs->hw.avm.cfg_reg + 3, val);	val = bytein(cs->hw.avm.cfg_reg + 2);	printk(KERN_INFO "AVM A1: Byte at %x is %x/n",	       cs->hw.avm.cfg_reg + 2, val);	val = bytein(cs->hw.avm.cfg_reg);	printk(KERN_INFO "AVM A1: Byte at %x is %x/n",	       cs->hw.avm.cfg_reg, val);	printk(KERN_INFO	       "HiSax: %s config irq:%d cfg:0x%X/n",	       CardType[cs->typ], cs->irq,	       cs->hw.avm.cfg_reg);	printk(KERN_INFO	       "HiSax: isac:0x%X/0x%X/n",	       cs->hw.avm.isac + 32, cs->hw.avm.isacfifo);	printk(KERN_INFO	       "HiSax: hscx A:0x%X/0x%X  hscx B:0x%X/0x%X/n",	       cs->hw.avm.hscx[0] + 32, cs->hw.avm.hscxfifo[0],	       cs->hw.avm.hscx[1] + 32, cs->hw.avm.hscxfifo[1]);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &AVM_card_msg;	cs->irq_func = &avm_a1_interrupt;	ISACVersion(cs, "AVM A1:");	if (HscxVersion(cs, "AVM A1:")) {		printk(KERN_WARNING		       "AVM A1: wrong HSCX versions check IO address/n");		release_ioregs(cs, 0x3f);		return (0);	}	return (1);}
开发者ID:fgeraci,项目名称:cs518-sched,代码行数:101,


示例19: setup_sedlbauer

//.........这里部分代码省略.........	printk(KERN_INFO "Sedlbauer: %s detected/n",		Sedlbauer_Types[cs->subtyp]);	setup_isac(cs);	if (cs->hw.sedl.chip == SEDL_CHIP_IPAC) {		if (cs->hw.sedl.bus == SEDL_BUS_PCI) {	                cs->hw.sedl.adr  = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_ADR;			cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;			cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;		} else {	                cs->hw.sedl.adr  = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_ADR;			cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;			cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;		}		test_and_set_bit(HW_IPAC, &cs->HW_Flags);		cs->readisac = &ReadISAC_IPAC;		cs->writeisac = &WriteISAC_IPAC;		cs->readisacfifo = &ReadISACfifo_IPAC;		cs->writeisacfifo = &WriteISACfifo_IPAC;		cs->irq_func = &sedlbauer_interrupt_ipac;		val = readreg(cs->hw.sedl.adr, cs->hw.sedl.isac, IPAC_ID);		printk(KERN_INFO "Sedlbauer: IPAC version %x/n", val);	} else {		/* ISAC_HSCX oder ISAC_ISAR */		cs->readisac = &ReadISAC;		cs->writeisac = &WriteISAC;		cs->readisacfifo = &ReadISACfifo;		cs->writeisacfifo = &WriteISACfifo;		if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) {			if (cs->hw.sedl.bus == SEDL_BUS_PCI) {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ISAR;			} else {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR_RESET_ON;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR_RESET_OFF;			}			cs->bcs[0].hw.isar.reg = &cs->hw.sedl.isar;			cs->bcs[1].hw.isar.reg = &cs->hw.sedl.isar;			test_and_set_bit(HW_ISAR, &cs->HW_Flags);			cs->irq_func = &sedlbauer_interrupt_isar;			cs->auxcmd = &isar_auxcmd;			ISACVersion(cs, "Sedlbauer:");			cs->BC_Read_Reg = &ReadISAR;			cs->BC_Write_Reg = &WriteISAR;			cs->BC_Send_Data = &isar_fill_fifo;			bytecnt = 3;			while (bytecnt) {				ver = ISARVersion(cs, "Sedlbauer:");				if (ver < 0)					printk(KERN_WARNING						"Sedlbauer: wrong ISAR version (ret = %d)/n", ver);				else					break;				reset_sedlbauer(cs);				bytecnt--;			}			if (!bytecnt) {				release_io_sedlbauer(cs);				return (0);			}		} else {			if (cs->hw.sedl.bus == SEDL_BUS_PCMCIA) {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_HSCX;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_RESET;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_RESET;				cs->irq_flags |= IRQF_SHARED;			} else {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_HSCX;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_RESET_ON;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_RESET_OFF;			}			cs->irq_func = &sedlbauer_interrupt;			ISACVersion(cs, "Sedlbauer:");					if (HscxVersion(cs, "Sedlbauer:")) {				printk(KERN_WARNING					"Sedlbauer: wrong HSCX versions check IO address/n");				release_io_sedlbauer(cs);				return (0);			}		}	}	return (1);}
开发者ID:458941968,项目名称:mini2440-kernel-2.6.29,代码行数:101,


示例20: setup_teles3

//.........这里部分代码省略.........				if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) {					release_region(cs->hw.teles3.cfg_reg, 1);				} else {					release_region(cs->hw.teles3.cfg_reg, 8);				}			}			return (0);		}		if (!request_region(cs->hw.teles3.hscx[0] + 32, 32, "HiSax hscx A")) {			printk(KERN_WARNING			 "HiSax: %s hscx A ports %x-%x already in use/n",			       CardType[cs->typ],			       cs->hw.teles3.hscx[0] + 32,			       cs->hw.teles3.hscx[0] + 64);			if (cs->hw.teles3.cfg_reg) {				if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) {					release_region(cs->hw.teles3.cfg_reg, 1);				} else {					release_region(cs->hw.teles3.cfg_reg, 8);				}			}			release_ioregs(cs, 1);			return (0);		}		if (!request_region(cs->hw.teles3.hscx[1] + 32, 32, "HiSax hscx B")) {			printk(KERN_WARNING			 "HiSax: %s hscx B ports %x-%x already in use/n",			       CardType[cs->typ],			       cs->hw.teles3.hscx[1] + 32,			       cs->hw.teles3.hscx[1] + 64);			if (cs->hw.teles3.cfg_reg) {				if (cs->typ == ISDN_CTYPE_COMPAQ_ISA) {					release_region(cs->hw.teles3.cfg_reg, 1);				} else {					release_region(cs->hw.teles3.cfg_reg, 8);				}			}			release_ioregs(cs, 3);			return (0);		}	}	if ((cs->hw.teles3.cfg_reg) && (cs->typ != ISDN_CTYPE_COMPAQ_ISA)) {		if ((val = bytein(cs->hw.teles3.cfg_reg + 0)) != 0x51) {			printk(KERN_WARNING "Teles: 16.3 Byte at %x is %x/n",			       cs->hw.teles3.cfg_reg + 0, val);			release_io_teles3(cs);			return (0);		}		if ((val = bytein(cs->hw.teles3.cfg_reg + 1)) != 0x93) {			printk(KERN_WARNING "Teles: 16.3 Byte at %x is %x/n",			       cs->hw.teles3.cfg_reg + 1, val);			release_io_teles3(cs);			return (0);		}		val = bytein(cs->hw.teles3.cfg_reg + 2);/* 0x1e=without AB							 * 0x1f=with AB							 * 0x1c 16.3 ???							 * 0x39 16.3 1.1							 * 0x38 16.3 1.3							 * 0x46 16.3 with AB + Video (Teles-Vision)							 */		if (val != 0x46 && val != 0x39 && val != 0x38 && val != 0x1c && val != 0x1e && val != 0x1f) {			printk(KERN_WARNING "Teles: 16.3 Byte at %x is %x/n",			       cs->hw.teles3.cfg_reg + 2, val);			release_io_teles3(cs);			return (0);		}	}	printk(KERN_INFO	       "HiSax: %s config irq:%d isac:0x%X  cfg:0x%X/n",	       CardType[cs->typ], cs->irq,	       cs->hw.teles3.isac + 32, cs->hw.teles3.cfg_reg);	printk(KERN_INFO	       "HiSax: hscx A:0x%X  hscx B:0x%X/n",	       cs->hw.teles3.hscx[0] + 32, cs->hw.teles3.hscx[1] + 32);	setup_isac(cs);	if (reset_teles3(cs)) {		printk(KERN_WARNING "Teles3: wrong IRQ/n");		release_io_teles3(cs);		return (0);	}	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &Teles_card_msg;	cs->irq_func = &teles3_interrupt;	ISACVersion(cs, "Teles3:");	if (HscxVersion(cs, "Teles3:")) {		printk(KERN_WARNING		       "Teles3: wrong HSCX versions check IO address/n");		release_io_teles3(cs);		return (0);	}	return (1);}
开发者ID:BackupTheBerlios,项目名称:tew632-brp-svn,代码行数:101,


示例21: setup_sedlbauer

//.........这里部分代码省略.........	printk(KERN_INFO "Sedlbauer: %s detected/n",		Sedlbauer_Types[cs->subtyp]);	setup_isac(cs);	if (cs->hw.sedl.chip == SEDL_CHIP_IPAC) {		if (cs->hw.sedl.bus == SEDL_BUS_PCI) {	                cs->hw.sedl.adr  = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_ADR;			cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;			cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;		} else {	                cs->hw.sedl.adr  = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_ADR;			cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;			cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;		}		test_and_set_bit(HW_IPAC, &cs->HW_Flags);		cs->readisac = &ReadISAC_IPAC;		cs->writeisac = &WriteISAC_IPAC;		cs->readisacfifo = &ReadISACfifo_IPAC;		cs->writeisacfifo = &WriteISACfifo_IPAC;		cs->irq_func = &sedlbauer_interrupt_ipac;		val = readreg(cs->hw.sedl.adr, cs->hw.sedl.isac, IPAC_ID);		printk(KERN_INFO "Sedlbauer: IPAC version %x/n", val);	} else {		/* ISAC_HSCX oder ISAC_ISAR */		cs->readisac = &ReadISAC;		cs->writeisac = &WriteISAC;		cs->readisacfifo = &ReadISACfifo;		cs->writeisacfifo = &WriteISACfifo;		if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) {			if (cs->hw.sedl.bus == SEDL_BUS_PCI) {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg +							SEDL_ISAR_PCI_ISAR;			} else {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR_RESET_ON;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg +							SEDL_ISAR_ISA_ISAR_RESET_OFF;			}			cs->bcs[0].hw.isar.reg = &cs->hw.sedl.isar;			cs->bcs[1].hw.isar.reg = &cs->hw.sedl.isar;			test_and_set_bit(HW_ISAR, &cs->HW_Flags);			cs->irq_func = &sedlbauer_interrupt_isar;			cs->auxcmd = &isar_auxcmd;			ISACVersion(cs, "Sedlbauer:");			cs->BC_Read_Reg = &ReadISAR;			cs->BC_Write_Reg = &WriteISAR;			cs->BC_Send_Data = &isar_fill_fifo;			bytecnt = 3;			while (bytecnt) {				ver = ISARVersion(cs, "Sedlbauer:");				if (ver < 0)					printk(KERN_WARNING						"Sedlbauer: wrong ISAR version (ret = %d)/n", ver);				else					break;				reset_sedlbauer(cs);				bytecnt--;			}			if (!bytecnt) {				release_io_sedlbauer(cs);				return (0);			}		} else {			if (cs->hw.sedl.bus == SEDL_BUS_PCMCIA) {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_HSCX;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_RESET;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg + SEDL_HSCX_PCMCIA_RESET;				cs->irq_flags |= IRQF_SHARED;			} else {				cs->hw.sedl.adr = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_ADR;				cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_ISAC;				cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_HSCX;				cs->hw.sedl.reset_on = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_RESET_ON;				cs->hw.sedl.reset_off = cs->hw.sedl.cfg_reg + SEDL_HSCX_ISA_RESET_OFF;			}			cs->irq_func = &sedlbauer_interrupt;			ISACVersion(cs, "Sedlbauer:");					if (HscxVersion(cs, "Sedlbauer:")) {				printk(KERN_WARNING					"Sedlbauer: wrong HSCX versions check IO address/n");				release_io_sedlbauer(cs);				return (0);			}		}	}	return (1);}
开发者ID:robacklin,项目名称:ts7800,代码行数:101,


示例22: setup_telespci

int __initsetup_telespci(struct IsdnCard *card){	struct IsdnCardState *cs = card->cs;	char tmp[64];#ifdef __BIG_ENDIAN#error "not running on big endian machines now"#endif	strcpy(tmp, telespci_revision);	printk(KERN_INFO "HiSax: Teles/PCI driver Rev. %s/n", HiSax_getrev(tmp));	if (cs->typ != ISDN_CTYPE_TELESPCI)		return (0);#if CONFIG_PCI	if (!pci_present()) {		printk(KERN_ERR "TelesPCI: no PCI bus present/n");		return(0);	}	if ((dev_tel = pci_find_device (PCI_VENDOR_ID_ZORAN, PCI_DEVICE_ID_ZORAN_36120, dev_tel))) {		if (pci_enable_device(dev_tel))			return(0);		cs->irq = dev_tel->irq;		if (!cs->irq) {			printk(KERN_WARNING "Teles: No IRQ for PCI card found/n");			return(0);		}		cs->hw.teles0.membase = (u_long) ioremap(pci_resource_start(dev_tel, 0),			PAGE_SIZE);		printk(KERN_INFO "Found: Zoran, base-address: 0x%lx, irq: 0x%x/n",			pci_resource_start(dev_tel, 0), dev_tel->irq);	} else {		printk(KERN_WARNING "TelesPCI: No PCI card found/n");		return(0);	}#else	printk(KERN_WARNING "HiSax: Teles/PCI and NO_PCI_BIOS/n");	printk(KERN_WARNING "HiSax: Teles/PCI unable to config/n");	return (0);#endif /* CONFIG_PCI */	/* Initialize Zoran PCI controller */	writel(0x00000000, cs->hw.teles0.membase + 0x28);	writel(0x01000000, cs->hw.teles0.membase + 0x28);	writel(0x01000000, cs->hw.teles0.membase + 0x28);	writel(0x7BFFFFFF, cs->hw.teles0.membase + 0x2C);	writel(0x70000000, cs->hw.teles0.membase + 0x3C);	writel(0x61000000, cs->hw.teles0.membase + 0x40);	/* writel(0x00800000, cs->hw.teles0.membase + 0x200); */	printk(KERN_INFO	       "HiSax: %s config irq:%d mem:%lx/n",	       CardType[cs->typ], cs->irq,	       cs->hw.teles0.membase);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &TelesPCI_card_msg;	cs->irq_func = &telespci_interrupt;	cs->irq_flags |= SA_SHIRQ;	ISACVersion(cs, "TelesPCI:");	if (HscxVersion(cs, "TelesPCI:")) {		printk(KERN_WARNING		 "TelesPCI: wrong HSCX versions check IO/MEM addresses/n");		release_io_telespci(cs);		return (0);	}	return (1);}
开发者ID:JBTech,项目名称:ralink_rt5350,代码行数:73,


示例23: setup_ix1micro

int __devinitsetup_ix1micro(struct IsdnCard *card){	struct IsdnCardState *cs = card->cs;	char tmp[64];	strcpy(tmp, ix1_revision);;	if (cs->typ != ISDN_CTYPE_IX1MICROR2)		return (0);#ifdef __ISAPNP__	if (!card->para[1] && isapnp_present()) {		struct pnp_dev *pnp_d;		while(ipid->card_vendor) {			if ((pnp_c = pnp_find_card(ipid->card_vendor,				ipid->card_device, pnp_c))) {				pnp_d = NULL;				if ((pnp_d = pnp_find_dev(pnp_c,					ipid->vendor, ipid->function, pnp_d))) {					int err;//					printk(KERN_INFO "HiSax: %s detected/n",;					pnp_disable_dev(pnp_d);					err = pnp_activate_dev(pnp_d);					if (err<0) {//						printk(KERN_WARNING "%s: pnp_activate_dev ret(%d)/n",;						return(0);					}					card->para[1] = pnp_port_start(pnp_d, 0);					card->para[0] = pnp_irq(pnp_d, 0);					if (!card->para[0] || !card->para[1]) {//						printk(KERN_ERR "ITK PnP:some resources are missing %ld/%lx/n",;						pnp_disable_dev(pnp_d);						return(0);					}					break;				} else {;				}			}			ipid++;			pnp_c = NULL;		} 		if (!ipid->card_vendor) {;			return(0);		}	}#endif	/* IO-Ports */	cs->hw.ix1.isac_ale = card->para[1] + ISAC_COMMAND_OFFSET;	cs->hw.ix1.hscx_ale = card->para[1] + HSCX_COMMAND_OFFSET;	cs->hw.ix1.isac = card->para[1] + ISAC_DATA_OFFSET;	cs->hw.ix1.hscx = card->para[1] + HSCX_DATA_OFFSET;	cs->hw.ix1.cfg_reg = card->para[1];	cs->irq = card->para[0];	if (cs->hw.ix1.cfg_reg) {		if (!request_region(cs->hw.ix1.cfg_reg, 4, "ix1micro cfg")) {//			printk(KERN_WARNING//			  "HiSax: ITK ix1-micro Rev.2 config port "//			  "%x-%x already in use/n",//			       cs->hw.ix1.cfg_reg,;			return (0);		}	}//	printk(KERN_INFO "HiSax: ITK ix1-micro Rev.2 config irq:%d io:0x%X/n",;	setup_isac(cs);	cs->readisac = &ReadISAC;	cs->writeisac = &WriteISAC;	cs->readisacfifo = &ReadISACfifo;	cs->writeisacfifo = &WriteISACfifo;	cs->BC_Read_Reg = &ReadHSCX;	cs->BC_Write_Reg = &WriteHSCX;	cs->BC_Send_Data = &hscx_fill_fifo;	cs->cardmsg = &ix1_card_msg;	cs->irq_func = &ix1micro_interrupt;	ISACVersion(cs, "ix1-Micro:");	if (HscxVersion(cs, "ix1-Micro:")) {//		printk(KERN_WARNING;		release_io_ix1micro(cs);		return (0);	}	return (1);}
开发者ID:rrowicki,项目名称:Chrono_Kernel-1,代码行数:91,



注:本文中的HscxVersion函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ HtmlHelp函数代码示例
C++ HostSwap16函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。