static int pcnet_open(struct net_device *dev) { int ret; pcnet_dev_t *info = PRIV(dev); struct pcmcia_device *link = info->p_dev; unsigned int nic_base = dev->base_addr; dev_dbg(&link->dev, "pcnet_open('%s')\n", dev->name); if (!pcmcia_dev_present(link)) return -ENODEV; set_misc_reg(dev); outb_p(0xFF, nic_base + EN0_ISR); /* Clear bogus intr. */ ret = request_irq(dev->irq, ei_irq_wrapper, IRQF_SHARED, dev->name, dev); if (ret) return ret; link->open++; info->phy_id = info->eth_phy; info->link_status = 0x00; init_timer(&info->watchdog); info->watchdog.function = ei_watchdog; info->watchdog.data = (u_long)dev; info->watchdog.expires = jiffies + HZ; add_timer(&info->watchdog); return ei_open(dev); } /* pcnet_open */
static int el2_open(struct device *dev) { if (dev->irq < 2) { int irqlist[] = {5, 9, 3, 4, 0}; int *irqp = irqlist; outb(EGACFR_NORM, E33G_GACFR); /* Enable RAM and interrupts. */ do { if (request_irq (*irqp, NULL, 0, "bogus", NULL) != -EBUSY) { /* Twinkle the interrupt, and check if it's seen. */ autoirq_setup(0); outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); outb_p(0x00, E33G_IDCFR); if (*irqp == autoirq_report(0) /* It's a good IRQ line! */ && request_irq (dev->irq = *irqp, &ei_interrupt, 0, ei_status.name, NULL) == 0) break; } } while (*++irqp); if (*irqp == 0) { outb(EGACFR_IRQOFF, E33G_GACFR); /* disable interrupts. */ return -EAGAIN; } } else { if (request_irq(dev->irq, &ei_interrupt, 0, ei_status.name, NULL)) { return -EAGAIN; } } el2_init_card(dev); ei_open(dev); MOD_INC_USE_COUNT; return 0; }
static int hpp_open(struct net_device *dev) { int ioaddr = dev->base_addr - NIC_OFFSET; int option_reg; int retval; if ((retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) { return retval; } /* Reset the 8390 and HP chip. */ option_reg = inw(ioaddr + HPP_OPTION); outw(option_reg & ~(NICReset + ChipReset), ioaddr + HPP_OPTION); udelay(5); /* Unreset the board and enable interrupts. */ outw(option_reg | (EnableIRQ + NICReset + ChipReset), ioaddr + HPP_OPTION); /* Set the wrap registers for programmed-I/O operation. */ outw(HW_Page, ioaddr + HP_PAGING); outw((HP_START_PG + TX_PAGES/2) | ((HP_STOP_PG - 1) << 8), ioaddr + 14); /* Select the operational page. */ outw(Perf_Page, ioaddr + HP_PAGING); ei_open(dev); return 0; }
static int hpp_open(struct device *dev) { int ioaddr = dev->base_addr - NIC_OFFSET; int option_reg; if (request_irq(dev->irq, &ei_interrupt, 0, "hp-plus")) { return -EAGAIN; } /* Reset the 8390 and HP chip. */ option_reg = inw(ioaddr + HPP_OPTION); outw(option_reg & ~(NICReset + ChipReset), ioaddr + HPP_OPTION); SLOW_DOWN_IO; SLOW_DOWN_IO; /* Unreset the board and enable interrupts. */ outw(option_reg | (EnableIRQ + NICReset + ChipReset), ioaddr + HPP_OPTION); /* Set the wrap registers for programmed-I/O operation. */ outw(HW_Page, ioaddr + HP_PAGING); outw((HP_START_PG + TX_2X_PAGES) | ((HP_STOP_PG - 1) << 8), ioaddr + 14); /* Select the operational page. */ outw(Perf_Page, ioaddr + HP_PAGING); return ei_open(dev); }
static int mac8390_open(struct net_device *dev) { ei_open(dev); if (request_irq(dev->irq, ei_interrupt, 0, "8390 Ethernet", dev)) { printk ("%s: unable to get IRQ %d.\n", dev->name, dev->irq); return -EAGAIN; } return 0; }
static int ac_open(struct net_device *dev) { #ifdef notyet /* Someday we may enable the IRQ and shared memory here. */ int ioaddr = dev->base_addr; #endif ei_open(dev); return 0; }
static int ac_open(struct net_device *dev) { #ifdef notyet int ioaddr = dev->base_addr; #endif ei_open(dev); return 0; }
static int ultra32_open(struct net_device *dev) { int ioaddr = dev->base_addr - ULTRA32_NIC_OFFSET; int irq_flags = (inb(ioaddr + ULTRA32_CFG5) & 0x08) ? 0 : IRQF_SHARED; int retval; retval = request_irq(dev->irq, ei_interrupt, irq_flags, dev->name, dev); if (retval) return retval; outb(ULTRA32_MEMENB, ioaddr); outb(0x80, ioaddr + ULTRA32_CFG6); outb(0x84, ioaddr + 5); outb(0x01, ioaddr + 6); outb_p(E8390_NODMA+E8390_PAGE0, dev->base_addr); outb(0xff, dev->base_addr + EN0_ERWCNT); ei_open(dev); return 0; }
static int e21_open(struct net_device *dev) { short ioaddr = dev->base_addr; int retval; if ((retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) return retval; /* Set the interrupt line and memory base on the hardware. */ inb(ioaddr + E21_IRQ_LOW); outb(0, ioaddr + E21_ASIC + (dev->irq & 7)); inb(ioaddr + E21_IRQ_HIGH); /* High IRQ bit, and if_port. */ outb(0, ioaddr + E21_ASIC + (dev->irq > 7 ? 1:0) + (dev->if_port ? E21_ALT_IFPORT : 0)); inb(ioaddr + E21_MEM_BASE); outb(0, ioaddr + E21_ASIC + ((dev->mem_start >> 17) & 7)); ei_open(dev); return 0; }
static int ultra32_open(struct net_device *dev) { int ioaddr = dev->base_addr - ULTRA32_NIC_OFFSET; /* ASIC addr */ int irq_flags = (inb(ioaddr + ULTRA32_CFG5) & 0x08) ? 0 : IRQF_SHARED; int retval; retval = request_irq(dev->irq, ei_interrupt, irq_flags, dev->name, dev); if (retval) return retval; outb(ULTRA32_MEMENB, ioaddr); /* Enable Shared Memory. */ outb(0x80, ioaddr + ULTRA32_CFG6); /* Enable Interrupts. */ outb(0x84, ioaddr + 5); /* Enable MEM16 & Disable Bus Master. */ outb(0x01, ioaddr + 6); /* Enable Interrupts. */ /* Set the early receive warning level in window 0 high enough not to receive ERW interrupts. */ outb_p(E8390_NODMA+E8390_PAGE0, dev->base_addr); outb(0xff, dev->base_addr + EN0_ERWCNT); ei_open(dev); return 0; }
static int el2_open(struct net_device *dev) { int retval = -EAGAIN; if (dev->irq < 2) { int irqlist[] = {5, 9, 3, 4, 0}; int *irqp = irqlist; outb(EGACFR_NORM, E33G_GACFR); /* Enable RAM and interrupts. */ do { if (request_irq (*irqp, NULL, 0, "bogus", dev) != -EBUSY) { /* Twinkle the interrupt, and check if it's seen. */ unsigned long cookie = probe_irq_on(); outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); outb_p(0x00, E33G_IDCFR); if (*irqp == probe_irq_off(cookie) /* It's a good IRQ line! */ && ((retval = request_irq(dev->irq = *irqp, ei_interrupt, 0, dev->name, dev)) == 0)) break; } } while (*++irqp); if (*irqp == 0) { outb(EGACFR_IRQOFF, E33G_GACFR); /* disable interrupts. */ return retval; } } else { if ((retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) { return retval; } } el2_init_card(dev); ei_open(dev); return 0; }
static int ultramca_open(struct net_device *dev) { int ioaddr = dev->base_addr - ULTRA_NIC_OFFSET; /* ASIC addr */ int retval; if ((retval = request_irq(dev->irq, ei_interrupt, 0, dev->name, dev))) return retval; outb(ULTRA_MEMENB, ioaddr); /* Enable memory */ outb(0x80, ioaddr + 5); /* ??? */ outb(0x01, ioaddr + 6); /* Enable interrupts and memory. */ outb(0x04, ioaddr + 5); /* ??? */ /* Set the early receive warning level in window 0 high enough not * to receive ERW interrupts. */ /* outb_p(E8390_NODMA + E8390_PAGE0, dev->base_addr); * outb(0xff, dev->base_addr + EN0_ERWCNT); */ ei_open(dev); return 0; }
static int es_open(struct net_device *dev) { ei_open(dev); return 0; }
static int hydra_open(struct net_device *dev) { ei_open(dev); MOD_INC_USE_COUNT; return 0; }