diff options
Diffstat (limited to 'drivers/net/gianfar_mii.c')
| -rw-r--r-- | drivers/net/gianfar_mii.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/gianfar_mii.c b/drivers/net/gianfar_mii.c index bf73eea98010..0e2595d24933 100644 --- a/drivers/net/gianfar_mii.c +++ b/drivers/net/gianfar_mii.c | |||
| @@ -269,6 +269,27 @@ static struct device_driver gianfar_mdio_driver = { | |||
| 269 | .remove = gfar_mdio_remove, | 269 | .remove = gfar_mdio_remove, |
| 270 | }; | 270 | }; |
| 271 | 271 | ||
| 272 | static int match_mdio_bus(struct device *dev, void *data) | ||
| 273 | { | ||
| 274 | const struct gfar_private *priv = data; | ||
| 275 | const struct platform_device *pdev = to_platform_device(dev); | ||
| 276 | |||
| 277 | return !strcmp(pdev->name, gianfar_mdio_driver.name) && | ||
| 278 | pdev->id == priv->einfo->mdio_bus; | ||
| 279 | } | ||
| 280 | |||
| 281 | /* Given a gfar_priv structure, find the mii_bus controlled by this device (not | ||
| 282 | * necessarily the same as the bus the gfar's PHY is on), if one exists. | ||
| 283 | * Normally only the first gianfar controls a mii_bus. */ | ||
| 284 | struct mii_bus *gfar_get_miibus(const struct gfar_private *priv) | ||
| 285 | { | ||
| 286 | /*const*/ struct device *d; | ||
| 287 | |||
| 288 | d = bus_find_device(gianfar_mdio_driver.bus, NULL, (void *)priv, | ||
| 289 | match_mdio_bus); | ||
| 290 | return d ? dev_get_drvdata(d) : NULL; | ||
| 291 | } | ||
| 292 | |||
| 272 | int __init gfar_mdio_init(void) | 293 | int __init gfar_mdio_init(void) |
| 273 | { | 294 | { |
| 274 | return driver_register(&gianfar_mdio_driver); | 295 | return driver_register(&gianfar_mdio_driver); |
