Lines Matching +full:phyrst +full:- +full:a +full:- +full:enable
2 natsemi.c: A U-Boot driver for the NatSemi DP8381x series.
3 Author: Mark A. Rakes (mark_rakes@vivato.net)
14 Adapted from a Linux driver which was written by Donald Becker
21 Written/copyright 1999-2001 by Donald Becker.
27 a complete program and may only be used when the entire operating
48 * Initial U-Boot Release. Tested with Netgear FA311 board
61 #define EEPROM_SIZE 0xb /*12 16-bit chunks, or 24 bytes*/
72 Unlike software-only systems, device drivers interact with complex hardware.
92 /* These are from the spec, around page 78... on a separate table. */
129 PhyRst = 0x00000400, enumerator
249 #define bus_to_phys(a) pci_mem_to_phys((pci_dev_t)dev->priv, a) argument
250 #define phys_to_bus(a) pci_phys_to_mem((pci_dev_t)dev->priv, a) argument
255 return le16_to_cpu(*(vu_short *) (addr + dev->iobase)); in INW()
261 return le32_to_cpu(*(vu_long *) (addr + dev->iobase)); in INL()
267 *(vu_short *) ((addr + dev->iobase)) = cpu_to_le16(command); in OUTW()
273 *(vu_long *) ((addr + dev->iobase)) = cpu_to_le32(command); in OUTL()
315 printf("Error: Can not enable MEM access.\n"); in natsemi_initialize()
318 printf("Error: Can not enable Bus Mastering.\n"); in natsemi_initialize()
329 sprintf(dev->name, "dp83815#%d", card_number); in natsemi_initialize()
330 dev->iobase = bus_to_phys(iobase); in natsemi_initialize()
332 printf("natsemi: NatSemi ns8381[56] @ %#x\n", dev->iobase); in natsemi_initialize()
334 dev->priv = (void *) devno; in natsemi_initialize()
335 dev->init = natsemi_init; in natsemi_initialize()
336 dev->halt = natsemi_disable; in natsemi_initialize()
337 dev->send = natsemi_send; in natsemi_initialize()
338 dev->recv = natsemi_poll; in natsemi_initialize()
349 /* natsemi has a non-standard PM control register in natsemi_initialize()
370 dev->enetaddr[i*2] = (eedata << 1) + (prev_eedata >> 15); in natsemi_initialize()
371 dev->enetaddr[i*2+1] = eedata >> 7; in natsemi_initialize()
382 dev->name, (int) INL(dev, BasicStatus), advertising); in natsemi_initialize()
384 dev->name, chip_config & AnegMask ? "enabled, advertise" : in natsemi_initialize()
391 dev->name, chip_config & AnegMask ? "enabled, advertise" : in natsemi_initialize()
396 OUTL(dev, (chip_config | PhyRst), ChipConfig); in natsemi_initialize()
397 /*un-reset phy*/ in natsemi_initialize()
403 * implementations may have PME set to enable WakeOnLan. in natsemi_initialize()
417 access may need a delay. */
429 /* The EEPROM commands include the alway-set leading bit. */
446 dev->iobase + ee_addr, write_cmd, value);
448 /* Shift the write enable command bits out. */
449 for (i = 9; i >= 0; i--) {
462 for (i = 9; i >= 0; i--) {
506 for (i = 10; i >= 0; i--) { in read_eeprom()
530 dev->iobase + ee_addr, read_cmd, retval); in read_eeprom()
567 * implementations may have PME set to enable WakeOnLan. in natsemi_init()
581 printf("%s: Setting TxConfig Register %#08X\n", dev->name, tx_config); in natsemi_init()
582 printf("%s: Setting RxConfig Register %#08X\n", dev->name, rx_config); in natsemi_init()
640 OUTW(dev, dev->enetaddr[i] + (dev->enetaddr[i + 1] << 8), in natsemi_init_rxfilter()
737 printf("%s: Setting %s-duplex based on negotiated link" in natsemi_check_duplex()
738 " capability.\n", dev->name, duplex ? "full" : "half"); in natsemi_check_duplex()
753 * Description: transmits a packet and waits for completion or timeout.
771 /* set the transmit buffer descriptor and enable Transmit State Machine */ in natsemi_send()
792 dev->name, tx_status); in natsemi_send()
810 * Description: checks for a received packet and returns it if found.
818 * Returns (copies) the packet to the array dev->packet.
833 printf("natsemi_poll: got a packet: cur_rx:%d, status:%X\n", in natsemi_poll()
836 length = (rx_status & DSIZE) - CRC_SIZE; in natsemi_poll()
856 /* re-enable the potentially idle receive state machine */ in natsemi_poll()
881 /* Restore PME enable bit */ in natsemi_disable()