bgmac.c (e24bce8fb4c26bd0d8eca74cbbee1ad049246be3) bgmac.c (f3537b3494c06a98a8636c375b6d7a5060c5ac2d)
1/*
2 * Driver for (BCM4706)? GBit MAC core on BCMA bus.
3 *
4 * Copyright (C) 2012 Rafał Miłecki <zajec5@gmail.com>
5 *
6 * Licensed under the GNU/GPL. See COPYING for details.
7 */
8

--- 1466 unchanged lines hidden (view full) ---

1475
1476int bgmac_enet_probe(struct bgmac *bgmac)
1477{
1478 struct net_device *net_dev = bgmac->net_dev;
1479 int err;
1480
1481 net_dev->irq = bgmac->irq;
1482 SET_NETDEV_DEV(net_dev, bgmac->dev);
1/*
2 * Driver for (BCM4706)? GBit MAC core on BCMA bus.
3 *
4 * Copyright (C) 2012 Rafał Miłecki <zajec5@gmail.com>
5 *
6 * Licensed under the GNU/GPL. See COPYING for details.
7 */
8

--- 1466 unchanged lines hidden (view full) ---

1475
1476int bgmac_enet_probe(struct bgmac *bgmac)
1477{
1478 struct net_device *net_dev = bgmac->net_dev;
1479 int err;
1480
1481 net_dev->irq = bgmac->irq;
1482 SET_NETDEV_DEV(net_dev, bgmac->dev);
1483 dev_set_drvdata(bgmac->dev, bgmac);
1483
1484 if (!is_valid_ether_addr(net_dev->dev_addr)) {
1485 dev_err(bgmac->dev, "Invalid MAC addr: %pM\n",
1486 net_dev->dev_addr);
1487 eth_hw_addr_random(net_dev);
1488 dev_warn(bgmac->dev, "Using random MAC: %pM\n",
1489 net_dev->dev_addr);
1490 }

--- 56 unchanged lines hidden (view full) ---

1547 unregister_netdev(bgmac->net_dev);
1548 phy_disconnect(bgmac->net_dev->phydev);
1549 netif_napi_del(&bgmac->napi);
1550 bgmac_dma_free(bgmac);
1551 free_netdev(bgmac->net_dev);
1552}
1553EXPORT_SYMBOL_GPL(bgmac_enet_remove);
1554
1484
1485 if (!is_valid_ether_addr(net_dev->dev_addr)) {
1486 dev_err(bgmac->dev, "Invalid MAC addr: %pM\n",
1487 net_dev->dev_addr);
1488 eth_hw_addr_random(net_dev);
1489 dev_warn(bgmac->dev, "Using random MAC: %pM\n",
1490 net_dev->dev_addr);
1491 }

--- 56 unchanged lines hidden (view full) ---

1548 unregister_netdev(bgmac->net_dev);
1549 phy_disconnect(bgmac->net_dev->phydev);
1550 netif_napi_del(&bgmac->napi);
1551 bgmac_dma_free(bgmac);
1552 free_netdev(bgmac->net_dev);
1553}
1554EXPORT_SYMBOL_GPL(bgmac_enet_remove);
1555
1556int bgmac_enet_suspend(struct bgmac *bgmac)
1557{
1558 if (!netif_running(bgmac->net_dev))
1559 return 0;
1560
1561 phy_stop(bgmac->net_dev->phydev);
1562
1563 netif_stop_queue(bgmac->net_dev);
1564
1565 napi_disable(&bgmac->napi);
1566
1567 netif_tx_lock(bgmac->net_dev);
1568 netif_device_detach(bgmac->net_dev);
1569 netif_tx_unlock(bgmac->net_dev);
1570
1571 bgmac_chip_intrs_off(bgmac);
1572 bgmac_chip_reset(bgmac);
1573 bgmac_dma_cleanup(bgmac);
1574
1575 return 0;
1576}
1577EXPORT_SYMBOL_GPL(bgmac_enet_suspend);
1578
1579int bgmac_enet_resume(struct bgmac *bgmac)
1580{
1581 int rc;
1582
1583 if (!netif_running(bgmac->net_dev))
1584 return 0;
1585
1586 rc = bgmac_dma_init(bgmac);
1587 if (rc)
1588 return rc;
1589
1590 bgmac_chip_init(bgmac);
1591
1592 napi_enable(&bgmac->napi);
1593
1594 netif_tx_lock(bgmac->net_dev);
1595 netif_device_attach(bgmac->net_dev);
1596 netif_tx_unlock(bgmac->net_dev);
1597
1598 netif_start_queue(bgmac->net_dev);
1599
1600 phy_start(bgmac->net_dev->phydev);
1601
1602 return 0;
1603}
1604EXPORT_SYMBOL_GPL(bgmac_enet_resume);
1605
1555MODULE_AUTHOR("Rafał Miłecki");
1556MODULE_LICENSE("GPL");
1606MODULE_AUTHOR("Rafał Miłecki");
1607MODULE_LICENSE("GPL");