Lines Matching refs:lp
44 #define WRITERAP(lp, x) out_be16(lp->base + LANCE_RAP, (x)) argument
45 #define WRITERDP(lp, x) out_be16(lp->base + LANCE_RDP, (x)) argument
46 #define READRDP(lp) in_be16(lp->base + LANCE_RDP) argument
58 #define WRITERAP(lp, x) (lp->writerap(lp, x)) argument
59 #define WRITERDP(lp, x) (lp->writerdp(lp, x)) argument
60 #define READRDP(lp) (lp->readrdp(lp)) argument
65 static inline void WRITERAP(struct lance_private *lp, __u16 value) in WRITERAP() argument
68 out_be16(lp->base + HPLANCE_REGOFF + LANCE_RAP, value); in WRITERAP()
69 } while ((in_8(lp->base + HPLANCE_STATUS) & LE_ACK) == 0); in WRITERAP()
72 static inline void WRITERDP(struct lance_private *lp, __u16 value) in WRITERDP() argument
75 out_be16(lp->base + HPLANCE_REGOFF + LANCE_RDP, value); in WRITERDP()
76 } while ((in_8(lp->base + HPLANCE_STATUS) & LE_ACK) == 0); in WRITERDP()
79 static inline __u16 READRDP(struct lance_private *lp) in READRDP() argument
83 value = in_be16(lp->base + HPLANCE_REGOFF + LANCE_RDP); in READRDP()
84 } while ((in_8(lp->base + HPLANCE_STATUS) & LE_ACK) == 0); in READRDP()
115 static void load_csrs(struct lance_private *lp) in load_csrs() argument
117 volatile struct lance_init_block *aib = lp->lance_init_block; in load_csrs()
122 WRITERAP(lp, LE_CSR1); /* load address of init block */ in load_csrs()
123 WRITERDP(lp, leptr & 0xFFFF); in load_csrs()
124 WRITERAP(lp, LE_CSR2); in load_csrs()
125 WRITERDP(lp, leptr >> 16); in load_csrs()
126 WRITERAP(lp, LE_CSR3); in load_csrs()
127 WRITERDP(lp, lp->busmaster_regval); /* set byteswap/ALEctrl/byte ctrl */ in load_csrs()
130 WRITERAP(lp, LE_CSR0); in load_csrs()
138 struct lance_private *lp = netdev_priv(dev); in lance_init_ring() local
139 volatile struct lance_init_block *ib = lp->init_block; in lance_init_ring()
144 aib = lp->lance_init_block; in lance_init_ring()
146 lp->rx_new = lp->tx_new = 0; in lance_init_ring()
147 lp->rx_old = lp->tx_old = 0; in lance_init_ring()
176 lp->tx_full = 0; in lance_init_ring()
178 for (i = 0; i < (1 << lp->lance_log_tx_bufs); i++) { in lance_init_ring()
192 for (i = 0; i < (1 << lp->lance_log_rx_bufs); i++) { in lance_init_ring()
209 ib->rx_len = (lp->lance_log_rx_bufs << 13) | (leptr >> 16); in lance_init_ring()
216 ib->tx_len = (lp->lance_log_tx_bufs << 13) | (leptr >> 16); in lance_init_ring()
228 static int init_restart_lance(struct lance_private *lp) in init_restart_lance() argument
232 WRITERAP(lp, LE_CSR0); in init_restart_lance()
233 WRITERDP(lp, LE_C0_INIT); in init_restart_lance()
238 for (i = 0; (i < 100) && !(READRDP(lp) & (LE_C0_ERR | LE_C0_IDON)); i++) in init_restart_lance()
240 if ((i == 100) || (READRDP(lp) & LE_C0_ERR)) { in init_restart_lance()
241 printk("LANCE unopened after %d ticks, csr0=%4.4x.\n", i, READRDP(lp)); in init_restart_lance()
246 WRITERDP(lp, LE_C0_IDON); in init_restart_lance()
247 WRITERDP(lp, LE_C0_INEA | LE_C0_STRT); in init_restart_lance()
254 struct lance_private *lp = netdev_priv(dev); in lance_reset() local
258 WRITERAP(lp, LE_CSR0); in lance_reset()
259 WRITERDP(lp, LE_C0_STOP); in lance_reset()
261 load_csrs(lp); in lance_reset()
264 status = init_restart_lance(lp); in lance_reset()
273 struct lance_private *lp = netdev_priv(dev); in lance_rx() local
274 volatile struct lance_init_block *ib = lp->init_block; in lance_rx()
284 if (i == lp->rx_new) in lance_rx()
296 WRITERDP(lp, LE_C0_RINT | LE_C0_INEA); /* ack Rx int, reenable ints */ in lance_rx()
297 for (rd = &ib->brx_ring[lp->rx_new]; /* For each Rx ring we own... */ in lance_rx()
299 rd = &ib->brx_ring[lp->rx_new]) { in lance_rx()
328 lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask; in lance_rx()
335 (unsigned char *)&(ib->rx_buf[lp->rx_new][0]), in lance_rx()
346 lp->rx_new = (lp->rx_new + 1) & lp->rx_ring_mod_mask; in lance_rx()
353 struct lance_private *lp = netdev_priv(dev); in lance_tx() local
354 volatile struct lance_init_block *ib = lp->init_block; in lance_tx()
363 WRITERDP(lp, LE_C0_TINT | LE_C0_INEA); in lance_tx()
366 j = lp->tx_old; in lance_tx()
367 for (i = j; i != lp->tx_new; i = j) { in lance_tx()
385 if (lp->auto_select) { in lance_tx()
386 lp->tpe = 1 - lp->tpe; in lance_tx()
389 lp->tpe ? "TPE" : "AUI"); in lance_tx()
391 WRITERAP(lp, LE_CSR0); in lance_tx()
392 WRITERDP(lp, LE_C0_STOP); in lance_tx()
394 load_csrs(lp); in lance_tx()
395 init_restart_lance(lp); in lance_tx()
408 WRITERAP(lp, LE_CSR0); in lance_tx()
409 WRITERDP(lp, LE_C0_STOP); in lance_tx()
411 load_csrs(lp); in lance_tx()
412 init_restart_lance(lp); in lance_tx()
432 j = (j + 1) & lp->tx_ring_mod_mask; in lance_tx()
434 lp->tx_old = j; in lance_tx()
435 WRITERDP(lp, LE_C0_TINT | LE_C0_INEA); in lance_tx()
443 struct lance_private *lp = netdev_priv(dev); in lance_interrupt() local
446 spin_lock(&lp->devlock); in lance_interrupt()
448 WRITERAP(lp, LE_CSR0); /* LANCE Controller Status */ in lance_interrupt()
449 csr0 = READRDP(lp); in lance_interrupt()
454 spin_unlock(&lp->devlock); in lance_interrupt()
459 WRITERDP(lp, csr0 & ~(LE_C0_INEA|LE_C0_TDMD|LE_C0_STOP|LE_C0_STRT|LE_C0_INIT)); in lance_interrupt()
463 WRITERDP(lp, LE_C0_BABL|LE_C0_ERR|LE_C0_MISS|LE_C0_INEA); in lance_interrupt()
481 WRITERDP(lp, LE_C0_STRT); in lance_interrupt()
484 if (lp->tx_full && netif_queue_stopped(dev) && (TX_BUFFS_AVAIL >= 0)) { in lance_interrupt()
485 lp->tx_full = 0; in lance_interrupt()
489 WRITERAP(lp, LE_CSR0); in lance_interrupt()
490 WRITERDP(lp, LE_C0_BABL|LE_C0_CERR|LE_C0_MISS|LE_C0_MERR|LE_C0_IDON|LE_C0_INEA); in lance_interrupt()
492 spin_unlock(&lp->devlock); in lance_interrupt()
498 struct lance_private *lp = netdev_priv(dev); in lance_open() local
502 if (request_irq(lp->irq, lance_interrupt, IRQF_SHARED, lp->name, dev)) in lance_open()
506 spin_lock_init(&lp->devlock); in lance_open()
515 struct lance_private *lp = netdev_priv(dev); in lance_close() local
520 WRITERAP(lp, LE_CSR0); in lance_close()
521 WRITERDP(lp, LE_C0_STOP); in lance_close()
523 free_irq(lp->irq, dev); in lance_close()
540 struct lance_private *lp = netdev_priv(dev); in lance_start_xmit() local
541 volatile struct lance_init_block *ib = lp->init_block; in lance_start_xmit()
566 entry = lp->tx_new & lp->tx_ring_mod_mask; in lance_start_xmit()
576 lp->tx_new = (lp->tx_new + 1) & lp->tx_ring_mod_mask; in lance_start_xmit()
580 WRITERDP(lp, LE_C0_INEA | LE_C0_TDMD); in lance_start_xmit()
583 spin_lock_irqsave(&lp->devlock, flags); in lance_start_xmit()
587 lp->tx_full = 1; in lance_start_xmit()
588 spin_unlock_irqrestore(&lp->devlock, flags); in lance_start_xmit()
597 struct lance_private *lp = netdev_priv(dev); in lance_load_multicast() local
598 volatile struct lance_init_block *ib = lp->init_block; in lance_load_multicast()
624 struct lance_private *lp = netdev_priv(dev); in lance_set_multicast() local
625 volatile struct lance_init_block *ib = lp->init_block; in lance_set_multicast()
632 while (lp->tx_old != lp->tx_new) in lance_set_multicast()
635 WRITERAP(lp, LE_CSR0); in lance_set_multicast()
636 WRITERDP(lp, LE_C0_STOP); in lance_set_multicast()
645 load_csrs(lp); in lance_set_multicast()
646 init_restart_lance(lp); in lance_set_multicast()
656 struct lance_private *lp = netdev_priv(dev); in lance_poll() local
658 spin_lock(&lp->devlock); in lance_poll()
659 WRITERAP(lp, LE_CSR0); in lance_poll()
660 WRITERDP(lp, LE_C0_STRT); in lance_poll()
661 spin_unlock(&lp->devlock); in lance_poll()