summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2009-07-30 16:09:59 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2009-07-30 16:09:59 +0200
commit6437a0156ad8001fb5f115e4ff5c29865acba6ed (patch)
tree95da54b09aad67244a6dc84126784d1360a21955 /drivers/net
parentd3e15e7eed461e5ffb7b9f7d90c992e577c3c441 (diff)
downloadbarebox-6437a0156ad8001fb5f115e4ff5c29865acba6ed.tar.gz
barebox-6437a0156ad8001fb5f115e4ff5c29865acba6ed.tar.xz
fec_imx: Make sure MII speed is correct before reading the phy
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/fec_imx.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
index 067e1f3e06..35ac670767 100644
--- a/drivers/net/fec_imx.c
+++ b/drivers/net/fec_imx.c
@@ -54,6 +54,8 @@ static int fec_miiphy_read(struct miiphy_device *mdev, uint8_t phyAddr,
uint32_t phy; /* convenient holder for the PHY */
uint64_t start;
+ writel(((imx_get_fecclk() >> 20) / 5) << 1,
+ fec->regs + FEC_MII_SPEED);
/*
* reading from any PHY's register is done by properly
* programming the FEC's MII data register.
@@ -98,6 +100,9 @@ static int fec_miiphy_write(struct miiphy_device *mdev, uint8_t phyAddr,
uint32_t phy; /* convenient holder for the PHY */
uint64_t start;
+ writel(((imx_get_fecclk() >> 20) / 5) << 1,
+ fec->regs + FEC_MII_SPEED);
+
reg = regAddr << FEC_MII_DATA_RA_SHIFT;
phy = phyAddr << FEC_MII_DATA_PA_SHIFT;