diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-07-21 09:06:09 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-07-21 09:06:09 -0400 |
| commit | e66d90fb4abd0a27ee96f57a32fb561221c4d6ae (patch) | |
| tree | 3337cba94c7444b06fdb0e8b487287d07b71f4a0 /drivers/net/fs_enet/fs_enet-main.c | |
| parent | 55ca089e2579de90f048aca2a3030b8b2f864813 (diff) | |
| parent | 14b395e35d1afdd8019d11b92e28041fad591b71 (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.c | 33 |
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 | ||
| 1207 | out_put_mdio: | 1216 | out_put_mdio: |
| 1208 | of_node_put(mdionode); | 1217 | of_node_put(mdionode); |
