diff options
Diffstat (limited to 'drivers/net/fec_imx.c')
-rw-r--r-- | drivers/net/fec_imx.c | 13 |
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: |