📄 eicon_pci.c
字号:
/* $Id: eicon_pci.c,v 1.1.4.1 2001/11/20 14:19:35 kai Exp $ * * ISDN low-level module for Eicon active ISDN-Cards. * Hardware-specific code for PCI cards. * * Copyright 1998-2000 by Armin Schindler (mac@melware.de) * Copyright 1999,2000 Cytronics & Melware (info@melware.de) * * This software may be used and distributed according to the terms * of the GNU General Public License, incorporated herein by reference. * * Thanks to Eicon Networks for * documents, informations and hardware. * */#include <linux/config.h>#include <linux/pci.h>#include "eicon.h"#include "eicon_pci.h"#undef N_DATA#include "adapter.h"#include "uxio.h"char *eicon_pci_revision = "$Revision: 1.1.4.1 $";#if CONFIG_PCI /* intire stuff is only for PCI */#ifdef CONFIG_ISDN_DRV_EICON_PCIint eicon_pci_find_card(char *ID){ int pci_cards = 0; int card_id = 0; int had_q = 0; int ctype = 0; char did[20]; card_t *pCard; word wCardIndex; pCard = DivasCards; for (wCardIndex = 0; wCardIndex < MAX_CARDS; wCardIndex++) { if ((pCard->hw) && (pCard->hw->in_use)) { switch(pCard->hw->card_type) { case DIA_CARD_TYPE_DIVA_SERVER: ctype = EICON_CTYPE_MAESTRAP; card_id++; had_q = 0; break; case DIA_CARD_TYPE_DIVA_SERVER_B: ctype = EICON_CTYPE_MAESTRA; card_id++; had_q = 0; break; case DIA_CARD_TYPE_DIVA_SERVER_Q: ctype = EICON_CTYPE_MAESTRAQ; if (!had_q) card_id++; if (++had_q >=4) had_q = 0; break; default: printk(KERN_ERR "eicon_pci: unknown card type %d !\n", pCard->hw->card_type); goto err; } sprintf(did, "%s%d", (strlen(ID) < 1) ? "eicon":ID, pci_cards); if ((!ctype) || (!(eicon_addcard(ctype, 0, pCard->hw->irq, did, card_id)))) { printk(KERN_ERR "eicon_pci: Card could not be added !\n"); } else { pci_cards++; printk(KERN_INFO "%s: DriverID='%s' CardID=%d\n", eicon_ctype_name[ctype], did, card_id); }err:; } pCard++; } return pci_cards;}voideicon_pci_init_conf(eicon_card *card){ int j; /* initializing some variables */ card->ReadyInt = 0; for(j = 0; j < 256; j++) card->IdTable[j] = NULL; for(j = 0; j < (card->d->channels + 1); j++) { card->bch[j].e.busy = 0; card->bch[j].e.D3Id = 0; card->bch[j].e.B2Id = 0; card->bch[j].e.ref = 0; card->bch[j].e.Req = 0; card->bch[j].e.complete = 1; card->bch[j].fsm_state = EICON_STATE_NULL; }}#endif#endif /* CONFIG_PCI */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -