summaryrefslogtreecommitdiffstats
path: root/drivers/net/fec_imx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/fec_imx.c')
-rw-r--r--drivers/net/fec_imx.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
index cc2a33174d..4ed5e8e14c 100644
--- a/drivers/net/fec_imx.c
+++ b/drivers/net/fec_imx.c
@@ -89,7 +89,7 @@ static int fec_miibus_read(struct mii_bus *bus, int phyAddr, int regAddr)
/*
* it's now safe to read the PHY's register
*/
- return readl(fec->regs + FEC_MII_DATA);
+ return readl(fec->regs + FEC_MII_DATA) & 0xffff;
}
static int fec_miibus_write(struct mii_bus *bus, int phyAddr,
@@ -581,7 +581,7 @@ static int fec_recv(struct eth_device *dev)
*/
frame = phys_to_virt(readl(&rbd->data_pointer));
frame_length = readw(&rbd->data_length) - 4;
- net_receive(frame->data, frame_length);
+ net_receive(dev, frame->data, frame_length);
len = frame_length;
} else {
if (bd_status & FEC_RBD_ERR) {
@@ -737,9 +737,14 @@ static int fec_probe(struct device_d *dev)
fec->miibus.priv = fec;
fec->miibus.parent = dev;
- mdiobus_register(&fec->miibus);
+ ret = mdiobus_register(&fec->miibus);
+ if (ret)
+ return ret;
+
+ ret = eth_register(edev);
+ if (ret)
+ return ret;
- eth_register(edev);
return 0;
err_free: