Loading drivers/isdn/hisax/sedlbauer.c +157 −119 Original line number Diff line number Diff line Loading @@ -518,8 +518,6 @@ Sedl_card_msg(struct IsdnCardState *cs, int mt, void *arg) return(0); } static struct pci_dev *dev_sedl __devinitdata = NULL; #ifdef __ISAPNP__ static struct isapnp_device_id sedl_ids[] __devinitdata = { { ISAPNP_VENDOR('S', 'A', 'G'), ISAPNP_FUNCTION(0x01), Loading @@ -533,45 +531,16 @@ static struct isapnp_device_id sedl_ids[] __devinitdata = { static struct isapnp_device_id *ipid __devinitdata = &sedl_ids[0]; static struct pnp_card *pnp_c __devinitdata = NULL; #endif int __devinit setup_sedlbauer(struct IsdnCard *card) static int __devinit setup_sedlbauer_isapnp(struct IsdnCard *card, int *bytecnt) { int bytecnt, ver, val; struct IsdnCardState *cs = card->cs; char tmp[64]; u16 sub_vendor_id, sub_id; strcpy(tmp, Sedlbauer_revision); printk(KERN_INFO "HiSax: Sedlbauer driver Rev. %s\n", HiSax_getrev(tmp)); struct pnp_dev *pnp_d; if (cs->typ == ISDN_CTYPE_SEDLBAUER) { cs->subtyp = SEDL_SPEED_CARD_WIN; cs->hw.sedl.bus = SEDL_BUS_ISA; cs->hw.sedl.chip = SEDL_CHIP_TEST; } else if (cs->typ == ISDN_CTYPE_SEDLBAUER_PCMCIA) { cs->subtyp = SEDL_SPEED_STAR; cs->hw.sedl.bus = SEDL_BUS_PCMCIA; cs->hw.sedl.chip = SEDL_CHIP_TEST; } else if (cs->typ == ISDN_CTYPE_SEDLBAUER_FAX) { cs->subtyp = SEDL_SPEED_FAX; cs->hw.sedl.bus = SEDL_BUS_ISA; cs->hw.sedl.chip = SEDL_CHIP_ISAC_ISAR; } else return (0); if (!isapnp_present()) return -1; bytecnt = 8; if (card->para[1]) { cs->hw.sedl.cfg_reg = card->para[1]; cs->irq = card->para[0]; if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { bytecnt = 16; } } else { #ifdef __ISAPNP__ if (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))) { Loading Loading @@ -603,12 +572,13 @@ setup_sedlbauer(struct IsdnCard *card) if (ipid->function == ISAPNP_FUNCTION(0x2)) { cs->subtyp = SEDL_SPEED_FAX; cs->hw.sedl.chip = SEDL_CHIP_ISAC_ISAR; bytecnt = 16; *bytecnt = 16; } else { cs->subtyp = SEDL_SPEED_CARD_WIN; cs->hw.sedl.chip = SEDL_CHIP_TEST; } goto ready; return (1); } else { printk(KERN_ERR "Sedlbauer PnP: PnP error card found, no device\n"); return(0); Loading @@ -617,13 +587,28 @@ setup_sedlbauer(struct IsdnCard *card) ipid++; pnp_c = NULL; } if (!ipid->card_vendor) { printk(KERN_INFO "Sedlbauer PnP: no ISAPnP card found\n"); return -1; } #else static int __devinit setup_sedlbauer_isapnp(struct IsdnCard *card, int *bytecnt) { return -1; } #endif /* Probe for Sedlbauer speed pci */ #endif /* __ISAPNP__ */ #ifdef CONFIG_PCI static struct pci_dev *dev_sedl __devinitdata = NULL; static int __devinit setup_sedlbauer_pci(struct IsdnCard *card) { struct IsdnCardState *cs = card->cs; u16 sub_vendor_id, sub_id; if ((dev_sedl = pci_find_device(PCI_VENDOR_ID_TIGERJET, PCI_DEVICE_ID_TIGERJET_100, dev_sedl))) { if (pci_enable_device(dev_sedl)) Loading Loading @@ -667,7 +652,7 @@ setup_sedlbauer(struct IsdnCard *card) sub_vendor_id); return(0); } bytecnt = 256; cs->hw.sedl.reset_on = SEDL_ISAR_PCI_ISAR_RESET_ON; cs->hw.sedl.reset_off = SEDL_ISAR_PCI_ISAR_RESET_OFF; byteout(cs->hw.sedl.cfg_reg, 0xff); Loading @@ -678,15 +663,68 @@ setup_sedlbauer(struct IsdnCard *card) mdelay(2); byteout(cs->hw.sedl.cfg_reg +3, cs->hw.sedl.reset_off); mdelay(10); return (1); } #else printk(KERN_WARNING "Sedlbauer: NO_PCI_BIOS\n"); return (0); static int __devinit setup_sedlbauer_pci(struct IsdnCard *card) { return (1); } #endif /* CONFIG_PCI */ int __devinit setup_sedlbauer(struct IsdnCard *card) { int bytecnt = 8, ver, val, rc; struct IsdnCardState *cs = card->cs; char tmp[64]; strcpy(tmp, Sedlbauer_revision); printk(KERN_INFO "HiSax: Sedlbauer driver Rev. %s\n", HiSax_getrev(tmp)); if (cs->typ == ISDN_CTYPE_SEDLBAUER) { cs->subtyp = SEDL_SPEED_CARD_WIN; cs->hw.sedl.bus = SEDL_BUS_ISA; cs->hw.sedl.chip = SEDL_CHIP_TEST; } else if (cs->typ == ISDN_CTYPE_SEDLBAUER_PCMCIA) { cs->subtyp = SEDL_SPEED_STAR; cs->hw.sedl.bus = SEDL_BUS_PCMCIA; cs->hw.sedl.chip = SEDL_CHIP_TEST; } else if (cs->typ == ISDN_CTYPE_SEDLBAUER_FAX) { cs->subtyp = SEDL_SPEED_FAX; cs->hw.sedl.bus = SEDL_BUS_ISA; cs->hw.sedl.chip = SEDL_CHIP_ISAC_ISAR; } else return (0); bytecnt = 8; if (card->para[1]) { cs->hw.sedl.cfg_reg = card->para[1]; cs->irq = card->para[0]; if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { bytecnt = 16; } } else { rc = setup_sedlbauer_isapnp(card, &bytecnt); if (!rc) return (0); if (rc > 0) goto ready; /* Probe for Sedlbauer speed pci */ rc = setup_sedlbauer_pci(card); if (!rc) return (0); bytecnt = 256; } #ifdef __ISAPNP__ ready: #endif /* In case of the sedlbauer pcmcia card, this region is in use, * reserved for us by the card manager. So we do not check it Loading Loading
drivers/isdn/hisax/sedlbauer.c +157 −119 Original line number Diff line number Diff line Loading @@ -518,8 +518,6 @@ Sedl_card_msg(struct IsdnCardState *cs, int mt, void *arg) return(0); } static struct pci_dev *dev_sedl __devinitdata = NULL; #ifdef __ISAPNP__ static struct isapnp_device_id sedl_ids[] __devinitdata = { { ISAPNP_VENDOR('S', 'A', 'G'), ISAPNP_FUNCTION(0x01), Loading @@ -533,45 +531,16 @@ static struct isapnp_device_id sedl_ids[] __devinitdata = { static struct isapnp_device_id *ipid __devinitdata = &sedl_ids[0]; static struct pnp_card *pnp_c __devinitdata = NULL; #endif int __devinit setup_sedlbauer(struct IsdnCard *card) static int __devinit setup_sedlbauer_isapnp(struct IsdnCard *card, int *bytecnt) { int bytecnt, ver, val; struct IsdnCardState *cs = card->cs; char tmp[64]; u16 sub_vendor_id, sub_id; strcpy(tmp, Sedlbauer_revision); printk(KERN_INFO "HiSax: Sedlbauer driver Rev. %s\n", HiSax_getrev(tmp)); struct pnp_dev *pnp_d; if (cs->typ == ISDN_CTYPE_SEDLBAUER) { cs->subtyp = SEDL_SPEED_CARD_WIN; cs->hw.sedl.bus = SEDL_BUS_ISA; cs->hw.sedl.chip = SEDL_CHIP_TEST; } else if (cs->typ == ISDN_CTYPE_SEDLBAUER_PCMCIA) { cs->subtyp = SEDL_SPEED_STAR; cs->hw.sedl.bus = SEDL_BUS_PCMCIA; cs->hw.sedl.chip = SEDL_CHIP_TEST; } else if (cs->typ == ISDN_CTYPE_SEDLBAUER_FAX) { cs->subtyp = SEDL_SPEED_FAX; cs->hw.sedl.bus = SEDL_BUS_ISA; cs->hw.sedl.chip = SEDL_CHIP_ISAC_ISAR; } else return (0); if (!isapnp_present()) return -1; bytecnt = 8; if (card->para[1]) { cs->hw.sedl.cfg_reg = card->para[1]; cs->irq = card->para[0]; if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { bytecnt = 16; } } else { #ifdef __ISAPNP__ if (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))) { Loading Loading @@ -603,12 +572,13 @@ setup_sedlbauer(struct IsdnCard *card) if (ipid->function == ISAPNP_FUNCTION(0x2)) { cs->subtyp = SEDL_SPEED_FAX; cs->hw.sedl.chip = SEDL_CHIP_ISAC_ISAR; bytecnt = 16; *bytecnt = 16; } else { cs->subtyp = SEDL_SPEED_CARD_WIN; cs->hw.sedl.chip = SEDL_CHIP_TEST; } goto ready; return (1); } else { printk(KERN_ERR "Sedlbauer PnP: PnP error card found, no device\n"); return(0); Loading @@ -617,13 +587,28 @@ setup_sedlbauer(struct IsdnCard *card) ipid++; pnp_c = NULL; } if (!ipid->card_vendor) { printk(KERN_INFO "Sedlbauer PnP: no ISAPnP card found\n"); return -1; } #else static int __devinit setup_sedlbauer_isapnp(struct IsdnCard *card, int *bytecnt) { return -1; } #endif /* Probe for Sedlbauer speed pci */ #endif /* __ISAPNP__ */ #ifdef CONFIG_PCI static struct pci_dev *dev_sedl __devinitdata = NULL; static int __devinit setup_sedlbauer_pci(struct IsdnCard *card) { struct IsdnCardState *cs = card->cs; u16 sub_vendor_id, sub_id; if ((dev_sedl = pci_find_device(PCI_VENDOR_ID_TIGERJET, PCI_DEVICE_ID_TIGERJET_100, dev_sedl))) { if (pci_enable_device(dev_sedl)) Loading Loading @@ -667,7 +652,7 @@ setup_sedlbauer(struct IsdnCard *card) sub_vendor_id); return(0); } bytecnt = 256; cs->hw.sedl.reset_on = SEDL_ISAR_PCI_ISAR_RESET_ON; cs->hw.sedl.reset_off = SEDL_ISAR_PCI_ISAR_RESET_OFF; byteout(cs->hw.sedl.cfg_reg, 0xff); Loading @@ -678,15 +663,68 @@ setup_sedlbauer(struct IsdnCard *card) mdelay(2); byteout(cs->hw.sedl.cfg_reg +3, cs->hw.sedl.reset_off); mdelay(10); return (1); } #else printk(KERN_WARNING "Sedlbauer: NO_PCI_BIOS\n"); return (0); static int __devinit setup_sedlbauer_pci(struct IsdnCard *card) { return (1); } #endif /* CONFIG_PCI */ int __devinit setup_sedlbauer(struct IsdnCard *card) { int bytecnt = 8, ver, val, rc; struct IsdnCardState *cs = card->cs; char tmp[64]; strcpy(tmp, Sedlbauer_revision); printk(KERN_INFO "HiSax: Sedlbauer driver Rev. %s\n", HiSax_getrev(tmp)); if (cs->typ == ISDN_CTYPE_SEDLBAUER) { cs->subtyp = SEDL_SPEED_CARD_WIN; cs->hw.sedl.bus = SEDL_BUS_ISA; cs->hw.sedl.chip = SEDL_CHIP_TEST; } else if (cs->typ == ISDN_CTYPE_SEDLBAUER_PCMCIA) { cs->subtyp = SEDL_SPEED_STAR; cs->hw.sedl.bus = SEDL_BUS_PCMCIA; cs->hw.sedl.chip = SEDL_CHIP_TEST; } else if (cs->typ == ISDN_CTYPE_SEDLBAUER_FAX) { cs->subtyp = SEDL_SPEED_FAX; cs->hw.sedl.bus = SEDL_BUS_ISA; cs->hw.sedl.chip = SEDL_CHIP_ISAC_ISAR; } else return (0); bytecnt = 8; if (card->para[1]) { cs->hw.sedl.cfg_reg = card->para[1]; cs->irq = card->para[0]; if (cs->hw.sedl.chip == SEDL_CHIP_ISAC_ISAR) { bytecnt = 16; } } else { rc = setup_sedlbauer_isapnp(card, &bytecnt); if (!rc) return (0); if (rc > 0) goto ready; /* Probe for Sedlbauer speed pci */ rc = setup_sedlbauer_pci(card); if (!rc) return (0); bytecnt = 256; } #ifdef __ISAPNP__ ready: #endif /* In case of the sedlbauer pcmcia card, this region is in use, * reserved for us by the card manager. So we do not check it Loading