On Wed, Jun 19, 2019 at 12:07 PM Alexandru Marginean <alexandru.margin...@nxp.com> wrote: > > Current code fails to probe some C45 PHYs that also respond to C22 reads. > This is the case for PHYs like Aquantia AQR112, Marvell 88X2242 (as > previously posted on the u-boot list). > If the PHY ID reads all 0s just ignore it and try the next devad. > > Signed-off-by: Alex Marginean <alexm.ossl...@gmail.com> > --- > drivers/net/phy/phy.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c > index c1c1af9abd..7ccbc4d9da 100644 > --- a/drivers/net/phy/phy.c > +++ b/drivers/net/phy/phy.c > @@ -727,6 +727,15 @@ 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 the PHY ID is flat 0 we ignore it. There are C45 PHYs > + * that return all 0s for C22 reads (like Aquantia AQR112) and > + * there are C22 PHYs that return all 0s for C45 reads (like > + * Atheros AR8035). > + */ > + if (phy_id == 0) > + return NULL; > + > /* If the PHY ID is mostly f's, we didn't find anything */ > if (r == 0 && (phy_id & 0x1fffffff) != 0x1fffffff) { > is_c45 = (devad == MDIO_DEVAD_NONE) ? false : true; > -- > 2.17.1 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot
Reviewed-By: Ramon Fried <rfried....@gmail.com> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot