Lines Matching +full:0 +full:x83000000
67 static unsigned int lance_portlist[] __initdata = { 0x300, 0x320, 0x340, 0x360, 0};
77 .id_offset14 = 0x57,
78 .id_offset15 = 0x57,
81 .id_offset14 = 0x52,
82 .id_offset15 = 0x44,
85 .id_offset14 = 0x52,
86 .id_offset15 = 0x49,
118 {0x300, 0x320, 0x340, 0x360}.
205 #define LANCE_DATA 0x10
206 #define LANCE_ADDR 0x12
207 #define LANCE_RESET 0x14
208 #define LANCE_BUS_IF 0x16
209 #define LANCE_TOTAL_SIZE 0x18
256 #define LANCE_MUST_PAD 0x00000001
257 #define LANCE_ENABLE_AUTOSELECT 0x00000002
258 #define LANCE_MUST_REINIT_RING 0x00000004
259 #define LANCE_MUST_UNRESET 0x00000008
260 #define LANCE_HAS_MISSED_FRAME 0x00000010
270 {0x0000, "LANCE 7990", /* Ancient lance chip. */
272 {0x0003, "PCnet/ISA 79C960", /* 79C960 PCnet/ISA. */
275 {0x2260, "PCnet/ISA+ 79C961", /* 79C961 PCnet/ISA+, Plug-n-Play. */
278 {0x2420, "PCnet/PCI 79C970", /* 79C970 or 79C974 PCnet-SCSI, PCI. */
283 {0x2430, "PCnet32", /* 79C965 PCnet for VL bus. */
286 {0x2621, "PCnet/PCI-II 79C970A", /* 79C970A PCInetPCI II. */
289 {0x0, "PCnet (unknown)",
294 enum {OLD_LANCE = 0, PCNET_ISA=1, PCNET_ISAP=2, PCNET_PCI=3, PCNET_VLB=4, PCNET_PCI_II=5, LANCE_UNK…
322 module_param_hw_array(io, int, ioport, NULL, 0);
323 module_param_hw_array(dma, int, dma, NULL, 0);
324 module_param_hw_array(irq, int, irq, NULL, 0);
325 module_param(lance_debug, int, 0);
329 MODULE_PARM_DESC(lance_debug, "LANCE/PCnet debug level (0-7)");
334 int this_dev, found = 0; in lance_init_module()
336 for (this_dev = 0; this_dev < MAX_CARDS; this_dev++) { in lance_init_module()
337 if (io[this_dev] == 0) { in lance_init_module()
338 if (this_dev != 0) /* only complain once */ in lance_init_module()
340 printk(KERN_NOTICE "lance.c: Module autoprobing not allowed. Append \"io=0xNNN\" value(s).\n"); in lance_init_module()
343 dev = alloc_etherdev(0); in lance_init_module()
349 if (do_lance_probe(dev) == 0) { in lance_init_module()
356 if (found != 0) in lance_init_module()
357 return 0; in lance_init_module()
377 for (this_dev = 0; this_dev < MAX_CARDS; this_dev++) { in lance_cleanup_module()
401 lance_need_isa_bounce_buffers = 0; in do_lance_probe()
412 for (card = 0; card < NUM_CARDS; ++card) in do_lance_probe()
417 for (card = 0; card < NUM_CARDS; ++card) in do_lance_probe()
423 result = lance_probe1(dev, ioaddr, 0, 0); in do_lance_probe()
429 return 0; in do_lance_probe()
441 struct net_device *dev = alloc_etherdev(0); in lance_probe()
478 unsigned char hpJ2405A = 0; /* HP ISA adaptor */ in lance_probe1()
479 int hp_builtin = 0; /* HP on-board ethernet. */ in lance_probe1()
491 bios = ioremap(0xf00f0, 0x14); in lance_probe1()
494 if (readw(bios + 0x12) == 0x5048) { in lance_probe1()
495 static const short ioaddr_table[] = { 0x300, 0x320, 0x340, 0x360}; in lance_probe1()
496 int hp_port = (readl(bios + 1) & 1) ? 0x499 : 0x99; in lance_probe1()
498 if ((inb(hp_port) & 0xc0) == 0x80 && in lance_probe1()
504 hpJ2405A = (inb(ioaddr) == 0x08 && inb(ioaddr+1) == 0x00 && in lance_probe1()
505 inb(ioaddr+2) == 0x09); in lance_probe1()
515 outw(0x0000, ioaddr+LANCE_ADDR); /* Switch to window 0 */ in lance_probe1()
516 if (inw(ioaddr+LANCE_DATA) != 0x0004) in lance_probe1()
522 lance_version = 0; in lance_probe1()
529 if ((chip_version & 0xfff) != 0x003) in lance_probe1()
531 chip_version = (chip_version >> 12) & 0xffff; in lance_probe1()
545 for (i = 0; i < 6; i++) in lance_probe1()
556 if (lance_debug > 6) printk(" (#0x%05lx)", (unsigned long)lp); in lance_probe1()
574 lp->init_block.mode = 0x0003; /* Disable Rx and Tx. */ in lance_probe1()
575 for (i = 0; i < 6; i++) in lance_probe1()
577 lp->init_block.filter[0] = 0x00000000; in lance_probe1()
578 lp->init_block.filter[1] = 0x00000000; in lance_probe1()
579 lp->init_block.rx_ring = ((u32)isa_virt_to_bus(lp->rx_ring) & 0xffffff) | RX_RING_LEN_BITS; in lance_probe1()
580 lp->init_block.tx_ring = ((u32)isa_virt_to_bus(lp->tx_ring) & 0xffffff) | TX_RING_LEN_BITS; in lance_probe1()
582 outw(0x0001, ioaddr+LANCE_ADDR); in lance_probe1()
585 outw(0x0002, ioaddr+LANCE_ADDR); in lance_probe1()
588 outw(0x0000, ioaddr+LANCE_ADDR); in lance_probe1()
595 static const char dma_tbl[4] = {3, 5, 6, 0}; in lance_probe1()
612 dev->dma = bus_info & 0x07; in lance_probe1()
613 dev->irq = (bus_info >> 4) & 0x0F; in lance_probe1()
616 if (dev->mem_start & 0x07) in lance_probe1()
617 dev->dma = dev->mem_start & 0x07; in lance_probe1()
620 if (dev->dma == 0) { in lance_probe1()
623 dma_channels = ((inb(DMA1_STAT_REG) >> 4) & 0x0f) | in lance_probe1()
624 (inb(DMA2_STAT_REG) & 0xf0); in lance_probe1()
629 else if (lance_version != 0) { /* 7990 boards need DMA detection first. */ in lance_probe1()
638 outw(0x0041, ioaddr+LANCE_DATA); in lance_probe1()
649 /* Check for the initialization done bit, 0x0100, which means in lance_probe1()
651 if (inw(ioaddr+LANCE_DATA) & 0x0100) in lance_probe1()
664 for (i = 0; i < 4; i++) { in lance_probe1()
673 outw(0x7f04, ioaddr+LANCE_DATA); /* Clear the memory error bits. */ in lance_probe1()
683 outw(0x0001, ioaddr+LANCE_DATA); in lance_probe1()
684 for (boguscnt = 100; boguscnt > 0; --boguscnt) in lance_probe1()
685 if (inw(ioaddr+LANCE_DATA) & 0x0900) in lance_probe1()
687 if (inw(ioaddr+LANCE_DATA) & 0x0100) { in lance_probe1()
704 if (lance_version == 0 && dev->irq == 0) { in lance_probe1()
710 outw(0x0041, ioaddr+LANCE_DATA); in lance_probe1()
714 if (dev->irq == 0) { in lance_probe1()
724 outw(0x0002, ioaddr+LANCE_ADDR); in lance_probe1()
726 outw(inw(ioaddr+LANCE_BUS_IF) | 0x0002, ioaddr+LANCE_BUS_IF); in lance_probe1()
729 if (lance_debug > 0 && did_version++ == 0) in lance_probe1()
739 return 0; in lance_probe1()
760 if (dev->irq == 0 || in lance_open()
761 request_irq(dev->irq, lance_interrupt, 0, dev->name, dev)) { in lance_open()
781 outw(0, ioaddr+LANCE_RESET); in lance_open()
785 outw(0x0002, ioaddr+LANCE_ADDR); in lance_open()
787 outw(inw(ioaddr+LANCE_BUS_IF) | 0x0002, ioaddr+LANCE_BUS_IF); in lance_open()
799 outw(0x0001, ioaddr+LANCE_ADDR); in lance_open()
801 outw(0x0002, ioaddr+LANCE_ADDR); in lance_open()
804 outw(0x0004, ioaddr+LANCE_ADDR); in lance_open()
805 outw(0x0915, ioaddr+LANCE_DATA); in lance_open()
807 outw(0x0000, ioaddr+LANCE_ADDR); in lance_open()
808 outw(0x0001, ioaddr+LANCE_DATA); in lance_open()
812 i = 0; in lance_open()
814 if (inw(ioaddr+LANCE_DATA) & 0x0100) in lance_open()
817 * We used to clear the InitDone bit, 0x0100, here but Mark Stockton in lance_open()
820 outw(0x0042, ioaddr+LANCE_DATA); in lance_open()
826 return 0; /* Always succeed */ in lance_open()
848 for (i = 0; i < RX_RING_SIZE; i++) { in lance_purge_ring()
851 lp->rx_ring[i].base = 0; /* Not owned by LANCE chip. */ in lance_purge_ring()
855 for (i = 0; i < TX_RING_SIZE; i++) { in lance_purge_ring()
871 lp->cur_rx = lp->cur_tx = 0; in lance_init_ring()
872 lp->dirty_rx = lp->dirty_tx = 0; in lance_init_ring()
874 for (i = 0; i < RX_RING_SIZE; i++) { in lance_init_ring()
885 lp->rx_ring[i].base = 0; in lance_init_ring()
887 lp->rx_ring[i].base = (u32)isa_virt_to_bus(rx_buff) | 0x80000000; in lance_init_ring()
892 for (i = 0; i < TX_RING_SIZE; i++) { in lance_init_ring()
894 lp->tx_ring[i].base = 0; in lance_init_ring()
897 lp->init_block.mode = 0x0000; in lance_init_ring()
898 for (i = 0; i < 6; i++) in lance_init_ring()
900 lp->init_block.filter[0] = 0x00000000; in lance_init_ring()
901 lp->init_block.filter[1] = 0x00000000; in lance_init_ring()
902 lp->init_block.rx_ring = ((u32)isa_virt_to_bus(lp->rx_ring) & 0xffffff) | RX_RING_LEN_BITS; in lance_init_ring()
903 lp->init_block.tx_ring = ((u32)isa_virt_to_bus(lp->tx_ring) & 0xffffff) | TX_RING_LEN_BITS; in lance_init_ring()
916 outw(0x0000, dev->base_addr + LANCE_ADDR); in lance_restart()
926 outw (0, ioaddr + LANCE_ADDR); in lance_tx_timeout()
929 outw (0x0004, ioaddr + LANCE_DATA); in lance_tx_timeout()
937 for (i = 0; i < RX_RING_SIZE; i++) in lance_tx_timeout()
938 printk ("%s %08x %04x %04x", i & 0x3 ? "" : "\n ", in lance_tx_timeout()
941 for (i = 0; i < TX_RING_SIZE; i++) in lance_tx_timeout()
942 printk ("%s %08x %04x %04x", i & 0x3 ? "" : "\n ", in lance_tx_timeout()
948 lance_restart (dev, 0x0043, 1); in lance_tx_timeout()
966 outw(0x0000, ioaddr+LANCE_ADDR); in lance_start_xmit()
969 outw(0x0000, ioaddr+LANCE_DATA); in lance_start_xmit()
992 lp->tx_ring[entry].misc = 0x0000; in lance_start_xmit()
998 if ((u32)isa_virt_to_bus(skb->data) + skb->len > 0x01000000) { in lance_start_xmit()
1004 ((u32)isa_virt_to_bus((lp->tx_bounce_buffs + entry)) & 0xffffff) | 0x83000000; in lance_start_xmit()
1008 lp->tx_ring[entry].base = ((u32)isa_virt_to_bus(skb->data) & 0xffffff) | 0x83000000; in lance_start_xmit()
1013 outw(0x0000, ioaddr+LANCE_ADDR); in lance_start_xmit()
1014 outw(0x0048, ioaddr+LANCE_DATA); in lance_start_xmit()
1037 outw(0x00, dev->base_addr + LANCE_ADDR); in lance_interrupt()
1038 while ((csr0 = inw(dev->base_addr + LANCE_DATA)) & 0x8600 && in lance_interrupt()
1039 --boguscnt >= 0) { in lance_interrupt()
1041 outw(csr0 & ~0x004f, dev->base_addr + LANCE_DATA); in lance_interrupt()
1043 must_restart = 0; in lance_interrupt()
1049 if (csr0 & 0x0400) /* Rx interrupt */ in lance_interrupt()
1052 if (csr0 & 0x0200) { /* Tx-done interrupt */ in lance_interrupt()
1059 if (status < 0) in lance_interrupt()
1062 lp->tx_ring[entry].base = 0; in lance_interrupt()
1064 if (status & 0x40000000) { in lance_interrupt()
1068 if (err_status & 0x0400) in lance_interrupt()
1070 if (err_status & 0x0800) in lance_interrupt()
1072 if (err_status & 0x1000) in lance_interrupt()
1074 if (err_status & 0x4000) { in lance_interrupt()
1084 if (status & 0x18000000) in lance_interrupt()
1116 if (csr0 & 0x4000) in lance_interrupt()
1118 if (csr0 & 0x1000) in lance_interrupt()
1120 if (csr0 & 0x0800) { in lance_interrupt()
1129 outw(0x0000, dev->base_addr + LANCE_ADDR); in lance_interrupt()
1130 outw(0x0004, dev->base_addr + LANCE_DATA); in lance_interrupt()
1131 lance_restart(dev, 0x0002, 0); in lance_interrupt()
1136 outw(0x0000, dev->base_addr + LANCE_ADDR); in lance_interrupt()
1137 outw(0x7940, dev->base_addr + LANCE_DATA); in lance_interrupt()
1156 while (lp->rx_ring[entry].base >= 0) { in lance_rx()
1159 if (status != 0x03) { /* There was an error. */ in lance_rx()
1164 if (status & 0x01) /* Only count a general error at the */ in lance_rx()
1166 if (status & 0x20) in lance_rx()
1168 if (status & 0x10) in lance_rx()
1170 if (status & 0x08) in lance_rx()
1172 if (status & 0x04) in lance_rx()
1174 lp->rx_ring[entry].base &= 0x03ffffff; in lance_rx()
1179 short pkt_len = (lp->rx_ring[entry].msg_length & 0xfff)-4; in lance_rx()
1193 for (i=0; i < RX_RING_SIZE; i++) in lance_rx()
1194 if (lp->rx_ring[(entry+i) & RX_RING_MOD_MASK].base < 0) in lance_rx()
1200 lp->rx_ring[entry].base |= 0x80000000; in lance_rx()
1208 (unsigned char *)isa_bus_to_virt((lp->rx_ring[entry].base & 0x00ffffff)), in lance_rx()
1219 lp->rx_ring[entry].base |= 0x80000000; in lance_rx()
1226 return 0; in lance_rx()
1241 outw(0, ioaddr+LANCE_ADDR); in lance_close()
1249 outw(0x0004, ioaddr+LANCE_DATA); in lance_close()
1261 return 0; in lance_close()
1291 outw(0, ioaddr+LANCE_ADDR); in set_multicast_list()
1292 outw(0x0004, ioaddr+LANCE_DATA); /* Temporarily stop the lance. */ in set_multicast_list()
1296 outw(0x8000, ioaddr+LANCE_DATA); /* Set promiscuous mode */ in set_multicast_list()
1304 memset(multicast_table, (num_addrs == 0) ? 0 : -1, sizeof(multicast_table)); in set_multicast_list()
1305 for (i = 0; i < 4; i++) { in set_multicast_list()
1310 outw(0x0000, ioaddr+LANCE_DATA); /* Unset promiscuous mode */ in set_multicast_list()
1313 lance_restart(dev, 0x0142, 0); /* Resume normal operation */ in set_multicast_list()