Lines Matching refs:dev

250 static int mdio_read(struct eth_device *dev, int phy_id, int addr);
251 static void mdio_write(struct eth_device *dev, int phy_id, int addr, int value);
252 static void mdio_sync(struct eth_device *dev, u32 offset);
253 static int ns8382x_init(struct eth_device *dev, bd_t * bis);
254 static void ns8382x_reset(struct eth_device *dev);
255 static void ns8382x_init_rxfilter(struct eth_device *dev);
256 static void ns8382x_init_txd(struct eth_device *dev);
257 static void ns8382x_init_rxd(struct eth_device *dev);
258 static void ns8382x_set_rx_mode(struct eth_device *dev);
259 static void ns8382x_check_duplex(struct eth_device *dev);
260 static int ns8382x_send(struct eth_device *dev, void *packet, int length);
261 static int ns8382x_poll(struct eth_device *dev);
262 static void ns8382x_disable(struct eth_device *dev);
269 #define bus_to_phys(a) pci_mem_to_phys((pci_dev_t)dev->priv, a)
270 #define phys_to_bus(a) pci_phys_to_mem((pci_dev_t)dev->priv, a)
273 INW(struct eth_device *dev, u_long addr) in INW() argument
275 return le16_to_cpu(*(vu_short *) (addr + dev->iobase)); in INW()
279 INL(struct eth_device *dev, u_long addr) in INL() argument
281 return le32_to_cpu(*(vu_long *) (addr + dev->iobase)); in INL()
285 OUTW(struct eth_device *dev, int command, u_long addr) in OUTW() argument
287 *(vu_short *) ((addr + dev->iobase)) = cpu_to_le16(command); in OUTW()
291 OUTL(struct eth_device *dev, int command, u_long addr) in OUTL() argument
293 *(vu_long *) ((addr + dev->iobase)) = cpu_to_le32(command); in OUTL()
309 struct eth_device *dev; in ns8382x_initialize() local
338 dev = (struct eth_device *) malloc(sizeof *dev); in ns8382x_initialize()
339 if (!dev) { in ns8382x_initialize()
343 memset(dev, 0, sizeof(*dev)); in ns8382x_initialize()
345 sprintf(dev->name, "dp8382x#%d", card_number); in ns8382x_initialize()
346 dev->iobase = bus_to_phys(iobase); in ns8382x_initialize()
347 dev->priv = (void *) devno; in ns8382x_initialize()
348 dev->init = ns8382x_init; in ns8382x_initialize()
349 dev->halt = ns8382x_disable; in ns8382x_initialize()
350 dev->send = ns8382x_send; in ns8382x_initialize()
351 dev->recv = ns8382x_poll; in ns8382x_initialize()
365 char *mac = (char *)&dev->enetaddr[i * 2]; in ns8382x_initialize()
367 OUTL(dev, i * 2, RxFilterAddr); in ns8382x_initialize()
368 data = INL(dev, RxFilterData); in ns8382x_initialize()
376 phy1 = mdio_read(dev, phyAddress, PHYIDR1); in ns8382x_initialize()
378 rev = mdio_read(dev, phyAddress, PHYIDR2); in ns8382x_initialize()
390 mdio_write(dev, phyAddress, KTCR, in ns8382x_initialize()
392 mdio_write(dev, phyAddress, ANAR, in ns8382x_initialize()
395 mdio_write(dev, phyAddress, BMCR, 0x0); /*restore */ in ns8382x_initialize()
396 mdio_write(dev, phyAddress, BMCR, in ns8382x_initialize()
399 OUTL(dev, (ChipReset), ChipCmd); in ns8382x_initialize()
401 chip_config = INL(dev, ChipConfig); in ns8382x_initialize()
403 OUTL(dev, (chip_config | PhyRst), ChipConfig); in ns8382x_initialize()
405 OUTL(dev, (chip_config & ~(PhyDis)), ChipConfig); in ns8382x_initialize()
407 mdio_sync(dev, EECtrl); in ns8382x_initialize()
411 INL(dev, ChipConfig) ^ SpeedStatus_Polarity; in ns8382x_initialize()
413 debug("%s: Transceiver 10%s %s duplex.\n", dev->name, in ns8382x_initialize()
417 debug("%s: %02x:%02x:%02x:%02x:%02x:%02x\n", dev->name, in ns8382x_initialize()
418 dev->enetaddr[0], dev->enetaddr[1], in ns8382x_initialize()
419 dev->enetaddr[2], dev->enetaddr[3], in ns8382x_initialize()
420 dev->enetaddr[4], dev->enetaddr[5]); in ns8382x_initialize()
429 SavedClkRun = INL(dev, ClkRun); in ns8382x_initialize()
430 OUTL(dev, SavedClkRun & ~0x100, ClkRun); in ns8382x_initialize()
432 eth_register(dev); in ns8382x_initialize()
449 #define mdio_delay(mdio_addr) INL(dev, mdio_addr)
458 mdio_sync(struct eth_device *dev, u32 offset) in mdio_sync() argument
464 OUTL(dev, MDIO_WRITE1, offset); in mdio_sync()
466 OUTL(dev, MDIO_WRITE1 | MDIO_ShiftClk, offset); in mdio_sync()
472 mdio_read(struct eth_device *dev, int phy_id, int addr) in mdio_read() argument
481 OUTL(dev, dataval, EECtrl); in mdio_read()
483 OUTL(dev, dataval | MDIO_ShiftClk, EECtrl); in mdio_read()
488 OUTL(dev, MDIO_EnbIn, EECtrl); in mdio_read()
491 (retval << 1) | ((INL(dev, EECtrl) & MDIO_Data) ? 1 : 0); in mdio_read()
492 OUTL(dev, MDIO_EnbIn | MDIO_ShiftClk, EECtrl); in mdio_read()
499 mdio_write(struct eth_device *dev, int phy_id, int addr, int value) in mdio_write() argument
508 OUTL(dev, dataval, EECtrl); in mdio_write()
510 OUTL(dev, dataval | MDIO_ShiftClk, EECtrl); in mdio_write()
515 OUTL(dev, MDIO_EnbIn, EECtrl); in mdio_write()
517 OUTL(dev, MDIO_EnbIn | MDIO_ShiftClk, EECtrl); in mdio_write()
531 ns8382x_init(struct eth_device *dev, bd_t * bis) in ns8382x_init() argument
535 ns8382x_reset(dev); in ns8382x_init()
543 OUTL(dev, SavedClkRun & ~0x100, ClkRun); in ns8382x_init()
545 ns8382x_init_rxfilter(dev); in ns8382x_init()
546 ns8382x_init_txd(dev); in ns8382x_init()
547 ns8382x_init_rxd(dev); in ns8382x_init()
550 config = INL(dev, ChipConfig); in ns8382x_init()
554 OUTL(dev, config, ChipConfig); in ns8382x_init()
561 debug("%s: Setting TxConfig Register %#08X\n", dev->name, tx_config); in ns8382x_init()
562 debug("%s: Setting RxConfig Register %#08X\n", dev->name, rx_config); in ns8382x_init()
564 OUTL(dev, tx_config, TxConfig); in ns8382x_init()
565 OUTL(dev, rx_config, RxConfig); in ns8382x_init()
568 OUTL(dev, 0x0, PriQueue); in ns8382x_init()
570 ns8382x_check_duplex(dev); in ns8382x_init()
571 ns8382x_set_rx_mode(dev); in ns8382x_init()
573 OUTL(dev, (RxOn | TxOn), ChipCmd); in ns8382x_init()
583 ns8382x_reset(struct eth_device *dev) in ns8382x_reset() argument
585 OUTL(dev, ChipReset, ChipCmd); in ns8382x_reset()
586 while (INL(dev, ChipCmd)) in ns8382x_reset()
588 OUTL(dev, 0, IntrMask); in ns8382x_reset()
589 OUTL(dev, 0, IntrEnable); in ns8382x_reset()
599 ns8382x_init_rxfilter(struct eth_device *dev) in ns8382x_init_rxfilter() argument
604 OUTL(dev, i, RxFilterAddr); in ns8382x_init_rxfilter()
605 OUTW(dev, dev->enetaddr[i] + (dev->enetaddr[i + 1] << 8), in ns8382x_init_rxfilter()
617 ns8382x_init_txd(struct eth_device *dev) in ns8382x_init_txd() argument
624 OUTL(dev, 0x0, TxRingPtrHi); in ns8382x_init_txd()
625 OUTL(dev, phys_to_bus((u32)&txd), TxRingPtr); in ns8382x_init_txd()
628 INL(dev, TxRingPtr), &txd); in ns8382x_init_txd()
638 ns8382x_init_rxd(struct eth_device *dev) in ns8382x_init_rxd() argument
642 OUTL(dev, 0x0, RxRingPtrHi); in ns8382x_init_rxd()
660 OUTL(dev, phys_to_bus((u32) & rxd), RxRingPtr); in ns8382x_init_rxd()
663 INL(dev, RxRingPtr)); in ns8382x_init_rxd()
675 ns8382x_set_rx_mode(struct eth_device *dev) in ns8382x_set_rx_mode() argument
683 OUTL(dev, rx_mode, RxFilterAddr); in ns8382x_set_rx_mode()
691 ns8382x_check_duplex(struct eth_device *dev) in ns8382x_check_duplex() argument
696 int config = (INL(dev, ChipConfig) ^ SpeedStatus_Polarity); in ns8382x_check_duplex()
703 " capability.\n", dev->name, (gig) ? "00" : (hun) ? "0" : "", in ns8382x_check_duplex()
714 debug("%s: Resetting TxConfig Register %#08X\n", dev->name, tx_config); in ns8382x_check_duplex()
715 debug("%s: Resetting RxConfig Register %#08X\n", dev->name, rx_config); in ns8382x_check_duplex()
717 OUTL(dev, tx_config, TxConfig); in ns8382x_check_duplex()
718 OUTL(dev, rx_config, RxConfig); in ns8382x_check_duplex()
722 config = INL(dev, ChipConfig); in ns8382x_check_duplex()
728 debug("%s: %setting Mode1000\n", dev->name, (gig) ? "S" : "Uns"); in ns8382x_check_duplex()
730 OUTL(dev, config, ChipConfig); in ns8382x_check_duplex()
736 static int ns8382x_send(struct eth_device *dev, void *packet, int length) in ns8382x_send() argument
742 OUTL(dev, TxOff, ChipCmd); in ns8382x_send()
753 OUTL(dev, phys_to_bus((u32) & txd), TxRingPtr); in ns8382x_send()
756 INL(dev, TxRingPtr)); in ns8382x_send()
762 OUTL(dev, TxOn, ChipCmd); in ns8382x_send()
767 dev->name, tx_stat); in ns8382x_send()
795 ns8382x_poll(struct eth_device *dev) in ns8382x_poll() argument
829 OUTL(dev, RxOn, ChipCmd); in ns8382x_poll()
841 ns8382x_disable(struct eth_device *dev) in ns8382x_disable() argument
844 OUTL(dev, 0, IntrMask); in ns8382x_disable()
845 OUTL(dev, 0, IntrEnable); in ns8382x_disable()
848 OUTL(dev, (RxOff | TxOff), ChipCmd); in ns8382x_disable()
851 OUTL(dev, SavedClkRun, ClkRun); in ns8382x_disable()