aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTroy Kisky <troy.kisky@boundarydevices.com>2011-12-22 08:42:03 +0100
committerJohn Rigby <john.rigby@linaro.org>2012-01-19 17:08:50 -0700
commitc2b7cfa23d95d7ccf27d811273654b877342609b (patch)
tree98340fa640c39722a244ef7d3ee10a8f96fe1063
parentb606281ae381711aded0acef9a9afade151c164c (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.c16
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