diff options
| author | Shiraz Hashim <shiraz.hashim@st.com> | 2012-12-13 17:22:52 +0530 | 
|---|---|---|
| committer | Joe Hershberger <joe.hershberger@ni.com> | 2013-06-24 19:10:16 -0500 | 
| commit | 416ce623fbad51af57660346ebb6f7befb88b3c9 (patch) | |
| tree | 52a411a2c2eede56af92824867419c1562d3229e /drivers/net/macb.c | |
| parent | 7091915ad7a58d7884b7353b87373847ae943e1c (diff) | |
| download | olio-uboot-2014.01-416ce623fbad51af57660346ebb6f7befb88b3c9.tar.xz olio-uboot-2014.01-416ce623fbad51af57660346ebb6f7befb88b3c9.zip | |
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/macb.c')
| -rw-r--r-- | drivers/net/macb.c | 8 | 
1 files changed, 8 insertions, 0 deletions
| diff --git a/drivers/net/macb.c b/drivers/net/macb.c index 8bacbda71..6b49f0e3e 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)) { |