|
@@ -2904,6 +2904,10 @@ static int macb_probe(struct platform_device *pdev)
|
|
|
else
|
|
|
macb_get_hwaddr(bp);
|
|
|
|
|
|
+ /* Power up the PHY if there is a GPIO reset */
|
|
|
+ bp->reset_gpio = devm_gpiod_get_optional(&bp->pdev->dev, "phy-reset",
|
|
|
+ GPIOD_OUT_HIGH);
|
|
|
+
|
|
|
err = of_get_phy_mode(np);
|
|
|
if (err < 0) {
|
|
|
pdata = dev_get_platdata(&pdev->dev);
|
|
@@ -2970,6 +2974,10 @@ static int macb_remove(struct platform_device *pdev)
|
|
|
mdiobus_unregister(bp->mii_bus);
|
|
|
kfree(bp->mii_bus->irq);
|
|
|
mdiobus_free(bp->mii_bus);
|
|
|
+
|
|
|
+ /* Shutdown the PHY if there is a GPIO reset */
|
|
|
+ gpiod_set_value(bp->reset_gpio, 0);
|
|
|
+
|
|
|
unregister_netdev(dev);
|
|
|
clk_disable_unprepare(bp->tx_clk);
|
|
|
clk_disable_unprepare(bp->hclk);
|