• Home
  • Raw
  • Download

Lines Matching refs:lp

273 #define TX_BUFFS_AVAIL ((lp->tx_old<=lp->tx_new)?\
274 lp->tx_old+TX_RING_MOD_MASK-lp->tx_new:\
275 lp->tx_old - lp->tx_new-1)
301 static void load_csrs(struct lance_private *lp) in load_csrs() argument
305 if (lp->pio_buffer) in load_csrs()
308 leptr = LANCE_ADDR(lp->init_block_dvma); in load_csrs()
310 sbus_writew(LE_CSR1, lp->lregs + RAP); in load_csrs()
311 sbus_writew(leptr & 0xffff, lp->lregs + RDP); in load_csrs()
312 sbus_writew(LE_CSR2, lp->lregs + RAP); in load_csrs()
313 sbus_writew(leptr >> 16, lp->lregs + RDP); in load_csrs()
314 sbus_writew(LE_CSR3, lp->lregs + RAP); in load_csrs()
315 sbus_writew(lp->busmaster_regval, lp->lregs + RDP); in load_csrs()
318 sbus_writew(LE_CSR0, lp->lregs + RAP); in load_csrs()
324 struct lance_private *lp = netdev_priv(dev); in lance_init_ring_dvma() local
325 struct lance_init_block *ib = lp->init_block_mem; in lance_init_ring_dvma()
326 dma_addr_t aib = lp->init_block_dvma; in lance_init_ring_dvma()
332 lp->rx_new = lp->tx_new = 0; in lance_init_ring_dvma()
333 lp->rx_old = lp->tx_old = 0; in lance_init_ring_dvma()
381 struct lance_private *lp = netdev_priv(dev); in lance_init_ring_pio() local
382 struct lance_init_block __iomem *ib = lp->init_block_iomem; in lance_init_ring_pio()
388 lp->rx_new = lp->tx_new = 0; in lance_init_ring_pio()
389 lp->rx_old = lp->tx_old = 0; in lance_init_ring_pio()
440 static void init_restart_ledma(struct lance_private *lp) in init_restart_ledma() argument
442 u32 csr = sbus_readl(lp->dregs + DMA_CSR); in init_restart_ledma()
446 while (sbus_readl(lp->dregs + DMA_CSR) & DMA_FIFO_ISDRAIN) in init_restart_ledma()
450 csr = sbus_readl(lp->dregs + DMA_CSR); in init_restart_ledma()
452 if (lp->burst_sizes & DMA_BURST32) in init_restart_ledma()
459 if (lp->tpe) in init_restart_ledma()
464 sbus_writel(csr, lp->dregs + DMA_CSR); in init_restart_ledma()
468 static int init_restart_lance(struct lance_private *lp) in init_restart_lance() argument
473 if (lp->dregs) in init_restart_lance()
474 init_restart_ledma(lp); in init_restart_lance()
476 sbus_writew(LE_CSR0, lp->lregs + RAP); in init_restart_lance()
477 sbus_writew(LE_C0_INIT, lp->lregs + RDP); in init_restart_lance()
481 regval = sbus_readw(lp->lregs + RDP); in init_restart_lance()
490 if (lp->dregs) in init_restart_lance()
491 printk("dcsr=%8.8x\n", sbus_readl(lp->dregs + DMA_CSR)); in init_restart_lance()
496 sbus_writew(LE_C0_IDON, lp->lregs + RDP); in init_restart_lance()
497 sbus_writew(LE_C0_INEA | LE_C0_STRT, lp->lregs + RDP); in init_restart_lance()
499 if (lp->dregs) { in init_restart_lance()
500 u32 csr = sbus_readl(lp->dregs + DMA_CSR); in init_restart_lance()
503 sbus_writel(csr, lp->dregs + DMA_CSR); in init_restart_lance()
511 struct lance_private *lp = netdev_priv(dev); in lance_rx_dvma() local
512 struct lance_init_block *ib = lp->init_block_mem; in lance_rx_dvma()
515 int len, entry = lp->rx_new; in lance_rx_dvma()
545 lp->rx_new = RX_NEXT(entry); in lance_rx_dvma()
567 lp->rx_new = entry; in lance_rx_dvma()
572 struct lance_private *lp = netdev_priv(dev); in lance_tx_dvma() local
573 struct lance_init_block *ib = lp->init_block_mem; in lance_tx_dvma()
576 spin_lock(&lp->lock); in lance_tx_dvma()
578 j = lp->tx_old; in lance_tx_dvma()
579 for (i = j; i != lp->tx_new; i = j) { in lance_tx_dvma()
596 if (lp->auto_select) { in lance_tx_dvma()
597 lp->tpe = 1 - lp->tpe; in lance_tx_dvma()
599 dev->name, lp->tpe?"TPE":"AUI"); in lance_tx_dvma()
600 STOP_LANCE(lp); in lance_tx_dvma()
601 lp->init_ring(dev); in lance_tx_dvma()
602 load_csrs(lp); in lance_tx_dvma()
603 init_restart_lance(lp); in lance_tx_dvma()
616 STOP_LANCE(lp); in lance_tx_dvma()
617 lp->init_ring(dev); in lance_tx_dvma()
618 load_csrs(lp); in lance_tx_dvma()
619 init_restart_lance(lp); in lance_tx_dvma()
641 lp->tx_old = j; in lance_tx_dvma()
647 spin_unlock(&lp->lock); in lance_tx_dvma()
682 struct lance_private *lp = netdev_priv(dev); in lance_rx_pio() local
683 struct lance_init_block __iomem *ib = lp->init_block_iomem; in lance_rx_pio()
689 entry = lp->rx_new; in lance_rx_pio()
717 lp->rx_new = RX_NEXT(entry); in lance_rx_pio()
737 lp->rx_new = entry; in lance_rx_pio()
742 struct lance_private *lp = netdev_priv(dev); in lance_tx_pio() local
743 struct lance_init_block __iomem *ib = lp->init_block_iomem; in lance_tx_pio()
746 spin_lock(&lp->lock); in lance_tx_pio()
748 j = lp->tx_old; in lance_tx_pio()
749 for (i = j; i != lp->tx_new; i = j) { in lance_tx_pio()
766 if (lp->auto_select) { in lance_tx_pio()
767 lp->tpe = 1 - lp->tpe; in lance_tx_pio()
769 dev->name, lp->tpe?"TPE":"AUI"); in lance_tx_pio()
770 STOP_LANCE(lp); in lance_tx_pio()
771 lp->init_ring(dev); in lance_tx_pio()
772 load_csrs(lp); in lance_tx_pio()
773 init_restart_lance(lp); in lance_tx_pio()
786 STOP_LANCE(lp); in lance_tx_pio()
787 lp->init_ring(dev); in lance_tx_pio()
788 load_csrs(lp); in lance_tx_pio()
789 init_restart_lance(lp); in lance_tx_pio()
811 lp->tx_old = j; in lance_tx_pio()
817 spin_unlock(&lp->lock); in lance_tx_pio()
823 struct lance_private *lp = netdev_priv(dev); in lance_interrupt() local
826 sbus_writew(LE_CSR0, lp->lregs + RAP); in lance_interrupt()
827 csr0 = sbus_readw(lp->lregs + RDP); in lance_interrupt()
831 lp->lregs + RDP); in lance_interrupt()
837 lp->lregs + RDP); in lance_interrupt()
841 lp->rx(dev); in lance_interrupt()
844 lp->tx(dev); in lance_interrupt()
853 if (lp->dregs) { in lance_interrupt()
854 u32 addr = sbus_readl(lp->dregs + DMA_ADDR); in lance_interrupt()
863 sbus_writew(LE_C0_STOP, lp->lregs + RDP); in lance_interrupt()
865 if (lp->dregs) { in lance_interrupt()
866 u32 dma_csr = sbus_readl(lp->dregs + DMA_CSR); in lance_interrupt()
869 sbus_writel(dma_csr, lp->dregs + DMA_CSR); in lance_interrupt()
872 lp->init_ring(dev); in lance_interrupt()
873 load_csrs(lp); in lance_interrupt()
874 init_restart_lance(lp); in lance_interrupt()
878 sbus_writew(LE_C0_INEA, lp->lregs + RDP); in lance_interrupt()
884 static void build_fake_packet(struct lance_private *lp) in build_fake_packet() argument
886 struct net_device *dev = lp->dev; in build_fake_packet()
889 entry = lp->tx_new & TX_RING_MOD_MASK; in build_fake_packet()
890 if (lp->pio_buffer) { in build_fake_packet()
891 struct lance_init_block __iomem *ib = lp->init_block_iomem; in build_fake_packet()
904 struct lance_init_block *ib = lp->init_block_mem; in build_fake_packet()
916 lp->tx_new = TX_NEXT(entry); in build_fake_packet()
921 struct lance_private *lp = netdev_priv(dev); in lance_open() local
924 STOP_LANCE(lp); in lance_open()
933 if (lp->dregs) { in lance_open()
934 u32 regval = lp->init_block_dvma & 0xff000000; in lance_open()
936 sbus_writel(regval, lp->dregs + DMA_TEST); in lance_open()
945 if (lp->pio_buffer) { in lance_open()
946 struct lance_init_block __iomem *ib = lp->init_block_iomem; in lance_open()
951 struct lance_init_block *ib = lp->init_block_mem; in lance_open()
957 lp->init_ring(dev); in lance_open()
958 load_csrs(lp); in lance_open()
962 status = init_restart_lance(lp); in lance_open()
963 if (!status && lp->auto_select) { in lance_open()
964 build_fake_packet(lp); in lance_open()
965 sbus_writew(LE_C0_INEA | LE_C0_TDMD, lp->lregs + RDP); in lance_open()
973 struct lance_private *lp = netdev_priv(dev); in lance_close() local
976 del_timer_sync(&lp->multicast_timer); in lance_close()
978 STOP_LANCE(lp); in lance_close()
986 struct lance_private *lp = netdev_priv(dev); in lance_reset() local
989 STOP_LANCE(lp); in lance_reset()
992 if (lp->dregs) { in lance_reset()
996 csr = sbus_readl(lp->dregs + DMA_CSR); in lance_reset()
997 sbus_writel(csr | DMA_RST_ENET, lp->dregs + DMA_CSR); in lance_reset()
999 sbus_writel(csr & ~DMA_RST_ENET, lp->dregs + DMA_CSR); in lance_reset()
1001 addr = lp->init_block_dvma & 0xff000000; in lance_reset()
1002 sbus_writel(addr, lp->dregs + DMA_TEST); in lance_reset()
1004 lp->init_ring(dev); in lance_reset()
1005 load_csrs(lp); in lance_reset()
1007 status = init_restart_lance(lp); in lance_reset()
1107 struct lance_private *lp = netdev_priv(dev); in lance_tx_timeout() local
1110 dev->name, sbus_readw(lp->lregs + RDP)); in lance_tx_timeout()
1117 struct lance_private *lp = netdev_priv(dev); in lance_start_xmit() local
1124 spin_lock_irq(&lp->lock); in lance_start_xmit()
1128 entry = lp->tx_new & TX_RING_MOD_MASK; in lance_start_xmit()
1129 if (lp->pio_buffer) { in lance_start_xmit()
1130 struct lance_init_block __iomem *ib = lp->init_block_iomem; in lance_start_xmit()
1138 struct lance_init_block *ib = lp->init_block_mem; in lance_start_xmit()
1147 lp->tx_new = TX_NEXT(entry); in lance_start_xmit()
1153 sbus_writew(LE_C0_INEA | LE_C0_TDMD, lp->lregs + RDP); in lance_start_xmit()
1158 if (lp->dregs) in lance_start_xmit()
1159 sbus_readw(lp->lregs + RDP); in lance_start_xmit()
1161 spin_unlock_irq(&lp->lock); in lance_start_xmit()
1172 struct lance_private *lp = netdev_priv(dev); in lance_load_multicast() local
1185 if (lp->pio_buffer) { in lance_load_multicast()
1186 struct lance_init_block __iomem *ib = lp->init_block_iomem; in lance_load_multicast()
1190 struct lance_init_block *ib = lp->init_block_mem; in lance_load_multicast()
1208 if (lp->pio_buffer) { in lance_load_multicast()
1209 struct lance_init_block __iomem *ib = lp->init_block_iomem; in lance_load_multicast()
1215 struct lance_init_block *ib = lp->init_block_mem; in lance_load_multicast()
1224 struct lance_private *lp = netdev_priv(dev); in lance_set_multicast() local
1225 struct lance_init_block *ib_mem = lp->init_block_mem; in lance_set_multicast()
1226 struct lance_init_block __iomem *ib_iomem = lp->init_block_iomem; in lance_set_multicast()
1232 if (lp->tx_old != lp->tx_new) { in lance_set_multicast()
1233 mod_timer(&lp->multicast_timer, jiffies + 4); in lance_set_multicast()
1240 STOP_LANCE(lp); in lance_set_multicast()
1241 lp->init_ring(dev); in lance_set_multicast()
1243 if (lp->pio_buffer) in lance_set_multicast()
1249 if (lp->pio_buffer) in lance_set_multicast()
1255 if (lp->pio_buffer) in lance_set_multicast()
1261 load_csrs(lp); in lance_set_multicast()
1262 init_restart_lance(lp); in lance_set_multicast()
1273 static void lance_free_hwresources(struct lance_private *lp) in lance_free_hwresources() argument
1275 if (lp->lregs) in lance_free_hwresources()
1276 of_iounmap(&lp->op->resource[0], lp->lregs, LANCE_REG_SIZE); in lance_free_hwresources()
1277 if (lp->dregs) { in lance_free_hwresources()
1278 struct of_device *ledma = lp->ledma; in lance_free_hwresources()
1280 of_iounmap(&ledma->resource[0], lp->dregs, in lance_free_hwresources()
1283 if (lp->init_block_iomem) { in lance_free_hwresources()
1284 of_iounmap(&lp->lebuffer->resource[0], lp->init_block_iomem, in lance_free_hwresources()
1286 } else if (lp->init_block_mem) { in lance_free_hwresources()
1287 dma_free_coherent(&lp->op->dev, in lance_free_hwresources()
1289 lp->init_block_mem, in lance_free_hwresources()
1290 lp->init_block_dvma); in lance_free_hwresources()
1320 struct lance_private *lp; in sparc_lance_probe_one() local
1328 lp = netdev_priv(dev); in sparc_lance_probe_one()
1333 spin_lock_init(&lp->lock); in sparc_lance_probe_one()
1343 lp->lregs = of_ioremap(&op->resource[0], 0, in sparc_lance_probe_one()
1345 if (!lp->lregs) { in sparc_lance_probe_one()
1350 lp->ledma = ledma; in sparc_lance_probe_one()
1351 if (lp->ledma) { in sparc_lance_probe_one()
1352 lp->dregs = of_ioremap(&ledma->resource[0], 0, in sparc_lance_probe_one()
1355 if (!lp->dregs) { in sparc_lance_probe_one()
1362 lp->op = op; in sparc_lance_probe_one()
1363 lp->lebuffer = lebuffer; in sparc_lance_probe_one()
1370 lp->init_block_iomem = in sparc_lance_probe_one()
1373 if (!lp->init_block_iomem) { in sparc_lance_probe_one()
1377 lp->init_block_dvma = 0; in sparc_lance_probe_one()
1378 lp->pio_buffer = 1; in sparc_lance_probe_one()
1379 lp->init_ring = lance_init_ring_pio; in sparc_lance_probe_one()
1380 lp->rx = lance_rx_pio; in sparc_lance_probe_one()
1381 lp->tx = lance_tx_pio; in sparc_lance_probe_one()
1383 lp->init_block_mem = in sparc_lance_probe_one()
1386 &lp->init_block_dvma, GFP_ATOMIC); in sparc_lance_probe_one()
1387 if (!lp->init_block_mem) { in sparc_lance_probe_one()
1391 lp->pio_buffer = 0; in sparc_lance_probe_one()
1392 lp->init_ring = lance_init_ring_dvma; in sparc_lance_probe_one()
1393 lp->rx = lance_rx_dvma; in sparc_lance_probe_one()
1394 lp->tx = lance_tx_dvma; in sparc_lance_probe_one()
1396 lp->busmaster_regval = of_getintprop_default(dp, "busmaster-regval", in sparc_lance_probe_one()
1401 lp->name = lancestr; in sparc_lance_probe_one()
1403 lp->burst_sizes = 0; in sparc_lance_probe_one()
1404 if (lp->ledma) { in sparc_lance_probe_one()
1412 lp->burst_sizes = of_getintprop_default(ledma_dp, in sparc_lance_probe_one()
1419 lp->burst_sizes &= sbmask; in sparc_lance_probe_one()
1445 lp->auto_select = 1; in sparc_lance_probe_one()
1446 lp->tpe = 0; in sparc_lance_probe_one()
1448 lp->auto_select = 0; in sparc_lance_probe_one()
1449 lp->tpe = 0; in sparc_lance_probe_one()
1451 lp->auto_select = 0; in sparc_lance_probe_one()
1452 lp->tpe = 1; in sparc_lance_probe_one()
1456 csr = sbus_readl(lp->dregs + DMA_CSR); in sparc_lance_probe_one()
1457 sbus_writel(csr | DMA_RST_ENET, lp->dregs + DMA_CSR); in sparc_lance_probe_one()
1459 sbus_writel(csr & ~DMA_RST_ENET, lp->dregs + DMA_CSR); in sparc_lance_probe_one()
1461 lp->dregs = NULL; in sparc_lance_probe_one()
1463 lp->dev = dev; in sparc_lance_probe_one()
1480 init_timer(&lp->multicast_timer); in sparc_lance_probe_one()
1481 lp->multicast_timer.data = (unsigned long) dev; in sparc_lance_probe_one()
1482 lp->multicast_timer.function = &lance_set_multicast_retry; in sparc_lance_probe_one()
1489 dev_set_drvdata(&op->dev, lp); in sparc_lance_probe_one()
1497 lance_free_hwresources(lp); in sparc_lance_probe_one()
1520 struct lance_private *lp = dev_get_drvdata(&op->dev); in sunlance_sbus_remove() local
1521 struct net_device *net_dev = lp->dev; in sunlance_sbus_remove()
1525 lance_free_hwresources(lp); in sunlance_sbus_remove()