diff options
| author | Daniel Mack <zonque@gmail.com> | 2014-06-27 19:23:35 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-07-02 03:24:14 -0400 |
| commit | d9daa24720891a88bedb93928f57767da96e5c80 (patch) | |
| tree | f661313d5ecf270e5fbbe43847b3e0a6411d18e0 /drivers/of | |
| parent | eb608d2b99d993a4b4ee9cb70e6cf66f96bb1168 (diff) | |
net: fix circular dependency in of_mdio code
Commit 86f6cf4127 (net: of_mdio: add of_mdiobus_link_phydev()) introduced a
circular dependency between libphy and of_mdio.
depmod: ERROR: <modroot>/kernel/drivers/net/phy/libphy.ko in
dependency cycle!
depmod: ERROR: <modroot>/kernel/drivers/of/of_mdio.ko in dependency cycle!
The problem is that of_mdio.c references &mdio_bus_type and libphy now
references of_mdiobus_link_phydev.
Fix this by not exporting of_mdiobus_link_phydev() from of_mdio.ko.
Make it a static function in mdio_bus.c instead.
Signed-off-by: Daniel Mack <zonque@gmail.com>
Reported-by: Jeff Mahoney <jeffm@suse.com>
Fixes: 86f6cf4127 (net: of_mdio: add of_mdiobus_link_phydev())
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/of')
| -rw-r--r-- | drivers/of/of_mdio.c | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c index a3bf2122a8d5..401b2453da45 100644 --- a/drivers/of/of_mdio.c +++ b/drivers/of/of_mdio.c | |||
| @@ -182,40 +182,6 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) | |||
| 182 | } | 182 | } |
| 183 | EXPORT_SYMBOL(of_mdiobus_register); | 183 | EXPORT_SYMBOL(of_mdiobus_register); |
| 184 | 184 | ||
| 185 | /** | ||
| 186 | * of_mdiobus_link_phydev - Find a device node for a phy | ||
| 187 | * @mdio: pointer to mii_bus structure | ||
| 188 | * @phydev: phydev for which the of_node pointer should be set | ||
| 189 | * | ||
| 190 | * Walk the list of subnodes of a mdio bus and look for a node that matches the | ||
| 191 | * phy's address with its 'reg' property. If found, set the of_node pointer for | ||
| 192 | * the phy. This allows auto-probed pyh devices to be supplied with information | ||
| 193 | * passed in via DT. | ||
| 194 | */ | ||
| 195 | void of_mdiobus_link_phydev(struct mii_bus *mdio, | ||
| 196 | struct phy_device *phydev) | ||
| 197 | { | ||
| 198 | struct device *dev = &phydev->dev; | ||
| 199 | struct device_node *child; | ||
| 200 | |||
| 201 | if (dev->of_node || !mdio->dev.of_node) | ||
| 202 | return; | ||
| 203 | |||
| 204 | for_each_available_child_of_node(mdio->dev.of_node, child) { | ||
| 205 | int addr; | ||
| 206 | |||
| 207 | addr = of_mdio_parse_addr(&mdio->dev, child); | ||
| 208 | if (addr < 0) | ||
| 209 | continue; | ||
| 210 | |||
| 211 | if (addr == phydev->addr) { | ||
| 212 | dev->of_node = child; | ||
| 213 | return; | ||
| 214 | } | ||
| 215 | } | ||
| 216 | } | ||
| 217 | EXPORT_SYMBOL(of_mdiobus_link_phydev); | ||
| 218 | |||
| 219 | /* Helper function for of_phy_find_device */ | 185 | /* Helper function for of_phy_find_device */ |
| 220 | static int of_phy_match(struct device *dev, void *phy_np) | 186 | static int of_phy_match(struct device *dev, void *phy_np) |
| 221 | { | 187 | { |
