Merge tag 'v3.10.106' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / net / ethernet / stmicro / stmmac / stmmac_main.c
index e9eab29db7beb96bdcb9c740f9746726f9c0206b..5cb09ecfd75fa19f7e22d7378d8ea1fd028338c6 100644 (file)
@@ -2697,12 +2697,6 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device,
        spin_lock_init(&priv->lock);
        spin_lock_init(&priv->tx_lock);
 
-       ret = register_netdev(ndev);
-       if (ret) {
-               pr_err("%s: ERROR %i registering the device\n", __func__, ret);
-               goto error_netdev_register;
-       }
-
        priv->stmmac_clk = clk_get(priv->device, STMMAC_RESOURCE_NAME);
        if (IS_ERR(priv->stmmac_clk)) {
                pr_warn("%s: warning: cannot get CSR clock\n", __func__);
@@ -2733,13 +2727,23 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device,
                }
        }
 
+       ret = register_netdev(ndev);
+       if (ret) {
+               netdev_err(priv->dev, "%s: ERROR %i registering the device\n",
+                          __func__, ret);
+               goto error_netdev_register;
+       }
+
        return priv;
 
+error_netdev_register:
+       if (priv->pcs != STMMAC_PCS_RGMII &&
+           priv->pcs != STMMAC_PCS_TBI &&
+           priv->pcs != STMMAC_PCS_RTBI)
+               stmmac_mdio_unregister(ndev);
 error_mdio_register:
        clk_put(priv->stmmac_clk);
 error_clk_get:
-       unregister_netdev(ndev);
-error_netdev_register:
        netif_napi_del(&priv->napi);
 error_free_netdev:
        free_netdev(ndev);