diff options
author | Iyappan Subramanian <isubramanian@apm.com> | 2017-03-21 18:18:02 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-03-22 19:17:13 -0700 |
commit | ea8ab16ab225a62bb4c4041f7f50556d1adfb0dc (patch) | |
tree | a0f2ec5efa2dabb45206850631a1192db330a6f7 /drivers/net/ethernet/apm/xgene-v2/main.c | |
parent | 9bdf64d511c5c23e39b7a58ff4056d839060c026 (diff) | |
download | linux-next-ea8ab16ab225a62bb4c4041f7f50556d1adfb0dc.tar.gz |
drivers: net: xgene-v2: Add MDIO support
Added phy management support by using phy abstraction layer APIs.
Signed-off-by: Iyappan Subramanian <isubramanian@apm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/apm/xgene-v2/main.c')
-rw-r--r-- | drivers/net/ethernet/apm/xgene-v2/main.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/ethernet/apm/xgene-v2/main.c b/drivers/net/ethernet/apm/xgene-v2/main.c index ae76977d10b4..82ac5b4d3ae4 100644 --- a/drivers/net/ethernet/apm/xgene-v2/main.c +++ b/drivers/net/ethernet/apm/xgene-v2/main.c @@ -500,9 +500,10 @@ static int xge_open(struct net_device *ndev) xge_intr_enable(pdata); xge_wr_csr(pdata, DMARXCTRL, 1); + + phy_start(ndev->phydev); xge_mac_enable(pdata); netif_start_queue(ndev); - netif_carrier_on(ndev); return 0; } @@ -511,9 +512,9 @@ static int xge_close(struct net_device *ndev) { struct xge_pdata *pdata = netdev_priv(ndev); - netif_carrier_off(ndev); netif_stop_queue(ndev); xge_mac_disable(pdata); + phy_stop(ndev->phydev); xge_intr_disable(pdata); xge_free_irq(ndev); @@ -683,9 +684,12 @@ static int xge_probe(struct platform_device *pdev) if (ret) goto err; + ret = xge_mdio_config(ndev); + if (ret) + goto err; + netif_napi_add(ndev, &pdata->napi, xge_napi, NAPI_POLL_WEIGHT); - netif_carrier_off(ndev); ret = register_netdev(ndev); if (ret) { netdev_err(ndev, "Failed to register netdev\n"); @@ -713,6 +717,7 @@ static int xge_remove(struct platform_device *pdev) dev_close(ndev); rtnl_unlock(); + xge_mdio_remove(ndev); unregister_netdev(ndev); free_netdev(ndev); |