744
745 dprintk("ns83820_setup_rx(%p)\n", ndev);
746
747 dev->rx_info.idle = 1;
748 dev->rx_info.next_rx = 0;
749 dev->rx_info.next_rx_desc = dev->rx_info.descs;
750 dev->rx_info.next_empty = 0;
751
752 for (i=0; i<NR_RX_DESC; i++)
753 clear_rx_desc(dev, i);
754
755 writel(0, dev->base + RXDP_HI);
756 writel(dev->rx_info.phy_descs, dev->base + RXDP);
757
758 ret = rx_refill(ndev, GFP_KERNEL);
759 if (!ret) {
760 dprintk("starting receiver\n");
761
762 spin_lock_irq(&dev->rx_info.lock);
763
764 writel(0x0001, dev->base + CCSR);
765 writel(0, dev->base + RFCR);
766 writel(0x7fc00000, dev->base + RFCR);
767 writel(0xffc00000, dev->base + RFCR);
768
769 dev->rx_info.up = 1;
770
771 phy_intr(ndev);
772
773
774 spin_lock_irq(&dev->misc_lock);
775 dev->IMR_cache |= ISR_PHY;
776 dev->IMR_cache |= ISR_RXRCMP;
777
778
779 dev->IMR_cache |= ISR_RXORN;
780 dev->IMR_cache |= ISR_RXSOVR;
781 dev->IMR_cache |= ISR_RXDESC;
782 dev->IMR_cache |= ISR_RXIDLE;
783 dev->IMR_cache |= ISR_TXDESC;
784 dev->IMR_cache |= ISR_TXIDLE;