|
|
@@ -627,6 +627,7 @@ static int bcmgenet_mii_bus_init(struct bcmgenet_priv *priv)
|
|
|
int bcmgenet_mii_init(struct net_device *dev)
|
|
|
{
|
|
|
struct bcmgenet_priv *priv = netdev_priv(dev);
|
|
|
+ struct device_node *dn = priv->pdev->dev.of_node;
|
|
|
int ret;
|
|
|
|
|
|
ret = bcmgenet_mii_alloc(priv);
|
|
|
@@ -640,6 +641,8 @@ int bcmgenet_mii_init(struct net_device *dev)
|
|
|
return 0;
|
|
|
|
|
|
out:
|
|
|
+ if (of_phy_is_fixed_link(dn))
|
|
|
+ of_phy_deregister_fixed_link(dn);
|
|
|
of_node_put(priv->phy_dn);
|
|
|
mdiobus_unregister(priv->mii_bus);
|
|
|
mdiobus_free(priv->mii_bus);
|
|
|
@@ -649,7 +652,10 @@ out:
|
|
|
void bcmgenet_mii_exit(struct net_device *dev)
|
|
|
{
|
|
|
struct bcmgenet_priv *priv = netdev_priv(dev);
|
|
|
+ struct device_node *dn = priv->pdev->dev.of_node;
|
|
|
|
|
|
+ if (of_phy_is_fixed_link(dn))
|
|
|
+ of_phy_deregister_fixed_link(dn);
|
|
|
of_node_put(priv->phy_dn);
|
|
|
mdiobus_unregister(priv->mii_bus);
|
|
|
mdiobus_free(priv->mii_bus);
|