|
|
@@ -819,6 +819,8 @@ static int init_phy(struct net_device *dev)
|
|
|
|
|
|
if (!phydev) {
|
|
|
netdev_err(dev, "Could not find the PHY\n");
|
|
|
+ if (fixed_link)
|
|
|
+ of_phy_deregister_fixed_link(priv->device->of_node);
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
@@ -1545,10 +1547,15 @@ err_free_netdev:
|
|
|
static int altera_tse_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
struct net_device *ndev = platform_get_drvdata(pdev);
|
|
|
+ struct altera_tse_private *priv = netdev_priv(ndev);
|
|
|
|
|
|
- if (ndev->phydev)
|
|
|
+ if (ndev->phydev) {
|
|
|
phy_disconnect(ndev->phydev);
|
|
|
|
|
|
+ if (of_phy_is_fixed_link(priv->device->of_node))
|
|
|
+ of_phy_deregister_fixed_link(priv->device->of_node);
|
|
|
+ }
|
|
|
+
|
|
|
platform_set_drvdata(pdev, NULL);
|
|
|
altera_tse_mdio_destroy(ndev);
|
|
|
unregister_netdev(ndev);
|