ramips: ignore already handled ethernet phys
authorMathias Kresin <dev@kresin.me>
Wed, 4 Apr 2018 16:26:24 +0000 (18:26 +0200)
committerPetr Štetiar <ynezz@true.cz>
Thu, 20 Jun 2019 06:48:19 +0000 (08:48 +0200)
The whole logic in fe_phy_connect() is based on the asumption that mdio
address and switch port id are equal. Albeit it is true for most
boards, it doesn't is for all.

It isn't yet clear which subtargets/boards require the devicetree less
ethernet phy handling. Hence change the code in a way that it doesn't
touch ethernet phys which were early attached and are already handled.

Signed-off-by: Mathias Kresin <dev@kresin.me>
target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/mdio.c

index a1c115687ec56fb9c4c71347db842f440c824d7a..2e2da6021fe18caef950a461807af597b854e87c 100644 (file)
@@ -127,8 +127,14 @@ static int fe_phy_connect(struct fe_priv *priv)
                                priv->phy_dev = priv->phy->phy[i];
                                priv->phy_flags = FE_PHY_FLAG_PORT;
                        }
-               } else if (priv->mii_bus && mdiobus_get_phy(priv->mii_bus, i)) {
-                       phy_init(priv, mdiobus_get_phy(priv->mii_bus, i));
+               } else if (priv->mii_bus) {
+                       struct phy_device *phydev;
+
+                       phydev = mdiobus_get_phy(priv->mii_bus, i);
+                       if (!phydev || phydev->attached_dev)
+                               continue;
+
+                       phy_init(priv, phydev);
                        if (!priv->phy_dev) {
                                priv->phy_dev = mdiobus_get_phy(priv->mii_bus, i);
                                priv->phy_flags = FE_PHY_FLAG_ATTACH;