staging: octeon-ethernet: consolidate ndo_open functions
[deliverable/linux.git] / drivers / staging / octeon / ethernet-rgmii.c
index 651be7e1a8a7f51eac9184a41a01f036baa767d0..88889d30cc0317d98d2080804a0cfa28aef46e4a 100644 (file)
@@ -83,6 +83,7 @@ static void cvm_oct_rgmii_poll(struct net_device *dev)
                        int interface = INTERFACE(priv->port);
                        int index = INDEX(priv->port);
                        union cvmx_gmxx_rxx_int_reg gmxx_rxx_int_reg;
+
                        gmxx_rxx_int_reg.u64 =
                            cvmx_read_csr(CVMX_GMXX_RXX_INT_REG
                                          (index, interface));
@@ -120,8 +121,7 @@ static void cvm_oct_rgmii_poll(struct net_device *dev)
                                cvmx_write_csr(CVMX_GMXX_RXX_INT_REG
                                               (index, interface),
                                               gmxx_rxx_int_reg.u64);
-                               printk_ratelimited("%s: Using 10Mbps with software "
-                                                  "preamble removal\n",
+                               printk_ratelimited("%s: Using 10Mbps with software preamble removal\n",
                                                   dev->name);
                        }
                }
@@ -177,15 +177,13 @@ static void cvm_oct_rgmii_poll(struct net_device *dev)
                        if (!netif_carrier_ok(dev))
                                netif_carrier_on(dev);
                        if (priv->queue != -1)
-                               printk_ratelimited("%s: %u Mbps %s duplex, "
-                                                  "port %2d, queue %2d\n",
+                               printk_ratelimited("%s: %u Mbps %s duplex, port %2d, queue %2d\n",
                                                   dev->name, link_info.s.speed,
                                                   (link_info.s.full_duplex) ?
                                                   "Full" : "Half",
                                                   priv->port, priv->queue);
                        else
-                               printk_ratelimited("%s: %u Mbps %s duplex, "
-                                                  "port %2d, POW\n",
+                               printk_ratelimited("%s: %u Mbps %s duplex, port %2d, POW\n",
                                                   dev->name, link_info.s.speed,
                                                   (link_info.s.full_duplex) ?
                                                   "Full" : "Half",
@@ -217,6 +215,7 @@ static irqreturn_t cvm_oct_rgmii_rml_interrupt(int cpl, void *dev_id)
 
                        /* Read the GMX interrupt status bits */
                        union cvmx_gmxx_rxx_int_reg gmx_rx_int_reg;
+
                        gmx_rx_int_reg.u64 =
                            cvmx_read_csr(CVMX_GMXX_RXX_INT_REG
                                          (index, interface));
@@ -261,6 +260,7 @@ static irqreturn_t cvm_oct_rgmii_rml_interrupt(int cpl, void *dev_id)
 
                        /* Read the GMX interrupt status bits */
                        union cvmx_gmxx_rxx_int_reg gmx_rx_int_reg;
+
                        gmx_rx_int_reg.u64 =
                            cvmx_read_csr(CVMX_GMXX_RXX_INT_REG
                                          (index, interface));
@@ -298,36 +298,7 @@ static irqreturn_t cvm_oct_rgmii_rml_interrupt(int cpl, void *dev_id)
 
 int cvm_oct_rgmii_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()) {
-               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_rgmii_poll;
-               }
-       }
-
-       return 0;
+       return cvm_oct_common_open(dev, cvm_oct_rgmii_poll, false);
 }
 
 int cvm_oct_rgmii_stop(struct net_device *dev)
@@ -407,6 +378,7 @@ int cvm_oct_rgmii_init(struct net_device *dev)
 void cvm_oct_rgmii_uninit(struct net_device *dev)
 {
        struct octeon_ethernet *priv = netdev_priv(dev);
+
        cvm_oct_common_uninit(dev);
 
        /*
This page took 0.045995 seconds and 5 git commands to generate.