Lines Matching refs:aup
267 struct au1000_private *aup = netdev_priv(dev); in au1000_enable_mac() local
269 spin_lock_irqsave(&aup->lock, flags); in au1000_enable_mac()
271 if (force_reset || (!aup->mac_enabled)) { in au1000_enable_mac()
272 writel(MAC_EN_CLOCK_ENABLE, aup->enable); in au1000_enable_mac()
276 | MAC_EN_CLOCK_ENABLE), aup->enable); in au1000_enable_mac()
280 aup->mac_enabled = 1; in au1000_enable_mac()
283 spin_unlock_irqrestore(&aup->lock, flags); in au1000_enable_mac()
291 struct au1000_private *aup = netdev_priv(dev); in au1000_mdio_read() local
292 u32 *const mii_control_reg = &aup->mac->mii_control; in au1000_mdio_read()
293 u32 *const mii_data_reg = &aup->mac->mii_data; in au1000_mdio_read()
324 struct au1000_private *aup = netdev_priv(dev); in au1000_mdio_write() local
325 u32 *const mii_control_reg = &aup->mac->mii_control; in au1000_mdio_write()
326 u32 *const mii_data_reg = &aup->mac->mii_data; in au1000_mdio_write()
388 struct au1000_private *aup = netdev_priv(dev); in au1000_hard_stop() local
391 netif_dbg(aup, drv, dev, "hard stop\n"); in au1000_hard_stop()
393 reg = readl(&aup->mac->control); in au1000_hard_stop()
395 writel(reg, &aup->mac->control); in au1000_hard_stop()
402 struct au1000_private *aup = netdev_priv(dev); in au1000_enable_rx_tx() local
405 netif_dbg(aup, hw, dev, "enable_rx_tx\n"); in au1000_enable_rx_tx()
407 reg = readl(&aup->mac->control); in au1000_enable_rx_tx()
409 writel(reg, &aup->mac->control); in au1000_enable_rx_tx()
417 struct au1000_private *aup = netdev_priv(dev); in au1000_adjust_link() local
418 struct phy_device *phydev = aup->phy_dev; in au1000_adjust_link()
424 BUG_ON(!aup->phy_dev); in au1000_adjust_link()
426 spin_lock_irqsave(&aup->lock, flags); in au1000_adjust_link()
428 if (phydev->link && (aup->old_speed != phydev->speed)) { in au1000_adjust_link()
441 aup->old_speed = phydev->speed; in au1000_adjust_link()
446 if (phydev->link && (aup->old_duplex != phydev->duplex)) { in au1000_adjust_link()
452 reg = readl(&aup->mac->control); in au1000_adjust_link()
460 writel(reg, &aup->mac->control); in au1000_adjust_link()
465 aup->old_duplex = phydev->duplex; in au1000_adjust_link()
470 if (phydev->link != aup->old_link) { in au1000_adjust_link()
475 aup->old_speed = 0; in au1000_adjust_link()
476 aup->old_duplex = -1; in au1000_adjust_link()
479 aup->old_link = phydev->link; in au1000_adjust_link()
483 spin_unlock_irqrestore(&aup->lock, flags); in au1000_adjust_link()
497 struct au1000_private *const aup = netdev_priv(dev); in au1000_mii_probe() local
501 if (aup->phy_static_config) { in au1000_mii_probe()
502 BUG_ON(aup->mac_id < 0 || aup->mac_id > 1); in au1000_mii_probe()
504 if (aup->phy_addr) in au1000_mii_probe()
505 phydev = aup->mii_bus->phy_map[aup->phy_addr]; in au1000_mii_probe()
515 if (aup->mii_bus->phy_map[phy_addr]) { in au1000_mii_probe()
516 phydev = aup->mii_bus->phy_map[phy_addr]; in au1000_mii_probe()
517 if (!aup->phy_search_highest_addr) in au1000_mii_probe()
522 if (aup->phy1_search_mac0) { in au1000_mii_probe()
524 if (!phydev && (aup->mac_id == 1)) { in au1000_mii_probe()
534 aup->mii_bus->phy_map[phy_addr]; in au1000_mii_probe()
536 if (aup->mac_id == 1) in au1000_mii_probe()
581 aup->old_link = 0; in au1000_mii_probe()
582 aup->old_speed = 0; in au1000_mii_probe()
583 aup->old_duplex = -1; in au1000_mii_probe()
584 aup->phy_dev = phydev; in au1000_mii_probe()
599 static struct db_dest *au1000_GetFreeDB(struct au1000_private *aup) in au1000_GetFreeDB() argument
602 pDB = aup->pDBfree; in au1000_GetFreeDB()
605 aup->pDBfree = pDB->pnext; in au1000_GetFreeDB()
610 void au1000_ReleaseDB(struct au1000_private *aup, struct db_dest *pDB) in au1000_ReleaseDB() argument
612 struct db_dest *pDBfree = aup->pDBfree; in au1000_ReleaseDB()
615 aup->pDBfree = pDB; in au1000_ReleaseDB()
620 struct au1000_private *const aup = netdev_priv(dev); in au1000_reset_mac_unlocked() local
625 writel(MAC_EN_CLOCK_ENABLE, aup->enable); in au1000_reset_mac_unlocked()
628 writel(0, aup->enable); in au1000_reset_mac_unlocked()
632 aup->tx_full = 0; in au1000_reset_mac_unlocked()
635 aup->rx_dma_ring[i]->buff_stat &= ~0xf; in au1000_reset_mac_unlocked()
639 aup->tx_dma_ring[i]->buff_stat &= ~0xf; in au1000_reset_mac_unlocked()
642 aup->mac_enabled = 0; in au1000_reset_mac_unlocked()
648 struct au1000_private *const aup = netdev_priv(dev); in au1000_reset_mac() local
651 netif_dbg(aup, hw, dev, "reset mac, aup %x\n", in au1000_reset_mac()
652 (unsigned)aup); in au1000_reset_mac()
654 spin_lock_irqsave(&aup->lock, flags); in au1000_reset_mac()
658 spin_unlock_irqrestore(&aup->lock, flags); in au1000_reset_mac()
667 au1000_setup_hw_rings(struct au1000_private *aup, void __iomem *tx_base) in au1000_setup_hw_rings() argument
672 aup->rx_dma_ring[i] = (struct rx_dma *) in au1000_setup_hw_rings()
676 aup->tx_dma_ring[i] = (struct tx_dma *) in au1000_setup_hw_rings()
687 struct au1000_private *aup = netdev_priv(dev); in au1000_get_settings() local
689 if (aup->phy_dev) in au1000_get_settings()
690 return phy_ethtool_gset(aup->phy_dev, cmd); in au1000_get_settings()
697 struct au1000_private *aup = netdev_priv(dev); in au1000_set_settings() local
702 if (aup->phy_dev) in au1000_set_settings()
703 return phy_ethtool_sset(aup->phy_dev, cmd); in au1000_set_settings()
711 struct au1000_private *aup = netdev_priv(dev); in au1000_get_drvinfo() local
716 aup->mac_id); in au1000_get_drvinfo()
722 struct au1000_private *aup = netdev_priv(dev); in au1000_set_msglevel() local
723 aup->msg_enable = value; in au1000_set_msglevel()
728 struct au1000_private *aup = netdev_priv(dev); in au1000_get_msglevel() local
729 return aup->msg_enable; in au1000_get_msglevel()
753 struct au1000_private *aup = netdev_priv(dev); in au1000_init() local
758 netif_dbg(aup, hw, dev, "au1000_init\n"); in au1000_init()
763 spin_lock_irqsave(&aup->lock, flags); in au1000_init()
765 writel(0, &aup->mac->control); in au1000_init()
766 aup->tx_head = (aup->tx_dma_ring[0]->buff_stat & 0xC) >> 2; in au1000_init()
767 aup->tx_tail = aup->tx_head; in au1000_init()
768 aup->rx_head = (aup->rx_dma_ring[0]->buff_stat & 0xC) >> 2; in au1000_init()
771 &aup->mac->mac_addr_high); in au1000_init()
774 &aup->mac->mac_addr_low); in au1000_init()
778 aup->rx_dma_ring[i]->buff_stat |= RX_DMA_ENABLE; in au1000_init()
786 if (aup->phy_dev) { in au1000_init()
787 if (aup->phy_dev->link && (DUPLEX_FULL == aup->phy_dev->duplex)) in au1000_init()
795 writel(control, &aup->mac->control); in au1000_init()
796 writel(0x8100, &aup->mac->vlan1_tag); /* activate vlan support */ in au1000_init()
799 spin_unlock_irqrestore(&aup->lock, flags); in au1000_init()
831 struct au1000_private *aup = netdev_priv(dev); in au1000_rx() local
838 netif_dbg(aup, rx_status, dev, "au1000_rx head %d\n", aup->rx_head); in au1000_rx()
840 prxd = aup->rx_dma_ring[aup->rx_head]; in au1000_rx()
844 pDB = aup->rx_db_inuse[aup->rx_head]; in au1000_rx()
887 aup->rx_head = (aup->rx_head + 1) & (NUM_RX_DMA - 1); in au1000_rx()
891 prxd = aup->rx_dma_ring[aup->rx_head]; in au1000_rx()
899 struct au1000_private *aup = netdev_priv(dev); in au1000_update_tx_stats() local
903 if (!aup->phy_dev || (DUPLEX_FULL == aup->phy_dev->duplex)) { in au1000_update_tx_stats()
927 struct au1000_private *aup = netdev_priv(dev); in au1000_tx_ack() local
930 ptxd = aup->tx_dma_ring[aup->tx_tail]; in au1000_tx_ack()
938 aup->tx_tail = (aup->tx_tail + 1) & (NUM_TX_DMA - 1); in au1000_tx_ack()
939 ptxd = aup->tx_dma_ring[aup->tx_tail]; in au1000_tx_ack()
941 if (aup->tx_full) { in au1000_tx_ack()
942 aup->tx_full = 0; in au1000_tx_ack()
965 struct au1000_private *aup = netdev_priv(dev); in au1000_open() local
967 netif_dbg(aup, drv, dev, "open: dev=%p\n", dev); in au1000_open()
983 if (aup->phy_dev) { in au1000_open()
985 aup->phy_dev->state = PHY_CHANGELINK; in au1000_open()
986 phy_start(aup->phy_dev); in au1000_open()
991 netif_dbg(aup, drv, dev, "open: Initialization done.\n"); in au1000_open()
999 struct au1000_private *const aup = netdev_priv(dev); in au1000_close() local
1001 netif_dbg(aup, drv, dev, "close: dev=%p\n", dev); in au1000_close()
1003 if (aup->phy_dev) in au1000_close()
1004 phy_stop(aup->phy_dev); in au1000_close()
1006 spin_lock_irqsave(&aup->lock, flags); in au1000_close()
1015 spin_unlock_irqrestore(&aup->lock, flags); in au1000_close()
1025 struct au1000_private *aup = netdev_priv(dev); in au1000_tx() local
1032 netif_dbg(aup, tx_queued, dev, "tx: aup %x len=%d, data=%p, head %d\n", in au1000_tx()
1033 (unsigned)aup, skb->len, in au1000_tx()
1034 skb->data, aup->tx_head); in au1000_tx()
1036 ptxd = aup->tx_dma_ring[aup->tx_head]; in au1000_tx()
1041 aup->tx_full = 1; in au1000_tx()
1048 if (aup->tx_full) { in au1000_tx()
1049 aup->tx_full = 0; in au1000_tx()
1053 pDB = aup->tx_db_inuse[aup->tx_head]; in au1000_tx()
1069 aup->tx_head = (aup->tx_head + 1) & (NUM_TX_DMA - 1); in au1000_tx()
1088 struct au1000_private *aup = netdev_priv(dev); in au1000_multicast_list() local
1091 netif_dbg(aup, drv, dev, "%s: flags=%x\n", __func__, dev->flags); in au1000_multicast_list()
1092 reg = readl(&aup->mac->control); in au1000_multicast_list()
1108 writel(mc_filter[1], &aup->mac->multi_hash_high); in au1000_multicast_list()
1109 writel(mc_filter[0], &aup->mac->multi_hash_low); in au1000_multicast_list()
1113 writel(reg, &aup->mac->control); in au1000_multicast_list()
1118 struct au1000_private *aup = netdev_priv(dev); in au1000_ioctl() local
1123 if (!aup->phy_dev) in au1000_ioctl()
1126 return phy_mii_ioctl(aup->phy_dev, rq, cmd); in au1000_ioctl()
1143 struct au1000_private *aup = NULL; in au1000_probe() local
1207 aup = netdev_priv(dev); in au1000_probe()
1209 spin_lock_init(&aup->lock); in au1000_probe()
1210 aup->msg_enable = (au1000_debug < 4 ? in au1000_probe()
1216 aup->vaddr = (u32)dma_alloc_noncoherent(NULL, MAX_BUF_SIZE * in au1000_probe()
1218 &aup->dma_addr, 0); in au1000_probe()
1219 if (!aup->vaddr) { in au1000_probe()
1226 aup->mac = (struct mac_reg *) in au1000_probe()
1228 if (!aup->mac) { in au1000_probe()
1235 aup->enable = (u32 *)ioremap_nocache(macen->start, in au1000_probe()
1237 if (!aup->enable) { in au1000_probe()
1242 aup->mac_id = pdev->id; in au1000_probe()
1244 aup->macdma = ioremap_nocache(macdma->start, resource_size(macdma)); in au1000_probe()
1245 if (!aup->macdma) { in au1000_probe()
1251 au1000_setup_hw_rings(aup, aup->macdma); in au1000_probe()
1253 writel(0, aup->enable); in au1000_probe()
1254 aup->mac_enabled = 0; in au1000_probe()
1260 aup->phy1_search_mac0 = 1; in au1000_probe()
1269 aup->phy_static_config = pd->phy_static_config; in au1000_probe()
1270 aup->phy_search_highest_addr = pd->phy_search_highest_addr; in au1000_probe()
1271 aup->phy1_search_mac0 = pd->phy1_search_mac0; in au1000_probe()
1272 aup->phy_addr = pd->phy_addr; in au1000_probe()
1273 aup->phy_busid = pd->phy_busid; in au1000_probe()
1274 aup->phy_irq = pd->phy_irq; in au1000_probe()
1277 if (aup->phy_busid && aup->phy_busid > 0) { in au1000_probe()
1283 aup->mii_bus = mdiobus_alloc(); in au1000_probe()
1284 if (aup->mii_bus == NULL) { in au1000_probe()
1290 aup->mii_bus->priv = dev; in au1000_probe()
1291 aup->mii_bus->read = au1000_mdiobus_read; in au1000_probe()
1292 aup->mii_bus->write = au1000_mdiobus_write; in au1000_probe()
1293 aup->mii_bus->reset = au1000_mdiobus_reset; in au1000_probe()
1294 aup->mii_bus->name = "au1000_eth_mii"; in au1000_probe()
1295 snprintf(aup->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x", in au1000_probe()
1296 pdev->name, aup->mac_id); in au1000_probe()
1297 aup->mii_bus->irq = kmalloc(sizeof(int)*PHY_MAX_ADDR, GFP_KERNEL); in au1000_probe()
1298 if (aup->mii_bus->irq == NULL) { in au1000_probe()
1304 aup->mii_bus->irq[i] = PHY_POLL; in au1000_probe()
1306 if (aup->phy_static_config) in au1000_probe()
1307 if (aup->phy_irq && aup->phy_busid == aup->mac_id) in au1000_probe()
1308 aup->mii_bus->irq[aup->phy_addr] = aup->phy_irq; in au1000_probe()
1310 err = mdiobus_register(aup->mii_bus); in au1000_probe()
1322 pDB = aup->db; in au1000_probe()
1326 pDB->vaddr = (u32 *)((unsigned)aup->vaddr + MAX_BUF_SIZE*i); in au1000_probe()
1330 aup->pDBfree = pDBfree; in au1000_probe()
1334 pDB = au1000_GetFreeDB(aup); in au1000_probe()
1338 aup->rx_dma_ring[i]->buff_stat = (unsigned)pDB->dma_addr; in au1000_probe()
1339 aup->rx_db_inuse[i] = pDB; in au1000_probe()
1344 pDB = au1000_GetFreeDB(aup); in au1000_probe()
1348 aup->tx_dma_ring[i]->buff_stat = (unsigned)pDB->dma_addr; in au1000_probe()
1349 aup->tx_dma_ring[i]->len = 0; in au1000_probe()
1350 aup->tx_db_inuse[i] = pDB; in au1000_probe()
1379 if (aup->mii_bus != NULL) in au1000_probe()
1380 mdiobus_unregister(aup->mii_bus); in au1000_probe()
1388 if (aup->rx_db_inuse[i]) in au1000_probe()
1389 au1000_ReleaseDB(aup, aup->rx_db_inuse[i]); in au1000_probe()
1392 if (aup->tx_db_inuse[i]) in au1000_probe()
1393 au1000_ReleaseDB(aup, aup->tx_db_inuse[i]); in au1000_probe()
1396 mdiobus_free(aup->mii_bus); in au1000_probe()
1398 iounmap(aup->macdma); in au1000_probe()
1400 iounmap(aup->enable); in au1000_probe()
1402 iounmap(aup->mac); in au1000_probe()
1405 (void *)aup->vaddr, aup->dma_addr); in au1000_probe()
1421 struct au1000_private *aup = netdev_priv(dev); in au1000_remove() local
1426 mdiobus_unregister(aup->mii_bus); in au1000_remove()
1427 mdiobus_free(aup->mii_bus); in au1000_remove()
1430 if (aup->rx_db_inuse[i]) in au1000_remove()
1431 au1000_ReleaseDB(aup, aup->rx_db_inuse[i]); in au1000_remove()
1434 if (aup->tx_db_inuse[i]) in au1000_remove()
1435 au1000_ReleaseDB(aup, aup->tx_db_inuse[i]); in au1000_remove()
1439 (void *)aup->vaddr, aup->dma_addr); in au1000_remove()
1441 iounmap(aup->macdma); in au1000_remove()
1442 iounmap(aup->mac); in au1000_remove()
1443 iounmap(aup->enable); in au1000_remove()