summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorWolfram Sang <w.sang@pengutronix.de>2012-01-24 14:53:51 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-01-25 18:10:26 +0100
commit79b385b01731ca585bc67baae2e847505f9d8c70 (patch)
treed309b4851d2e2e35f0e9ff498672c0affd67b0a5 /drivers/net
parentcae7e5b7f92c31cb1b2b20256865ab60cb2c854c (diff)
downloadbarebox-79b385b01731ca585bc67baae2e847505f9d8c70.tar.gz
barebox-79b385b01731ca585bc67baae2e847505f9d8c70.tar.xz
net: fec_imx: configure FEC for 10Mbit when necessary
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/fec_imx.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
index 45af78f567..653b4888d5 100644
--- a/drivers/net/fec_imx.c
+++ b/drivers/net/fec_imx.c
@@ -373,6 +373,17 @@ static int fec_open(struct eth_device *edev)
ret = miidev_wait_aneg(&fec->miidev);
if (ret)
return ret;
+
+ ret = miidev_get_status(&fec->miidev);
+ if (ret < 0)
+ return ret;
+
+ if (ret & MIIDEV_STATUS_IS_10MBIT) {
+ u32 rcntl = readl(fec->regs + FEC_R_CNTRL);
+ rcntl |= FEC_R_CNTRL_RMII_10T;
+ writel(rcntl, fec->regs + FEC_R_CNTRL);
+ }
+
miidev_print_status(&fec->miidev);
}