summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVipin KUMAR <vipin.kumar@st.com>2012-03-26 00:09:52 +0000
committerJoe Hershberger <joe.hershberger@ni.com>2012-04-04 10:46:39 -0500
commitc7f6dbe736f3f57436ba162f986691f7e862eb4d (patch)
treedc27cdd5e73f30f91f8ba4e24d3e82840c558a4c
parent3ceecef14e2258157c846b3aaa26d7cdcd833b05 (diff)
downloadu-boot-imx-c7f6dbe736f3f57436ba162f986691f7e862eb4d.zip
u-boot-imx-c7f6dbe736f3f57436ba162f986691f7e862eb4d.tar.gz
u-boot-imx-c7f6dbe736f3f57436ba162f986691f7e862eb4d.tar.bz2
net/designware: Fix to restore hw mac address
The network controller mac resets hardware address stored in MAC_HI and MAC_LO registers if mac is resetted. So, hw mac address needs to be restored in case mac is explicitly resetted from driver. Signed-off-by: Vipin Kumar <vipin.kumar@st.com> Signed-off-by: Amit Virdi <amit.virdi@st.com>
-rw-r--r--drivers/net/designware.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index 1e34436..ea8a406 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -148,6 +148,9 @@ static int dw_eth_init(struct eth_device *dev, bd_t *bis)
if (mac_reset(dev) < 0)
return -1;
+ /* Resore the HW MAC address as it has been lost during MAC reset */
+ dw_write_hwaddr(dev);
+
writel(FIXEDBURST | PRIORXTX_41 | BURST_16,
&dma_p->busmode);
@@ -300,8 +303,10 @@ static int eth_mdio_write(struct eth_device *dev, u8 addr, u8 reg, u16 val)
writel(miiaddr | MII_CLKRANGE_150_250M | MII_BUSY, &mac_p->miiaddr);
do {
- if (!(readl(&mac_p->miiaddr) & MII_BUSY))
+ if (!(readl(&mac_p->miiaddr) & MII_BUSY)) {
ret = 0;
+ break;
+ }
udelay(1000);
} while (timeout--);