Message ID | 1326456604-25137-1-git-send-email-dirk.behme@de.bosch.com |
---|---|
State | Changes Requested |
Headers | show |
> From: Troy Kisky <troy.kisky@boundarydevices.com> > > Add 1000 Mbps selection and print negotiated speed > > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com> > CC: Troy Kisky <troy.kisky@boundarydevices.com> > CC: Stefano Babic <sbabic@denx.de> > CC: Marek Vasut <marek.vasut@gmail.com> > --- > 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 ed73353..9e8ef7a 100644 > --- a/drivers/net/fec_mxc.c > +++ b/drivers/net/fec_mxc.c > @@ -379,6 +379,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 */ > @@ -428,8 +429,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; Why the magic? > + 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); debug() > > /* > * Enable SmartDMA receive task
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index ed73353..9e8ef7a 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -379,6 +379,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 */ @@ -428,8 +429,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