[PATCH 1/2] net phy: Add support for finding a mdio bus by its name
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Thu Feb 7 07:02:06 EST 2013
On 12:09 Thu 07 Feb , Sascha Hauer wrote:
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
> drivers/net/phy/mdio_bus.c | 19 +++++++++++++++++++
> include/linux/phy.h | 3 +++
> 2 files changed, 22 insertions(+)
>
> diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
> index d1d802b..3c4be1c 100644
> --- a/drivers/net/phy/mdio_bus.c
> +++ b/drivers/net/phy/mdio_bus.c
> @@ -25,6 +25,8 @@
> #include <linux/phy.h>
> #include <linux/err.h>
>
> +static LIST_HEAD(mii_bus_list);
> +
> /**
> * mdiobus_register - bring up all the PHYs on a given bus and attach them to bus
> * @bus: target mii_bus
> @@ -57,6 +59,8 @@ int mdiobus_register(struct mii_bus *bus)
> if (bus->reset)
> bus->reset(bus);
>
> + list_add_tail(&bus->list, &mii_bus_list);
> +
> pr_info("%s: probed\n", dev_name(&bus->dev));
> return 0;
> }
> @@ -71,9 +75,24 @@ void mdiobus_unregister(struct mii_bus *bus)
> unregister_device(&bus->phy_map[i]->dev);
> bus->phy_map[i] = NULL;
> }
> +
> + list_del(&bus->list);
> }
> EXPORT_SYMBOL(mdiobus_unregister);
>
> +struct mii_bus *mdiobus_find(const char *name)
> +{
> + struct mii_bus *bus;
> +
> + list_for_each_entry(bus, &mii_bus_list, list) {
no use bus_for_each
Best Regards,
J.
> + if (!strcmp(dev_name(&bus->dev), name))
> + return bus;
> + }
> +
> + return NULL;
> +}
> +EXPORT_SYMBOL(mdiobus_find);
> +
> struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr)
> {
> struct phy_device *phydev;
> diff --git a/include/linux/phy.h b/include/linux/phy.h
> index 6c9cac9..9ab6e06 100644
> --- a/include/linux/phy.h
> +++ b/include/linux/phy.h
> @@ -84,11 +84,14 @@ struct mii_bus {
>
> /* PHY addresses to be ignored when probing */
> u32 phy_mask;
> +
> + struct list_head list;
> };
> #define to_mii_bus(d) container_of(d, struct mii_bus, dev)
>
> int mdiobus_register(struct mii_bus *bus);
> void mdiobus_unregister(struct mii_bus *bus);
> +struct mii_bus *mdiobus_find(const char *name);
> struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr);
>
> /**
> --
> 1.7.10.4
>
>
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
More information about the barebox
mailing list