Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01b0114e authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller
Browse files

net: tc35815: use phy_init_hw for PHY reset



Instead of open-coding the PHY reset through MII BMCR, use phy_init_hw()
which does that for us and also makes sure that any PHY specific fixups
are applied.

Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 78de53f0
Loading
Loading
Loading
Loading
+4 −11
Original line number Original line Diff line number Diff line
@@ -1170,19 +1170,12 @@ static int tc35815_tx_full(struct net_device *dev)
static void tc35815_restart(struct net_device *dev)
static void tc35815_restart(struct net_device *dev)
{
{
	struct tc35815_local *lp = netdev_priv(dev);
	struct tc35815_local *lp = netdev_priv(dev);
	int ret;


	if (lp->phy_dev) {
	if (lp->phy_dev) {
		int timeout;
		ret = phy_init_hw(lp->phy_dev);

		if (ret)
		phy_write(lp->phy_dev, MII_BMCR, BMCR_RESET);
			printk(KERN_ERR "%s: PHY init failed.\n", dev->name);
		timeout = 100;
		while (--timeout) {
			if (!(phy_read(lp->phy_dev, MII_BMCR) & BMCR_RESET))
				break;
			udelay(1);
		}
		if (!timeout)
			printk(KERN_ERR "%s: BMCR reset failed.\n", dev->name);
	}
	}


	spin_lock_bh(&lp->rx_lock);
	spin_lock_bh(&lp->rx_lock);