From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vipin Kumar Date: Wed, 12 Dec 2012 16:07:41 +0530 Subject: [U-Boot] [PATCH resend 2/2] net/macb: Add arch specific routine to get mdio control In-Reply-To: <8ff845e533e9d174c6fe70cc8a6be5ec753bd071.1354777675.git.vipin.kumar@st.com> References: <21ad31fb0501d0cd56f978467ae31f153a22ec4b.1354777675.git.vipin.kumar@st.com> <8ff845e533e9d174c6fe70cc8a6be5ec753bd071.1354777675.git.vipin.kumar@st.com> Message-ID: <50C85E75.8090307@st.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de ping. one more :) On 12/6/2012 12:40 PM, Vipin KUMAR wrote: > From: Shiraz Hashim > > SPEAr310 and SPEAr320 Ethernet interfaces share same MDIO lines to control their > respective phys. Currently their 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 > Signed-off-by: Vipin Kumar > --- > drivers/net/macb.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/net/macb.c b/drivers/net/macb.c > index 8bacbda..45fbbd7 100644 > --- a/drivers/net/macb.c > +++ b/drivers/net/macb.c > @@ -163,6 +163,13 @@ static u16 macb_mdio_read(struct macb_device *macb, u8 reg) > return MACB_BFEXT(DATA, frame); > } > > +static void __def_arch_get_mdio_control(const char *name) > +{ > + return; > +} > +int arch_get_mdio_control(const char *name) > + __attribute__((weak, alias("__def_arch_get_mdio_control"))); > + > #if defined(CONFIG_CMD_MII) > > int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value) > @@ -173,6 +180,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 +194,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 +386,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)) {