diff options
author | Troy Kisky <troy.kisky@boundarydevices.com> | 2011-12-22 08:42:03 +0100 |
---|---|---|
committer | John Rigby <john.rigby@linaro.org> | 2012-01-19 17:08:50 -0700 |
commit | c2b7cfa23d95d7ccf27d811273654b877342609b (patch) | |
tree | 98340fa640c39722a244ef7d3ee10a8f96fe1063 | |
parent | b606281ae381711aded0acef9a9afade151c164c (diff) |
fec_mxc: add 1000 Mbps selection
Also, print negotiated speed
Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
-rw-r--r-- | drivers/net/fec_mxc.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 3affda8fa..d9e9daedd 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -378,6 +378,7 @@ static int fec_set_hwaddr(struct eth_device *dev) static int fec_open(struct eth_device *edev) { struct fec_priv *fec = (struct fec_priv *)edev->priv; + int speed; debug("fec_open: fec_open(dev)\n"); /* full-duplex, heartbeat disabled */ @@ -427,8 +428,21 @@ static int fec_open(struct eth_device *edev) #endif miiphy_wait_aneg(edev); - miiphy_speed(edev->name, fec->phy_id); + speed = miiphy_speed(edev->name, fec->phy_id); miiphy_duplex(edev->name, fec->phy_id); +#ifdef CONFIG_MX6Q + { + u32 ecr = readl(&fec->eth->ecntrl) & ~(0x1 << 5); + u32 rcr = (readl(&fec->eth->r_cntrl) & ~0x300) | 0x44; + if (speed == _1000BASET) + ecr |= (0x1 << 5); + else if (speed != _100BASET) + rcr |= (0x1 << 9); + writel(ecr, &fec->eth->ecntrl); + writel(rcr, &fec->eth->r_cntrl); + } +#endif + printf("%s:Speed=%i\n", __func__, speed); /* * Enable SmartDMA receive task |