Message ID | 490828F6.4000307@st.com |
---|---|
State | Rejected, archived |
Delegated to: | Jeff Garzik |
Headers | show |
On Wed, Oct 29, 2008 at 3:12 AM, Giuseppe CAVALLARO <peppe.cavallaro@st.com> wrote: > Hi All, > Using a bad PHY address, the physical device is erroneously attached to the > MAC device driver. > This happens because the get_phy_id function reads zero from the PHYIR1/2 > regs and never fails. > I'm facing this problem on some PHY devices (*) but I've not clear enough if > this can actually depend on an HW issue (e.g.invalid phy addresses have > been left floating) or we need to apply the patch below. Indeed, it helps me > to catch the problem and, as final result, the phy_connect always fails on > wrong PHY address and the network interface cannot be opened. > > (*) on other ones, the get_phy_id function reads 0xffff from PHYIR1/2 regs > and fails (as expected results) when I try to attach a wrong PHY address. Some people seem to have PHYs that report 0 as their ID, so that's not going to work. I'm pretty sure your bus needs to be floating high, so you might want to check that out. Andy -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index 8ad602c..8a1baf9 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c @@ -192,7 +192,7 @@ int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id) * in the upper half */ phy_reg = bus->read(bus, addr, MII_PHYSID1); - if (phy_reg < 0) + if (phy_reg <= 0) return -EIO;