mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
phy: fix create_phy_by_mask for when its given an actual search mask
get_phy_id returns -EIO when it can't read from a phy at a given addr. This would cause create_phy_by_mask to return prematurely before it had tested the other addresses in the provided mask. Example usage: Replace phydev = phy_connect(bus, phy_addr, dev, phy_if) with phydev = phy_find_by_mask(bus, phy_mask, phy_if) if (phydev) phy_connect_dev(phydev, dev); Signed-off-by: Cormier, Jonathan <jcormier@criticallink.com> Cc: Joe Hershberger <joe.hershberger@gmail.com>
This commit is contained in:
parent
64375014c4
commit
08be2836df
1 changed files with 1 additions and 3 deletions
|
@ -609,10 +609,8 @@ static struct phy_device *create_phy_by_mask(struct mii_dev *bus,
|
|||
while (phy_mask) {
|
||||
int addr = ffs(phy_mask) - 1;
|
||||
int r = get_phy_id(bus, addr, devad, &phy_id);
|
||||
if (r < 0)
|
||||
return ERR_PTR(r);
|
||||
/* If the PHY ID is mostly f's, we didn't find anything */
|
||||
if ((phy_id & 0x1fffffff) != 0x1fffffff)
|
||||
if (r == 0 && (phy_id & 0x1fffffff) != 0x1fffffff)
|
||||
return phy_device_create(bus, addr, phy_id, interface);
|
||||
phy_mask &= ~(1 << addr);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue