From ccbdc9e94fc5281450dc06dd47b02d3f5e4c7f7a Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Fri, 9 May 2008 01:11:24 +0200 Subject: [PATCH] Revert "Merge branch '3c527' of /home/malware/rs6000/linux-ppc/" This reverts commit 98aac3e98ea9f98914d940dedb6f2427d72dc7b9. --- drivers/net/3c527.c | 342 +++++----------------------------------------------- 1 file changed, 31 insertions(+), 311 deletions(-) diff --git a/drivers/net/3c527.c b/drivers/net/3c527.c index 608675c4b06..a3af10cc5db 100644 --- a/drivers/net/3c527.c +++ b/drivers/net/3c527.c @@ -112,156 +112,6 @@ DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " Richard Procter > 10) & 0x003FFFFC)); - unsigned long *p_dma_ctrl_end = &p_dma_ctrl[((count-1) >> 12)+1]; - unsigned long iocc_cfg; - unsigned long r25 = ( flags & 0x400 ) ? 3 : 2; - // Keep the lower bits for display - unsigned long addr = daddr; - while ( p_dma_ctrl < p_dma_ctrl_end ) - { - unsigned long desc; - - // Setup a translation (working) for read and write - desc = (addr & ~0x00000FFF) | (channel << 8) | 0xC | /* 4 | */ 3 /* r25 */; -if ( count < 10 * 4096 ) -printk("DMA descriptor for %08lx -> %08lx: %08lx\n", baddr, (unsigned long)addr, desc); - *p_dma_ctrl++ = desc; - addr += (1<<12); - baddr += (1<<12); - // Now we can trash the lower bits - addr &= ~((1<<12)-1); - baddr &= ~((1<<12)-1); - } - - inb(bus_virt_addr+0x400000+0x10); - barrier(); - } -} - -inline unsigned char inb_mca(unsigned long a) -{ - return inb(0xE0000000UL+a); -} - -inline void outb_mca(unsigned char x, unsigned long a) -{ - outb(x, 0xE0000000UL+a); -} - - MODULE_LICENSE("GPL"); /* @@ -575,20 +425,10 @@ static int __init mc32_probe1(struct net_device *dev) /* Retrieve and print the ethernet address. */ for (i = 0; i < 6; i++) { - int bogus_read_count = 0; -unsigned long flags; -local_irq_save(flags); mca_device_write_pos(mdev, 6, i+12); mca_device_write_pos(mdev, 7, 0); -// dev->dev_addr[i] = mca_device_read_pos(mdev,3); - for ( bogus_read_count = 0; - !(dev->dev_addr[i] = mca_device_read_pos(mdev,3)); - bogus_read_count++ ) - udelay(300); -local_irq_restore(flags); - if ( bogus_read_count > 0 ) - printk(KERN_ERR "%d bogus reads while reading %ith byte of mac address\n", bogus_read_count, i); + dev->dev_addr[i] = mca_device_read_pos(mdev,3); } printk(KERN_INFO DRV_NAME ": Address %s", print_mac(mac, dev->dev_addr)); @@ -604,15 +444,15 @@ local_irq_restore(flags); else printk(" : AUI port selected.\n"); - POS=inb_mca(dev->base_addr+HOST_CTRL); + POS=inb(dev->base_addr+HOST_CTRL); POS|=HOST_CTRL_ATTN|HOST_CTRL_RESET; POS&=~HOST_CTRL_INTE; - outb_mca(POS, dev->base_addr+HOST_CTRL); + outb(POS, dev->base_addr+HOST_CTRL); /* Reset adapter */ - udelay(300); + udelay(100); /* Reset off */ POS&=~(HOST_CTRL_ATTN|HOST_CTRL_RESET); - outb_mca(POS, dev->base_addr+HOST_CTRL); + outb(POS, dev->base_addr+HOST_CTRL); udelay(300); @@ -626,7 +466,7 @@ local_irq_restore(flags); } i=0; - base = inb_mca(dev->base_addr); + base = inb(dev->base_addr); while(base == 0xFF) { @@ -638,8 +478,8 @@ local_irq_restore(flags); goto err_exit_irq; } udelay(1000); - if(inb_mca(dev->base_addr+2)&(1<<5)) - base = inb_mca(dev->base_addr); + if(inb(dev->base_addr+2)&(1<<5)) + base = inb(dev->base_addr); } if(base>0) @@ -658,7 +498,7 @@ local_irq_restore(flags); { int n=0; - while(!(inb_mca(dev->base_addr+2)&(1<<5))) + while(!(inb(dev->base_addr+2)&(1<<5))) { n++; udelay(50); @@ -670,19 +510,19 @@ local_irq_restore(flags); } } - base|=(inb_mca(dev->base_addr)<<(8*i)); + base|=(inb(dev->base_addr)<<(8*i)); } - lp->exec_box=mca_bus_to_virt(dev->mem_start+base); + lp->exec_box=isa_bus_to_virt(dev->mem_start+base); base=le16_to_cpu(lp->exec_box->data[1])<<16|le16_to_cpu(lp->exec_box->data[0]); lp->base = dev->mem_start+base; - lp->rx_box=mca_bus_to_virt(lp->base + le16_to_cpu(lp->exec_box->data[2])); - lp->tx_box=mca_bus_to_virt(lp->base + le16_to_cpu(lp->exec_box->data[3])); + lp->rx_box=isa_bus_to_virt(lp->base + le16_to_cpu(lp->exec_box->data[2])); + lp->tx_box=isa_bus_to_virt(lp->base + le16_to_cpu(lp->exec_box->data[3])); - lp->stats = mca_bus_to_virt(lp->base + le16_to_cpu(lp->exec_box->data[5])); + lp->stats = isa_bus_to_virt(lp->base + le16_to_cpu(lp->exec_box->data[5])); /* * Descriptor chains (card relative) @@ -709,14 +549,6 @@ local_irq_restore(flags); dev->watchdog_timeo = HZ*5; /* Board does all the work */ dev->ethtool_ops = &netdev_ethtool_ops; - d_init(9, 2); - d_master(9, 0x2000, 0, 0x03000000, NULL, 0); -memset(dummy_page, 0xAA, sizeof dummy_page); - pDummy = (u8*)((u32)(dummy_page+4095) & ~0xFFFUL); -// for ( i = 0x03000000; i < 0x04000000 ; i+=4096 ) -// d_master(9, 0x2000, i, 4096, NULL, __pa(pDummy)); - - return 0; err_exit_irq: @@ -739,13 +571,7 @@ err_exit_ports: static inline void mc32_ready_poll(struct net_device *dev) { int ioaddr = dev->base_addr; -#if 1 - while(!(inb_mca(ioaddr+HOST_STATUS)&HOST_STATUS_CRR)); -#else - unsigned char status; - while(!((status=inb_mca(ioaddr+HOST_STATUS))&HOST_STATUS_CRR)) - printk("%s: ready_poll %02x\n", dev->name, (int)status); -#endif + while(!(inb(ioaddr+HOST_STATUS)&HOST_STATUS_CRR)); } @@ -781,7 +607,7 @@ static int mc32_command_nowait(struct net_device *dev, u16 cmd, void *data, int /* Send the command */ mc32_ready_poll(dev); - outb_mca(1<<6, ioaddr+HOST_CMD); + outb(1<<6, ioaddr+HOST_CMD); ret = 0; @@ -830,7 +656,7 @@ static int mc32_command(struct net_device *dev, u16 cmd, void *data, int len) barrier(); /* the memcpy forgot the volatile so be sure */ mc32_ready_poll(dev); - outb_mca(1<<6, ioaddr+HOST_CMD); + outb(1<<6, ioaddr+HOST_CMD); wait_for_completion(&lp->execution_cmd); @@ -849,9 +675,6 @@ static int mc32_command(struct net_device *dev, u16 cmd, void *data, int len) mc32_reset_multicast_list(dev); } -#if 0 -printk("send command %04hx: %d\n", cmd, ret); -#endif return ret; } @@ -880,11 +703,11 @@ static void mc32_start_transceiver(struct net_device *dev) { mc32_ready_poll(dev); lp->rx_box->mbox=0; lp->rx_box->data[0]=cpu_to_le16(lp->rx_ring[prev_rx(lp->rx_ring_tail)].p->next); - outb_mca(HOST_CMD_START_RX, ioaddr+HOST_CMD); + outb(HOST_CMD_START_RX, ioaddr+HOST_CMD); mc32_ready_poll(dev); lp->tx_box->mbox=0; - outb_mca(HOST_CMD_RESTRT_TX, ioaddr+HOST_CMD); /* card ignores this on RX restart */ + outb(HOST_CMD_RESTRT_TX, ioaddr+HOST_CMD); /* card ignores this on RX restart */ /* We are not interrupted on start completion */ } @@ -909,12 +732,12 @@ static void mc32_halt_transceiver(struct net_device *dev) mc32_ready_poll(dev); lp->rx_box->mbox=0; - outb_mca(HOST_CMD_SUSPND_RX, ioaddr+HOST_CMD); + outb(HOST_CMD_SUSPND_RX, ioaddr+HOST_CMD); wait_for_completion(&lp->xceiver_cmd); mc32_ready_poll(dev); lp->tx_box->mbox=0; - outb_mca(HOST_CMD_SUSPND_TX, ioaddr+HOST_CMD); + outb(HOST_CMD_SUSPND_TX, ioaddr+HOST_CMD); wait_for_completion(&lp->xceiver_cmd); } @@ -957,18 +780,10 @@ static int mc32_load_rx_ring(struct net_device *dev) } skb_reserve(lp->rx_ring[i].skb, 18); -#if 1 -printk("Setting rx slot %d at %04hx\n", i, rx_base); -#endif - p=mca_bus_to_virt(lp->base+rx_base); + p=isa_bus_to_virt(lp->base+rx_base); p->control=0; -// d_master(9, 0x2000, 0, 1532, NULL, __pa(lp->rx_ring[i].skb->data)); -printk("RX slot %d skb at %08lx\n", i, __pa(lp->rx_ring[i].skb->data)); - d_master(9, 0x6000, __pa(lp->rx_ring[i].skb->data), 1532, NULL, __pa(lp->rx_ring[i].skb->data)); -// p->data=cpu_to_le32(__pa(lp->rx_ring[i].skb->data)); - p->data=cpu_to_le32(0x2000); -// p->data=__pa(lp->rx_ring[i].skb->data); + p->data=cpu_to_le32(isa_virt_to_bus(lp->rx_ring[i].skb->data)); p->status=0; p->length=cpu_to_le16(1532); @@ -1036,10 +851,7 @@ static void mc32_load_tx_ring(struct net_device *dev) for(i=0 ; ibase+tx_base); + p=isa_bus_to_virt(lp->base+tx_base); lp->tx_ring[i].p=p; lp->tx_ring[i].skb=NULL; @@ -1120,9 +932,9 @@ static int mc32_open(struct net_device *dev) * Interrupts enabled */ - regs=inb_mca(ioaddr+HOST_CTRL); + regs=inb(ioaddr+HOST_CTRL); regs|=HOST_CTRL_INTE; - outb_mca(regs, ioaddr+HOST_CTRL); + outb(regs, ioaddr+HOST_CTRL); /* * Send the indications on command @@ -1137,63 +949,6 @@ static int mc32_open(struct net_device *dev) mc32_halt_transceiver(dev); mc32_flush_tx_ring(dev); -#if 0 -/* - * Tried to reset the whole card to get the DMA transfer working. - * But it did not help. Looks like it has to be handle from the - * host side by handling the MCA bus error somehow. Only currently - * there is no idea how to do this. - */ -{ - unsigned char POS; - u32 base; - unsigned long flags; - int i; - - local_irq_save(flags); - - POS=inb_mca(dev->base_addr+HOST_CTRL); - POS|=HOST_CTRL_ATTN|HOST_CTRL_RESET; - POS&=~HOST_CTRL_INTE; - outb_mca(POS, dev->base_addr+HOST_CTRL); - /* Reset adapter */ - udelay(300); - /* Reset off */ - POS&=~(HOST_CTRL_ATTN|HOST_CTRL_RESET); - outb_mca(POS, dev->base_addr+HOST_CTRL); - - udelay(300); - - base = inb_mca(dev->base_addr); - while(base == 0xFF) - { - udelay(1000); - if(inb_mca(dev->base_addr+2)&(1<<5)) - base = inb_mca(dev->base_addr); - } - - base = 0; - for(i=0;i<4;i++) - { - while(!(inb_mca(dev->base_addr+2)&(1<<5))) - udelay(50); - base|=(inb_mca(dev->base_addr)<<(8*i)); - } - - d_init(9, 2); - d_master(9, 0x2000, 0, 0x03000000, NULL, 0); - - local_irq_restore(flags); - - regs=inb_mca(ioaddr+HOST_CTRL); - regs|=HOST_CTRL_INTE; - outb_mca(regs, ioaddr+HOST_CTRL); - - mc32_command(dev, 4, &one, 2); - -} -#endif - /* * Ask card to set up on-card descriptors to our spec */ @@ -1289,19 +1044,12 @@ static int mc32_send_packet(struct sk_buff *skb, struct net_device *dev) volatile struct skb_header *p, *np; -#if 0 -printk("Going to transmit packet\n"); -#endif - netif_stop_queue(dev); - if(atomic_read(&lp->tx_count)==0) { -//printk("No tx slot left\n"); + if(atomic_read(&lp->tx_count)==0) return 1; - } if (skb_padto(skb, ETH_ZLEN)) { -//printk("Could not pad skb to ETH_ZLEN\n"); netif_wake_queue(dev); return 0; } @@ -1312,11 +1060,6 @@ printk("Going to transmit packet\n"); p=lp->tx_ring[head].p; head = next_tx(head); -#if 0 -printk("Using tx slot %u\n", head); -printk("Data addr %08lx -> %08lx\n", (unsigned long)skb->data, (unsigned long)__pa(skb->data)); -printk("Data len %u\n", (unsigned int)skb->len); -#endif /* NP is the buffer we will be loading */ np=lp->tx_ring[head].p; @@ -1325,7 +1068,6 @@ printk("Data len %u\n", (unsigned int)skb->len); lp->tx_ring[head].skb=skb; np->length = cpu_to_le16(unlikely(skb->len < ETH_ZLEN) ? ETH_ZLEN : skb->len); - d_master(9, 0x2000, __pa(skb->data), 1532, NULL, __pa(skb->data)); np->data = cpu_to_le32(__pa(skb->data)); np->status = 0; np->control = CONTROL_EOP | CONTROL_EOL; @@ -1429,7 +1171,6 @@ static void mc32_rx_ring(struct net_device *dev) p=lp->rx_ring[rx_ring_tail].p; if(!(p->status & (1<<7))) { /* Not COMPLETED */ -printk("Receive in slot %d not ready yet\n", (int)rx_ring_tail); break; } if(p->status & (1<<6)) /* COMPLETED_OK */ @@ -1438,9 +1179,6 @@ printk("Receive in slot %d not ready yet\n", (int)rx_ring_tail); struct sk_buff *skb; struct sk_buff *newskb; -printk("Received a frame of size %hu\n", length); - d_master(9, 0x6000, __pa(lp->rx_ring[rx_ring_tail].skb->data), 1532, NULL, __pa(lp->rx_ring[rx_ring_tail].skb->data)); - /* Try to save time by avoiding a copy on big frames */ if ((length > RX_COPYBREAK) @@ -1451,8 +1189,6 @@ printk("Received a frame of size %hu\n", length); skb_reserve(newskb,18); lp->rx_ring[rx_ring_tail].skb=newskb; -printk("new RX slot %d skb at %08lx\n", rx_ring_tail, __pa(lp->rx_ring[rx_ring_tail].skb->data)); - d_master(9, 0x6000, __pa(lp->rx_ring[rx_ring_tail].skb->data), 1532, NULL, __pa(lp->rx_ring[rx_ring_tail].skb->data)); p->data=cpu_to_le32(__pa(newskb->data)); } else @@ -1562,7 +1298,6 @@ static void mc32_tx_ring(struct net_device *dev) /* Packets are sent in order - this is basically a FIFO queue of buffers matching the card ring */ - d_master(9, 0x6000, __pa(lp->rx_ring[t].skb->data), 1532, NULL, __pa(lp->rx_ring[t].skb->data)); lp->net_stats.tx_bytes+=lp->tx_ring[t].skb->len; dev_kfree_skb_irq(lp->tx_ring[t].skb); lp->tx_ring[t].skb=NULL; @@ -1610,19 +1345,14 @@ static irqreturn_t mc32_interrupt(int irq, void *dev_id) /* See whats cooking */ - while((inb_mca(ioaddr+HOST_STATUS)&HOST_STATUS_CWR) && boguscount++<2000) + while((inb(ioaddr+HOST_STATUS)&HOST_STATUS_CWR) && boguscount++<2000) { -#ifdef DEBUG_IRQ - unsigned char st; -#endif - status=inb_mca(ioaddr+HOST_CMD); + status=inb(ioaddr+HOST_CMD); #ifdef DEBUG_IRQ printk("Status TX%d RX%d EX%d OV%d BC%d\n", (status&7), (status>>3)&7, (status>>6)&1, (status>>7)&1, boguscount); -// st=inb_mca(dev->base_addr+HOST_CTRL); -// printk("Status2 %02x\n", (int)st); #endif switch(status&7) @@ -1700,10 +1430,6 @@ static irqreturn_t mc32_interrupt(int irq, void *dev_id) if(rx_event) mc32_rx_ring(dev); - status = *(unsigned long *)(0xB0400060 + (9 << 16)); - ioaddr = *(unsigned long *)(0xB0400060 + (15 << 16)); - printk("CSR=%08x CSR15=%08x\n", status, ioaddr); - return IRQ_HANDLED; } @@ -1757,9 +1483,9 @@ static int mc32_close(struct net_device *dev) /* Ok the card is now stopping */ - regs=inb_mca(ioaddr+HOST_CTRL); + regs=inb(ioaddr+HOST_CTRL); regs&=~HOST_CTRL_INTE; - outb_mca(regs, ioaddr+HOST_CTRL); + outb(regs, ioaddr+HOST_CTRL); mc32_flush_rx_ring(dev); mc32_flush_tx_ring(dev); @@ -1918,10 +1644,6 @@ static const struct ethtool_ops netdev_ethtool_ops = { .set_msglevel = netdev_set_msglevel, }; -//ifdef MODULE - -//static struct net_device *this_device; - /** * init_module - entry point * @@ -1954,8 +1676,6 @@ void __exit mc32_cleanup_module(void) mca_unregister_driver(&mc32_mca_driver); } -//endif /* MODULE */ - module_init(mc32_init_module); module_exit(mc32_cleanup_module); -- 2.11.4.GIT