Re: [PATCH] ucc_geth: Change uec phy id to the same format as gianfar's

Previous thread: [PATCH] iputils: ping by Alexander Kolesnik on Thursday, January 29, 2009 - 10:41 am. (1 message)

Next thread: [PATCH] net: add ARP notify option for devices by Jeremy Fitzhardinge on Thursday, January 29, 2009 - 11:49 am. (2 messages)
From: Haiying Wang
Date: Thursday, January 29, 2009 - 11:39 am

The commit b31a1d8b41513b96e9c7ec2f68c5734cef0b26a4 changes the gianfar's phy id to
the format like "mdio@xxxx:xx", but uec still uses the old format like "xxxxxxxx:xx".
For the board whose UEC uses gianfar-mdio like MPC8568MDS, the phy can not be attached
because of the incompatible phy id format. This patch changes uec's phy id to the same
format as gianfar's.

Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com>
---
 drivers/net/ucc_geth.c           |   20 ++++++++++++++++++--
 drivers/net/ucc_geth.h           |    2 ++
 drivers/net/ucc_geth_mii.c       |   12 +++++++++++-
 drivers/net/ucc_geth_mii.h       |    1 +
 4 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index 1144122..6ffeffa 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -1536,6 +1536,11 @@ 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 phy_device *phydev;
 	char phy_id[BUS_ID_SIZE];
 
@@ -1543,9 +1548,19 @@ static int init_phy(struct net_device *dev)
 	priv->oldspeed = 0;
 	priv->oldduplex = -1;
 
-	snprintf(phy_id, sizeof(phy_id), PHY_ID_FMT, priv->ug_info->mdio_bus,
-		 priv->ug_info->phy_address);
+	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);
 
 	if (IS_ERR(phydev)) {
@@ -3748,6 +3763,7 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
 
 ...
From: Kumar Gala
Date: Thursday, January 29, 2009 - 11:42 am

David,

Can you look at this for 2.6.29.

- k
--

From: David Miller
Date: Thursday, January 29, 2009 - 6:28 pm

From: Kumar Gala <galak@kernel.crashing.org>

Applied to net-2.6, thanks.
--

Previous thread: [PATCH] iputils: ping by Alexander Kolesnik on Thursday, January 29, 2009 - 10:41 am. (1 message)

Next thread: [PATCH] net: add ARP notify option for devices by Jeremy Fitzhardinge on Thursday, January 29, 2009 - 11:49 am. (2 messages)