Lines Matching refs:nic
479 static int mdio_read(struct nic *nic, int phy_id, int location);
480 static void mdio_write(struct nic *nic, int phy_id, int location, int value);
482 static void parse_eeprom(struct nic *nic);
484 static void tulip_init_ring(struct nic *nic);
485 static void tulip_reset(struct nic *nic);
486 static void tulip_transmit(struct nic *nic, const char *d, unsigned int t,
488 static int tulip_poll(struct nic *nic, int retrieve);
490 static void nway_start(struct nic *nic);
491 static void pnic_do_nway(struct nic *nic);
492 static void select_media(struct nic *nic, int startup);
493 static void init_media(struct nic *nic);
494 static void start_link(struct nic *nic);
495 static int tulip_check_duplex(struct nic *nic);
566 int mdio_read(struct nic *nic __unused, int phy_id, int location) in mdio_read()
627 void mdio_write(struct nic *nic __unused, int phy_id, int location, int value) in mdio_write()
730 static void parse_eeprom(struct nic *nic) in parse_eeprom() argument
749 if (nic->node_addr[0] == eeprom_fixups[i].addr0 in parse_eeprom()
750 && nic->node_addr[1] == eeprom_fixups[i].addr1 in parse_eeprom()
751 && nic->node_addr[2] == eeprom_fixups[i].addr2) { in parse_eeprom()
752 if (nic->node_addr[2] == 0xE8 && ee_data[0x1a] == 0x55) in parse_eeprom()
897 static void tulip_init_ring(struct nic *nic __unused) in tulip_init_ring()
934 static void set_rx_mode(struct nic *nic __unused) { in set_rx_mode()
952 static void tulip_reset(struct nic *nic) in tulip_reset() argument
980 tulip_init_ring(nic); in tulip_reset()
983 u32 addr_high = (nic->node_addr[1]<<8) + (nic->node_addr[0]<<0); in tulip_reset()
985 outl((nic->node_addr[5]<<8) + nic->node_addr[4] + in tulip_reset()
986 (nic->node_addr[3]<<24) + (nic->node_addr[2]<<16), in tulip_reset()
993 u32 addr_low = cpu_to_le32(get_unaligned((u32 *)nic->node_addr)); in tulip_reset()
994 u32 addr_high = cpu_to_le32(get_unaligned((u16 *)(nic->node_addr+4))); in tulip_reset()
1021 txb[0] = nic->node_addr[0]; in tulip_reset()
1022 txb[1] = nic->node_addr[1]; in tulip_reset()
1023 txb[4] = nic->node_addr[2]; in tulip_reset()
1024 txb[5] = nic->node_addr[3]; in tulip_reset()
1025 txb[8] = nic->node_addr[4]; in tulip_reset()
1026 txb[9] = nic->node_addr[5]; in tulip_reset()
1037 init_media(nic); in tulip_reset()
1059 tulip_check_duplex(nic); in tulip_reset()
1061 set_rx_mode(nic); in tulip_reset()
1070 static void tulip_transmit(struct nic *nic, const char *d, unsigned int t, in tulip_transmit() argument
1085 memcpy(txb + ETH_ALEN, nic->node_addr, ETH_ALEN); in tulip_transmit()
1130 static int tulip_poll(struct nic *nic, int retrieve) in tulip_poll() argument
1147 nic->packetlen = (rx_ring[tp->cur_rx].status & 0x3FFF0000) >> 16; in tulip_poll()
1158 memcpy(nic->packet, rxb + tp->cur_rx * BUFLEN, nic->packetlen); in tulip_poll()
1172 struct nic *nic = (struct nic *)dev; in tulip_disable() local
1178 tulip_reset(nic); in tulip_disable()
1193 static void tulip_irq(struct nic *nic __unused, irq_action_t action __unused) in tulip_irq()
1210 struct nic *nic = (struct nic *)dev; in tulip_probe() local
1222 nic->ioaddr = pci->ioaddr & ~3; in tulip_probe()
1223 nic->irqno = 0; in tulip_probe()
1321 nic->node_addr[i] = value; in tulip_probe()
1331 put_unaligned(le16_to_cpu(value), ((u16*)nic->node_addr) + i); in tulip_probe()
1336 put_unaligned(inl(ioaddr + 0xA4), (u32 *)nic->node_addr); in tulip_probe()
1337 put_unaligned(inl(ioaddr + 0xA8), (u16 *)(nic->node_addr + 4)); in tulip_probe()
1339 sum += nic->node_addr[i]; in tulip_probe()
1359 nic->node_addr[i] = ee_data[i + sa_offset]; in tulip_probe()
1364 if ((nic->node_addr[0] == 0xA0 || nic->node_addr[0] == 0xC0) in tulip_probe()
1365 && nic->node_addr[1] == 0x00) in tulip_probe()
1367 char tmp = nic->node_addr[i]; in tulip_probe()
1368 nic->node_addr[i] = nic->node_addr[i+1]; in tulip_probe()
1369 nic->node_addr[i+1] = tmp; in tulip_probe()
1375 nic->node_addr[i] = last_phys_addr[i]; in tulip_probe()
1376 nic->node_addr[i] = last_phys_addr[i] + 1; in tulip_probe()
1380 last_phys_addr[i] = nic->node_addr[i]; in tulip_probe()
1382 printf("%s: %! at ioaddr %hX\n", tp->nic_name, nic->node_addr, ioaddr); in tulip_probe()
1405 parse_eeprom(nic); in tulip_probe()
1408 start_link(nic); in tulip_probe()
1411 tulip_reset(nic); in tulip_probe()
1414 nic->poll = tulip_poll; in tulip_probe()
1415 nic->transmit = tulip_transmit; in tulip_probe()
1416 nic->irq = tulip_irq; in tulip_probe()
1424 static void start_link(struct nic *nic) in start_link() argument
1441 select_media(nic, 2); in start_link()
1450 int mii_status = mdio_read(nic, phy, 1); in start_link()
1453 int mii_reg0 = mdio_read(nic, phy, 0); in start_link()
1454 int mii_advert = mdio_read(nic, phy, 4); in start_link()
1471 mdio_write(nic, phy, 4, to_advert); in start_link()
1474 mdio_write(nic, phy, 0, mii_reg0 | in start_link()
1515 nway_start(nic); in start_link()
1543 static void nway_start(struct nic *nic __unused) in nway_start()
1579 static void init_media(struct nic *nic) in init_media() argument
1631 select_media(nic, 1); in init_media()
1637 nway_start(nic); in init_media()
1641 select_media(nic, 1); in init_media()
1645 tp->nic_name, tp->phys[0], mdio_read(nic, tp->phys[0], 1)); in init_media()
1653 nway_start(nic); in init_media()
1656 nway_start(nic); in init_media()
1664 pnic_do_nway(nic); in init_media()
1693 select_media(nic, 1); in init_media()
1697 static void pnic_do_nway(struct nic *nic __unused) in pnic_do_nway()
1734 static void select_media(struct nic *nic, int startup) in select_media() argument
1863 mdio_write(nic, tp->phys[phy_num], 4, tp->mii_advertise); in select_media()
1969 static int tulip_check_duplex(struct nic *nic) in tulip_check_duplex() argument
1973 bmsr = mdio_read(nic, tp->phys[0], 1); in tulip_check_duplex()
1974 lpa = mdio_read(nic, tp->phys[0], 5); in tulip_check_duplex()
1985 int new_bmsr = mdio_read(nic, tp->phys[0], 1); in tulip_check_duplex()