summaryrefslogtreecommitdiffstats
path: root/drivers/net/phy
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2017-12-04 07:27:17 -0800
committerSascha Hauer <s.hauer@pengutronix.de>2017-12-06 15:49:15 +0100
commit9b1a209c8c3a60531e9a4308acf5288c755cef1b (patch)
tree00968b12f5dd14131c0bfd9f05e5c5b9c9a7edab /drivers/net/phy
parented6e3a1fb0940b68c1f5f19f8e2bc4721211fb4e (diff)
downloadbarebox-9b1a209c8c3a60531e9a4308acf5288c755cef1b.tar.gz
barebox-9b1a209c8c3a60531e9a4308acf5288c755cef1b.tar.xz
net: mdio-mux: Avoid probing multiplexed busses
Calling mdiobus_detect() for a bus that serves as a parent for a MDIO bus multiplexer would result in parent bus being populated with devices that are present on downstream bus that multiplexer happens to be "pointing" at that moment. To avoid that introduce 'is_multiplexed' flag to struct mii_bus and change mdiobus_detect to ignore busses for which that flag is set. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net/phy')
-rw-r--r--drivers/net/phy/mdio-mux.c1
-rw-r--r--drivers/net/phy/mdio_bus.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/phy/mdio-mux.c b/drivers/net/phy/mdio-mux.c
index 4e924e5863..1f57d86c6f 100644
--- a/drivers/net/phy/mdio-mux.c
+++ b/drivers/net/phy/mdio-mux.c
@@ -137,6 +137,7 @@ int mdio_mux_init(struct device_d *dev,
}
}
+ parent_bus->is_multiplexed = true;
return 0;
}
EXPORT_SYMBOL_GPL(mdio_mux_init);
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index 6ae85692da..d209716a14 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -32,6 +32,9 @@ int mdiobus_detect(struct device_d *dev)
struct mii_bus *mii = to_mii_bus(dev);
int i, ret;
+ if (mii->is_multiplexed)
+ return 0;
+
for (i = 0; i < PHY_MAX_ADDR; i++) {
struct phy_device *phydev;