Lines Matching refs:lp
267 #define TX_BUFFS_AVAIL ((lp->tx_old<=lp->tx_new)?\
268 lp->tx_old+TX_RING_MOD_MASK-lp->tx_new:\
269 lp->tx_old - lp->tx_new-1)
295 static void load_csrs(struct lance_private *lp)
299 if (lp->pio_buffer)
302 leptr = LANCE_ADDR(lp->init_block_dvma);
304 sbus_writew(LE_CSR1, lp->lregs + RAP);
305 sbus_writew(leptr & 0xffff, lp->lregs + RDP);
306 sbus_writew(LE_CSR2, lp->lregs + RAP);
307 sbus_writew(leptr >> 16, lp->lregs + RDP);
308 sbus_writew(LE_CSR3, lp->lregs + RAP);
309 sbus_writew(lp->busmaster_regval, lp->lregs + RDP);
312 sbus_writew(LE_CSR0, lp->lregs + RAP);
318 struct lance_private *lp = netdev_priv(dev);
319 struct lance_init_block *ib = lp->init_block_mem;
320 dma_addr_t aib = lp->init_block_dvma;
326 lp->rx_new = lp->tx_new = 0;
327 lp->rx_old = lp->tx_old = 0;
375 struct lance_private *lp = netdev_priv(dev);
376 struct lance_init_block __iomem *ib = lp->init_block_iomem;
382 lp->rx_new = lp->tx_new = 0;
383 lp->rx_old = lp->tx_old = 0;
434 static void init_restart_ledma(struct lance_private *lp)
436 u32 csr = sbus_readl(lp->dregs + DMA_CSR);
440 while (sbus_readl(lp->dregs + DMA_CSR) & DMA_FIFO_ISDRAIN)
444 csr = sbus_readl(lp->dregs + DMA_CSR);
446 if (lp->burst_sizes & DMA_BURST32)
453 if (lp->tpe)
458 sbus_writel(csr, lp->dregs + DMA_CSR);
462 static int init_restart_lance(struct lance_private *lp)
467 if (lp->dregs)
468 init_restart_ledma(lp);
470 sbus_writew(LE_CSR0, lp->lregs + RAP);
471 sbus_writew(LE_C0_INIT, lp->lregs + RDP);
475 regval = sbus_readw(lp->lregs + RDP);
484 if (lp->dregs)
485 printk("dcsr=%8.8x\n", sbus_readl(lp->dregs + DMA_CSR));
490 sbus_writew(LE_C0_IDON, lp->lregs + RDP);
491 sbus_writew(LE_C0_INEA | LE_C0_STRT, lp->lregs + RDP);
493 if (lp->dregs) {
494 u32 csr = sbus_readl(lp->dregs + DMA_CSR);
497 sbus_writel(csr, lp->dregs + DMA_CSR);
505 struct lance_private *lp = netdev_priv(dev);
506 struct lance_init_block *ib = lp->init_block_mem;
509 int len, entry = lp->rx_new;
537 lp->rx_new = RX_NEXT(entry);
559 lp->rx_new = entry;
564 struct lance_private *lp = netdev_priv(dev);
565 struct lance_init_block *ib = lp->init_block_mem;
568 spin_lock(&lp->lock);
570 j = lp->tx_old;
571 for (i = j; i != lp->tx_new; i = j) {
588 if (lp->auto_select) {
589 lp->tpe = 1 - lp->tpe;
591 dev->name, lp->tpe?"TPE":"AUI");
592 STOP_LANCE(lp);
593 lp->init_ring(dev);
594 load_csrs(lp);
595 init_restart_lance(lp);
608 STOP_LANCE(lp);
609 lp->init_ring(dev);
610 load_csrs(lp);
611 init_restart_lance(lp);
633 lp->tx_old = j;
639 spin_unlock(&lp->lock);
674 struct lance_private *lp = netdev_priv(dev);
675 struct lance_init_block __iomem *ib = lp->init_block_iomem;
681 entry = lp->rx_new;
707 lp->rx_new = RX_NEXT(entry);
727 lp->rx_new = entry;
732 struct lance_private *lp = netdev_priv(dev);
733 struct lance_init_block __iomem *ib = lp->init_block_iomem;
736 spin_lock(&lp->lock);
738 j = lp->tx_old;
739 for (i = j; i != lp->tx_new; i = j) {
756 if (lp->auto_select) {
757 lp->tpe = 1 - lp->tpe;
759 dev->name, lp->tpe?"TPE":"AUI");
760 STOP_LANCE(lp);
761 lp->init_ring(dev);
762 load_csrs(lp);
763 init_restart_lance(lp);
776 STOP_LANCE(lp);
777 lp->init_ring(dev);
778 load_csrs(lp);
779 init_restart_lance(lp);
801 lp->tx_old = j;
807 spin_unlock(&lp->lock);
813 struct lance_private *lp = netdev_priv(dev);
816 sbus_writew(LE_CSR0, lp->lregs + RAP);
817 csr0 = sbus_readw(lp->lregs + RDP);
821 lp->lregs + RDP);
827 lp->lregs + RDP);
831 lp->rx(dev);
834 lp->tx(dev);
843 if (lp->dregs) {
844 u32 addr = sbus_readl(lp->dregs + DMA_ADDR);
853 sbus_writew(LE_C0_STOP, lp->lregs + RDP);
855 if (lp->dregs) {
856 u32 dma_csr = sbus_readl(lp->dregs + DMA_CSR);
859 sbus_writel(dma_csr, lp->dregs + DMA_CSR);
862 lp->init_ring(dev);
863 load_csrs(lp);
864 init_restart_lance(lp);
868 sbus_writew(LE_C0_INEA, lp->lregs + RDP);
874 static void build_fake_packet(struct lance_private *lp)
876 struct net_device *dev = lp->dev;
879 entry = lp->tx_new & TX_RING_MOD_MASK;
880 if (lp->pio_buffer) {
881 struct lance_init_block __iomem *ib = lp->init_block_iomem;
894 struct lance_init_block *ib = lp->init_block_mem;
906 lp->tx_new = TX_NEXT(entry);
911 struct lance_private *lp = netdev_priv(dev);
914 STOP_LANCE(lp);
923 if (lp->dregs) {
924 u32 regval = lp->init_block_dvma & 0xff000000;
926 sbus_writel(regval, lp->dregs + DMA_TEST);
935 if (lp->pio_buffer) {
936 struct lance_init_block __iomem *ib = lp->init_block_iomem;
941 struct lance_init_block *ib = lp->init_block_mem;
947 lp->init_ring(dev);
948 load_csrs(lp);
952 status = init_restart_lance(lp);
953 if (!status && lp->auto_select) {
954 build_fake_packet(lp);
955 sbus_writew(LE_C0_INEA | LE_C0_TDMD, lp->lregs + RDP);
963 struct lance_private *lp = netdev_priv(dev);
966 timer_delete_sync(&lp->multicast_timer);
968 STOP_LANCE(lp);
976 struct lance_private *lp = netdev_priv(dev);
979 STOP_LANCE(lp);
982 if (lp->dregs) {
986 csr = sbus_readl(lp->dregs + DMA_CSR);
987 sbus_writel(csr | DMA_RST_ENET, lp->dregs + DMA_CSR);
989 sbus_writel(csr & ~DMA_RST_ENET, lp->dregs + DMA_CSR);
991 addr = lp->init_block_dvma & 0xff000000;
992 sbus_writel(addr, lp->dregs + DMA_TEST);
994 lp->init_ring(dev);
995 load_csrs(lp);
997 status = init_restart_lance(lp);
1097 struct lance_private *lp = netdev_priv(dev);
1100 dev->name, sbus_readw(lp->lregs + RDP));
1107 struct lance_private *lp = netdev_priv(dev);
1114 spin_lock_irq(&lp->lock);
1118 entry = lp->tx_new & TX_RING_MOD_MASK;
1119 if (lp->pio_buffer) {
1120 struct lance_init_block __iomem *ib = lp->init_block_iomem;
1128 struct lance_init_block *ib = lp->init_block_mem;
1137 lp->tx_new = TX_NEXT(entry);
1143 sbus_writew(LE_C0_INEA | LE_C0_TDMD, lp->lregs + RDP);
1148 if (lp->dregs)
1149 sbus_readw(lp->lregs + RDP);
1151 spin_unlock_irq(&lp->lock);
1161 struct lance_private *lp = netdev_priv(dev);
1172 if (lp->pio_buffer) {
1173 struct lance_init_block __iomem *ib = lp->init_block_iomem;
1177 struct lance_init_block *ib = lp->init_block_mem;
1189 if (lp->pio_buffer) {
1190 struct lance_init_block __iomem *ib = lp->init_block_iomem;
1196 struct lance_init_block *ib = lp->init_block_mem;
1205 struct lance_private *lp = netdev_priv(dev);
1206 struct lance_init_block *ib_mem = lp->init_block_mem;
1207 struct lance_init_block __iomem *ib_iomem = lp->init_block_iomem;
1213 if (lp->tx_old != lp->tx_new) {
1214 mod_timer(&lp->multicast_timer, jiffies + 4);
1221 STOP_LANCE(lp);
1222 lp->init_ring(dev);
1224 if (lp->pio_buffer)
1230 if (lp->pio_buffer)
1236 if (lp->pio_buffer)
1242 load_csrs(lp);
1243 init_restart_lance(lp);
1249 struct lance_private *lp = timer_container_of(lp, t, multicast_timer);
1250 struct net_device *dev = lp->dev;
1255 static void lance_free_hwresources(struct lance_private *lp)
1257 if (lp->lregs)
1258 of_iounmap(&lp->op->resource[0], lp->lregs, LANCE_REG_SIZE);
1259 if (lp->dregs) {
1260 struct platform_device *ledma = lp->ledma;
1262 of_iounmap(&ledma->resource[0], lp->dregs,
1265 if (lp->init_block_iomem) {
1266 of_iounmap(&lp->lebuffer->resource[0], lp->init_block_iomem,
1268 } else if (lp->init_block_mem) {
1269 dma_free_coherent(&lp->op->dev,
1271 lp->init_block_mem,
1272 lp->init_block_dvma);
1302 struct lance_private *lp;
1309 lp = netdev_priv(dev);
1311 spin_lock_init(&lp->lock);
1320 lp->lregs = of_ioremap(&op->resource[0], 0,
1322 if (!lp->lregs) {
1327 lp->ledma = ledma;
1328 if (lp->ledma) {
1329 lp->dregs = of_ioremap(&ledma->resource[0], 0,
1332 if (!lp->dregs) {
1339 lp->op = op;
1340 lp->lebuffer = lebuffer;
1347 lp->init_block_iomem =
1350 if (!lp->init_block_iomem) {
1354 lp->init_block_dvma = 0;
1355 lp->pio_buffer = 1;
1356 lp->init_ring = lance_init_ring_pio;
1357 lp->rx = lance_rx_pio;
1358 lp->tx = lance_tx_pio;
1360 lp->init_block_mem =
1363 &lp->init_block_dvma, GFP_ATOMIC);
1364 if (!lp->init_block_mem)
1367 lp->pio_buffer = 0;
1368 lp->init_ring = lance_init_ring_dvma;
1369 lp->rx = lance_rx_dvma;
1370 lp->tx = lance_tx_dvma;
1372 lp->busmaster_regval = of_getintprop_default(dp, "busmaster-regval",
1377 lp->name = lancestr;
1379 lp->burst_sizes = 0;
1380 if (lp->ledma) {
1388 lp->burst_sizes = of_getintprop_default(ledma_dp,
1395 lp->burst_sizes &= sbmask;
1423 lp->auto_select = 1;
1424 lp->tpe = 0;
1426 lp->auto_select = 0;
1427 lp->tpe = 0;
1429 lp->auto_select = 0;
1430 lp->tpe = 1;
1434 csr = sbus_readl(lp->dregs + DMA_CSR);
1435 sbus_writel(csr | DMA_RST_ENET, lp->dregs + DMA_CSR);
1437 sbus_writel(csr & ~DMA_RST_ENET, lp->dregs + DMA_CSR);
1439 lp->dregs = NULL;
1441 lp->dev = dev;
1454 timer_setup(&lp->multicast_timer, lance_set_multicast_retry, 0);
1461 platform_set_drvdata(op, lp);
1469 lance_free_hwresources(lp);
1492 struct lance_private *lp = platform_get_drvdata(op);
1493 struct net_device *net_dev = lp->dev;
1497 lance_free_hwresources(lp);