aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/octeon/ethernet-sgmii.c
diff options
context:
space:
mode:
authorAaro Koskinen <aaro.koskinen@iki.fi>2015-04-04 22:51:02 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-04-30 16:59:23 +0200
commit9e3ae4f9aecffcc376a714d5088a1275054f9dbf (patch)
treed9c5702e0708f64704999f5d2e8bf3726f62a122 /drivers/staging/octeon/ethernet-sgmii.c
parentstaging: vt6655: device_intr check for vif on while loop (diff)
downloadlinux-dev-9e3ae4f9aecffcc376a714d5088a1275054f9dbf.tar.xz
linux-dev-9e3ae4f9aecffcc376a714d5088a1275054f9dbf.zip
staging: octeon-ethernet: consolidate ndo_open functions
ndo_open for rgmii, sgmii and xaui are almost identical. Put the common code in a single function. Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/octeon/ethernet-sgmii.c')
-rw-r--r--drivers/staging/octeon/ethernet-sgmii.c33
1 files changed, 1 insertions, 32 deletions
diff --git a/drivers/staging/octeon/ethernet-sgmii.c b/drivers/staging/octeon/ethernet-sgmii.c
index 21a7a17acb79..a6a831510151 100644
--- a/drivers/staging/octeon/ethernet-sgmii.c
+++ b/drivers/staging/octeon/ethernet-sgmii.c
@@ -79,38 +79,7 @@ static void cvm_oct_sgmii_poll(struct net_device *dev)
int cvm_oct_sgmii_open(struct net_device *dev)
{
- union cvmx_gmxx_prtx_cfg gmx_cfg;
- struct octeon_ethernet *priv = netdev_priv(dev);
- int interface = INTERFACE(priv->port);
- int index = INDEX(priv->port);
- cvmx_helper_link_info_t link_info;
- int rv;
-
- rv = cvm_oct_phy_setup_device(dev);
- if (rv)
- return rv;
-
- gmx_cfg.u64 = cvmx_read_csr(CVMX_GMXX_PRTX_CFG(index, interface));
- gmx_cfg.s.en = 1;
- cvmx_write_csr(CVMX_GMXX_PRTX_CFG(index, interface), gmx_cfg.u64);
-
- if (octeon_is_simulation())
- return 0;
-
- if (priv->phydev) {
- int r = phy_read_status(priv->phydev);
-
- if (r == 0 && priv->phydev->link == 0)
- netif_carrier_off(dev);
- cvm_oct_adjust_link(dev);
- } else {
- link_info = cvmx_helper_link_get(priv->port);
- if (!link_info.s.link_up)
- netif_carrier_off(dev);
- priv->poll = cvm_oct_sgmii_poll;
- cvm_oct_sgmii_poll(dev);
- }
- return 0;
+ return cvm_oct_common_open(dev, cvm_oct_sgmii_poll, true);
}
int cvm_oct_sgmii_stop(struct net_device *dev)