aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/designware.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/designware.c')
-rw-r--r--drivers/net/designware.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index 1a5beb9d..394e9bef 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -508,7 +508,7 @@ static int dw_phy_init(struct dw_eth_dev *priv, void *dev)
{
struct phy_device *phydev;
int phy_addr = -1, ret;
-
+
#ifdef CONFIG_PHY_ADDR
phy_addr = CONFIG_PHY_ADDR;
#endif
@@ -801,13 +801,16 @@ int designware_eth_probe(struct udevice *dev)
err = ret;
goto mdio_err;
}
-
+#ifdef GMAC_USE_FIRST_MII_BUS
if (!g_mii_bus) {
priv->bus = miiphy_get_dev_by_name(dev->name);
g_mii_bus = priv->bus;
} else {
priv->bus = g_mii_bus;
}
+#else
+ priv->bus = miiphy_get_dev_by_name(dev->name);
+#endif
ret = dw_phy_init(priv, dev);
debug("%s, ret=%d\n", __func__, ret);
if (!ret)
@@ -815,8 +818,18 @@ int designware_eth_probe(struct udevice *dev)
/* continue here for cleanup if no PHY found */
err = ret;
+#ifdef GMAC_USE_FIRST_MII_BUS
+ struct mii_dev *t_mii = NULL;
+ t_mii = miiphy_get_dev_by_name(dev->name);
+ if((g_mii_bus != t_mii) && (t_mii != NULL) ){
+ printf("free mdio bus %s\n",t_mii->name);
+ mdio_unregister(t_mii);
+ mdio_free(t_mii);
+ }
+#else
mdio_unregister(priv->bus);
mdio_free(priv->bus);
+#endif
mdio_err:
#ifdef CONFIG_CLK