Commit 7d3ba936 authored by Yoshihiro Shimoda's avatar Yoshihiro Shimoda Committed by David S. Miller
Browse files

net: phy: call phy_disable_interrupts() in phy_attach_direct() instead



Since the micrel phy driver calls phy_init_hw() as a workaround,
the commit 9886a4db ("net: phy: call phy_disable_interrupts()
in phy_init_hw()") disables the interrupt unexpectedly. So,
call phy_disable_interrupts() in phy_attach_direct() instead.
Otherwise, the phy cannot link up after the ethernet cable was
disconnected.

Note that other drivers (like at803x.c) also calls phy_init_hw().
So, perhaps, the driver caused a similar issue too.

Fixes: 9886a4db ("net: phy: call phy_disable_interrupts() in phy_init_hw()")
Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent da26658c
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -1143,10 +1143,6 @@ int phy_init_hw(struct phy_device *phydev)
	if (ret < 0)
		return ret;

	ret = phy_disable_interrupts(phydev);
	if (ret)
		return ret;

	if (phydev->drv->config_init)
		ret = phydev->drv->config_init(phydev);

@@ -1423,6 +1419,10 @@ int phy_attach_direct(struct net_device *dev, struct phy_device *phydev,
	if (err)
		goto error;

	err = phy_disable_interrupts(phydev);
	if (err)
		return err;

	phy_resume(phydev);
	phy_led_triggers_register(phydev);