diff options
Diffstat (limited to 'drivers/net/ucc_geth.c')
| -rw-r--r-- | drivers/net/ucc_geth.c | 34 | 
1 files changed, 10 insertions, 24 deletions
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index e87986867ba..1f61e42c641 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c @@ -1536,32 +1536,15 @@ static void adjust_link(struct net_device *dev)  static int init_phy(struct net_device *dev)  {  	struct ucc_geth_private *priv = netdev_priv(dev); -	struct device_node *np = priv->node; -	struct device_node *phy, *mdio; -	const phandle *ph; -	char bus_name[MII_BUS_ID_SIZE]; -	const unsigned int *id; +	struct ucc_geth_info *ug_info = priv->ug_info;  	struct phy_device *phydev; -	char phy_id[BUS_ID_SIZE];  	priv->oldlink = 0;  	priv->oldspeed = 0;  	priv->oldduplex = -1; -	ph = of_get_property(np, "phy-handle", NULL); -	phy = of_find_node_by_phandle(*ph); -	mdio = of_get_parent(phy); - -	id = of_get_property(phy, "reg", NULL); - -	of_node_put(phy); -	of_node_put(mdio); - -	uec_mdio_bus_name(bus_name, mdio); -	snprintf(phy_id, sizeof(phy_id), "%s:%02x", -                                bus_name, *id); - -	phydev = phy_connect(dev, phy_id, &adjust_link, 0, priv->phy_interface); +	phydev = phy_connect(dev, ug_info->phy_bus_id, &adjust_link, 0, +			     priv->phy_interface);  	if (IS_ERR(phydev)) {  		printk("%s: Could not attach to PHY\n", dev->name); @@ -3629,10 +3612,12 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma  	ug_info->uf_info.irq = irq_of_parse_and_map(np, 0);  	fixed_link = of_get_property(np, "fixed-link", NULL);  	if (fixed_link) { -		snprintf(ug_info->mdio_bus, MII_BUS_ID_SIZE, "0"); -		ug_info->phy_address = fixed_link[0]; +		snprintf(ug_info->phy_bus_id, sizeof(ug_info->phy_bus_id), +			 PHY_ID_FMT, "0", fixed_link[0]);  		phy = NULL;  	} else { +		char bus_name[MII_BUS_ID_SIZE]; +  		ph = of_get_property(np, "phy-handle", NULL);  		phy = of_find_node_by_phandle(*ph); @@ -3643,7 +3628,6 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma  		prop = of_get_property(phy, "reg", NULL);  		if (prop == NULL)  			return -1; -		ug_info->phy_address = *prop;  		/* Set the bus id */  		mdio = of_get_parent(phy); @@ -3657,7 +3641,9 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma  		if (err)  			return -1; -		snprintf(ug_info->mdio_bus, MII_BUS_ID_SIZE, "%x", res.start); +		uec_mdio_bus_name(bus_name, mdio); +		snprintf(ug_info->phy_bus_id, sizeof(ug_info->phy_bus_id), +			"%s:%02x", bus_name, *prop);  	}  	/* get the phy interface type, or default to MII */  |