summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorShiraz Hashim <shiraz.hashim@st.com>2012-12-13 17:22:52 +0530
committerJoe Hershberger <joe.hershberger@ni.com>2013-06-24 19:10:16 -0500
commit416ce623fbad51af57660346ebb6f7befb88b3c9 (patch)
tree52a411a2c2eede56af92824867419c1562d3229e /drivers/net
parent7091915ad7a58d7884b7353b87373847ae943e1c (diff)
downloadu-boot-imx-416ce623fbad51af57660346ebb6f7befb88b3c9.zip
u-boot-imx-416ce623fbad51af57660346ebb6f7befb88b3c9.tar.gz
u-boot-imx-416ce623fbad51af57660346ebb6f7befb88b3c9.tar.bz2
net/macb: Add arch specific routine to get mdio control
SPEAr310 and SPEAr320 Ethernet interfaces share same MDIO lines to control their respective phys. Currently there is a fixed configuration in which only a particular MAC can use the MDIO lines. Call an arch specific function to take control of specific mdio lines at runtime. Signed-off-by: Shiraz Hashim <shiraz.hashim@st.com> Signed-off-by: Vipin Kumar <vipin.kumar@st.com> Acked-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/macb.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 8bacbda..6b49f0e 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -163,6 +163,11 @@ static u16 macb_mdio_read(struct macb_device *macb, u8 reg)
return MACB_BFEXT(DATA, frame);
}
+static void __weak arch_get_mdio_control(const char *name)
+{
+ return;
+}
+
#if defined(CONFIG_CMD_MII)
int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value)
@@ -173,6 +178,7 @@ int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value)
if ( macb->phy_addr != phy_adr )
return -1;
+ arch_get_mdio_control(devname);
*value = macb_mdio_read(macb, reg);
return 0;
@@ -186,6 +192,7 @@ int macb_miiphy_write(const char *devname, u8 phy_adr, u8 reg, u16 value)
if ( macb->phy_addr != phy_adr )
return -1;
+ arch_get_mdio_control(devname);
macb_mdio_write(macb, reg, value);
return 0;
@@ -377,6 +384,7 @@ static int macb_phy_init(struct macb_device *macb)
int media, speed, duplex;
int i;
+ arch_get_mdio_control(netdev->name);
#ifdef CONFIG_MACB_SEARCH_PHY
/* Auto-detect phy_addr */
if (!macb_phy_find(macb)) {