mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
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>
This commit is contained in:
parent
7091915ad7
commit
416ce623fb
1 changed files with 8 additions and 0 deletions
|
@ -163,6 +163,11 @@ static u16 macb_mdio_read(struct macb_device *macb, u8 reg)
|
||||||
return MACB_BFEXT(DATA, frame);
|
return MACB_BFEXT(DATA, frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __weak arch_get_mdio_control(const char *name)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_MII)
|
#if defined(CONFIG_CMD_MII)
|
||||||
|
|
||||||
int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value)
|
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 )
|
if ( macb->phy_addr != phy_adr )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
arch_get_mdio_control(devname);
|
||||||
*value = macb_mdio_read(macb, reg);
|
*value = macb_mdio_read(macb, reg);
|
||||||
|
|
||||||
return 0;
|
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 )
|
if ( macb->phy_addr != phy_adr )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
arch_get_mdio_control(devname);
|
||||||
macb_mdio_write(macb, reg, value);
|
macb_mdio_write(macb, reg, value);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -377,6 +384,7 @@ static int macb_phy_init(struct macb_device *macb)
|
||||||
int media, speed, duplex;
|
int media, speed, duplex;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
arch_get_mdio_control(netdev->name);
|
||||||
#ifdef CONFIG_MACB_SEARCH_PHY
|
#ifdef CONFIG_MACB_SEARCH_PHY
|
||||||
/* Auto-detect phy_addr */
|
/* Auto-detect phy_addr */
|
||||||
if (!macb_phy_find(macb)) {
|
if (!macb_phy_find(macb)) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue