[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