aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/fs_enet/fs_enet-main.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-07-21 09:06:09 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-21 09:06:09 -0400
commite66d90fb4abd0a27ee96f57a32fb561221c4d6ae (patch)
tree3337cba94c7444b06fdb0e8b487287d07b71f4a0 /drivers/net/fs_enet/fs_enet-main.c
parent55ca089e2579de90f048aca2a3030b8b2f864813 (diff)
parent14b395e35d1afdd8019d11b92e28041fad591b71 (diff)
Merge branch 'linus' into xen-64bit
Diffstat (limited to 'drivers/net/fs_enet/fs_enet-main.c')
-rw-r--r--drivers/net/fs_enet/fs_enet-main.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c
index 352574a3f056..445763e5648e 100644
--- a/drivers/net/fs_enet/fs_enet-main.c
+++ b/drivers/net/fs_enet/fs_enet-main.c
@@ -43,6 +43,7 @@
43#include <asm/uaccess.h> 43#include <asm/uaccess.h>
44 44
45#ifdef CONFIG_PPC_CPM_NEW_BINDING 45#ifdef CONFIG_PPC_CPM_NEW_BINDING
46#include <linux/of_gpio.h>
46#include <linux/of_platform.h> 47#include <linux/of_platform.h>
47#endif 48#endif
48 49
@@ -737,7 +738,7 @@ static void generic_adjust_link(struct net_device *dev)
737 if (!fep->oldlink) { 738 if (!fep->oldlink) {
738 new_state = 1; 739 new_state = 1;
739 fep->oldlink = 1; 740 fep->oldlink = 1;
740 netif_schedule(dev); 741 netif_tx_schedule_all(dev);
741 netif_carrier_on(dev); 742 netif_carrier_on(dev);
742 netif_start_queue(dev); 743 netif_start_queue(dev);
743 } 744 }
@@ -1172,8 +1173,7 @@ static int __devinit find_phy(struct device_node *np,
1172 struct fs_platform_info *fpi) 1173 struct fs_platform_info *fpi)
1173{ 1174{
1174 struct device_node *phynode, *mdionode; 1175 struct device_node *phynode, *mdionode;
1175 struct resource res; 1176 int ret = 0, len, bus_id;
1176 int ret = 0, len;
1177 const u32 *data; 1177 const u32 *data;
1178 1178
1179 data = of_get_property(np, "fixed-link", NULL); 1179 data = of_get_property(np, "fixed-link", NULL);
@@ -1190,19 +1190,28 @@ static int __devinit find_phy(struct device_node *np,
1190 if (!phynode) 1190 if (!phynode)
1191 return -EINVAL; 1191 return -EINVAL;
1192 1192
1193 mdionode = of_get_parent(phynode); 1193 data = of_get_property(phynode, "reg", &len);
1194 if (!mdionode) 1194 if (!data || len != 4) {
1195 ret = -EINVAL;
1195 goto out_put_phy; 1196 goto out_put_phy;
1197 }
1196 1198
1197 ret = of_address_to_resource(mdionode, 0, &res); 1199 mdionode = of_get_parent(phynode);
1198 if (ret) 1200 if (!mdionode) {
1199 goto out_put_mdio; 1201 ret = -EINVAL;
1202 goto out_put_phy;
1203 }
1200 1204
1201 data = of_get_property(phynode, "reg", &len); 1205 bus_id = of_get_gpio(mdionode, 0);
1202 if (!data || len != 4) 1206 if (bus_id < 0) {
1203 goto out_put_mdio; 1207 struct resource res;
1208 ret = of_address_to_resource(mdionode, 0, &res);
1209 if (ret)
1210 goto out_put_mdio;
1211 bus_id = res.start;
1212 }
1204 1213
1205 snprintf(fpi->bus_id, 16, "%x:%02x", res.start, *data); 1214 snprintf(fpi->bus_id, 16, "%x:%02x", bus_id, *data);
1206 1215
1207out_put_mdio: 1216out_put_mdio:
1208 of_node_put(mdionode); 1217 of_node_put(mdionode);