Lines Matching refs:dev

50 static int wd_probe1(struct net_device *dev, int ioaddr);
52 static int wd_open(struct net_device *dev);
53 static void wd_reset_8390(struct net_device *dev);
54 static void wd_get_8390_hdr(struct net_device *dev, struct e8390_pkt_hdr *hdr,
56 static void wd_block_input(struct net_device *dev, int count,
58 static void wd_block_output(struct net_device *dev, int count,
60 static int wd_close(struct net_device *dev);
86 static int __init do_wd_probe(struct net_device *dev) in do_wd_probe() argument
90 int base_addr = dev->base_addr; in do_wd_probe()
91 int irq = dev->irq; in do_wd_probe()
92 int mem_start = dev->mem_start; in do_wd_probe()
93 int mem_end = dev->mem_end; in do_wd_probe()
99 i = wd_probe1(dev, base_addr); in do_wd_probe()
103 r->name = dev->name; in do_wd_probe()
114 if (wd_probe1(dev, ioaddr) == 0) { in do_wd_probe()
115 r->name = dev->name; in do_wd_probe()
119 dev->irq = irq; in do_wd_probe()
120 dev->mem_start = mem_start; in do_wd_probe()
121 dev->mem_end = mem_end; in do_wd_probe()
130 struct net_device *dev = alloc_ei_netdev(); in wd_probe() local
133 if (!dev) in wd_probe()
136 sprintf(dev->name, "eth%d", unit); in wd_probe()
137 netdev_boot_setup_check(dev); in wd_probe()
139 err = do_wd_probe(dev); in wd_probe()
142 return dev; in wd_probe()
144 free_netdev(dev); in wd_probe()
163 static int __init wd_probe1(struct net_device *dev, int ioaddr) in wd_probe1() argument
173 struct ei_device *ei_local = netdev_priv(dev); in wd_probe1()
183 if ((dev->mem_start % 0x2000) || (dev->mem_end % 0x2000)) { in wd_probe1()
184 netdev_warn(dev, in wd_probe1()
186 dev->mem_start = 0; in wd_probe1()
187 dev->mem_end = 0; in wd_probe1()
191 netdev_info(dev, version); in wd_probe1()
195 eth_hw_addr_set(dev, addr); in wd_probe1()
197 netdev_info(dev, "WD80x3 at %#3x, %pM", ioaddr, dev->dev_addr); in wd_probe1()
214 dev->mem_start = ((reg5 & 0x1c) + 0xc0) << 12; in wd_probe1()
215 dev->irq = (reg5 & 0xe0) == 0xe0 ? 10 : (reg5 >> 5) + 1; in wd_probe1()
257 dev->mem_start = WD_SHMEM; in wd_probe1()
259 if (dev->mem_start == 0) { in wd_probe1()
264 dev->mem_start = 0xd0000; in wd_probe1()
265 pr_cont(" assigning address %#lx", dev->mem_start); in wd_probe1()
271 dev->mem_start = ((reg0&0x3f) << 13) + (high_addr_bits << 19); in wd_probe1()
277 dev->base_addr = ioaddr+WD_NIC_OFFSET; in wd_probe1()
279 if (dev->irq < 2) { in wd_probe1()
299 dev->irq = probe_irq_off(irq_mask); in wd_probe1()
304 pr_cont(" autoirq is %d", dev->irq); in wd_probe1()
305 if (dev->irq < 2) in wd_probe1()
306 dev->irq = word16 ? 10 : 5; in wd_probe1()
308 dev->irq = irqmap[((reg4 >> 5) & 0x03) + (reg1 & 0x04)]; in wd_probe1()
309 } else if (dev->irq == 2) /* Fixup bogosity: IRQ2 is really IRQ9 */ in wd_probe1()
310 dev->irq = 9; in wd_probe1()
314 i = request_irq(dev->irq, ei_interrupt, 0, DRV_NAME, dev); in wd_probe1()
316 pr_cont(" unable to get IRQ %d.\n", dev->irq); in wd_probe1()
329 if (dev->mem_end != 0) { in wd_probe1()
330 ei_status.stop_page = (dev->mem_end - dev->mem_start)/256; in wd_probe1()
331 ei_status.priv = dev->mem_end - dev->mem_start; in wd_probe1()
334 dev->mem_end = dev->mem_start + (ei_status.stop_page - WD_START_PG)*256; in wd_probe1()
338 ei_status.mem = ioremap(dev->mem_start, ei_status.priv); in wd_probe1()
340 free_irq(dev->irq, dev); in wd_probe1()
345 model_name, dev->irq, dev->mem_start, dev->mem_end-1); in wd_probe1()
352 dev->netdev_ops = &wd_netdev_ops; in wd_probe1()
353 NS8390_init(dev, 0); in wd_probe1()
363 err = register_netdev(dev); in wd_probe1()
365 free_irq(dev->irq, dev); in wd_probe1()
372 wd_open(struct net_device *dev) in wd_open() argument
374 int ioaddr = dev->base_addr - WD_NIC_OFFSET; /* WD_CMDREG */ in wd_open()
378 ei_status.reg0 = ((dev->mem_start>>13) & 0x3f) | WD_MEMENB; in wd_open()
379 ei_status.reg5 = ((dev->mem_start>>19) & 0x1f) | NIC16; in wd_open()
385 return ei_open(dev); in wd_open()
389 wd_reset_8390(struct net_device *dev) in wd_reset_8390() argument
391 int wd_cmd_port = dev->base_addr - WD_NIC_OFFSET; /* WD_CMDREG */ in wd_reset_8390()
392 struct ei_device *ei_local = netdev_priv(dev); in wd_reset_8390()
395 netif_dbg(ei_local, hw, dev, "resetting the WD80x3 t=%lu...\n", in wd_reset_8390()
400 outb((((dev->mem_start>>13) & 0x3f)|WD_MEMENB), wd_cmd_port); in wd_reset_8390()
402 outb(NIC16 | ((dev->mem_start>>19) & 0x1f), wd_cmd_port+WD_CMDREG5); in wd_reset_8390()
404 netif_dbg(ei_local, hw, dev, "reset done\n"); in wd_reset_8390()
412 wd_get_8390_hdr(struct net_device *dev, struct e8390_pkt_hdr *hdr, int ring_page) in wd_get_8390_hdr() argument
415 int wd_cmdreg = dev->base_addr - WD_NIC_OFFSET; /* WD_CMDREG */ in wd_get_8390_hdr()
439 wd_block_input(struct net_device *dev, int count, struct sk_buff *skb, int ring_offset) in wd_block_input() argument
441 int wd_cmdreg = dev->base_addr - WD_NIC_OFFSET; /* WD_CMDREG */ in wd_block_input()
462 wd_block_output(struct net_device *dev, int count, const unsigned char *buf, in wd_block_output() argument
465 int wd_cmdreg = dev->base_addr - WD_NIC_OFFSET; /* WD_CMDREG */ in wd_block_output()
480 wd_close(struct net_device *dev) in wd_close() argument
482 int wd_cmdreg = dev->base_addr - WD_NIC_OFFSET; /* WD_CMDREG */ in wd_close()
483 struct ei_device *ei_local = netdev_priv(dev); in wd_close()
485 netif_dbg(ei_local, ifdown, dev, "Shutting down ethercard.\n"); in wd_close()
486 ei_close(dev); in wd_close()
525 struct net_device *dev; in wd_init_module() local
533 dev = alloc_ei_netdev(); in wd_init_module()
534 if (!dev) in wd_init_module()
536 dev->irq = irq[this_dev]; in wd_init_module()
537 dev->base_addr = io[this_dev]; in wd_init_module()
538 dev->mem_start = mem[this_dev]; in wd_init_module()
539 dev->mem_end = mem_end[this_dev]; in wd_init_module()
540 if (do_wd_probe(dev) == 0) { in wd_init_module()
541 dev_wd[found++] = dev; in wd_init_module()
544 free_netdev(dev); in wd_init_module()
554 static void cleanup_card(struct net_device *dev) in cleanup_card() argument
556 free_irq(dev->irq, dev); in cleanup_card()
557 release_region(dev->base_addr - WD_NIC_OFFSET, WD_IO_EXTENT); in cleanup_card()
566 struct net_device *dev = dev_wd[this_dev]; in wd_cleanup_module() local
567 if (dev) { in wd_cleanup_module()
568 unregister_netdev(dev); in wd_cleanup_module()
569 cleanup_card(dev); in wd_cleanup_module()
570 free_netdev(dev); in wd_cleanup_module()