Message ID | 8ff845e533e9d174c6fe70cc8a6be5ec753bd071.1354777675.git.vipin.kumar@st.com |
---|---|
State | Superseded |
Delegated to: | Joe Hershberger |
Headers | show |
ping. one more :) On 12/6/2012 12:40 PM, Vipin KUMAR wrote: > From: Shiraz Hashim<shiraz.hashim@st.com> > > 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<shiraz.hashim@st.com> > Signed-off-by: Vipin Kumar<vipin.kumar@st.com> > --- > 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)) {
On 12/06/2012 08:10 AM, Vipin Kumar wrote: > From: Shiraz Hashim <shiraz.hashim@st.com> > > 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. "there is" instead of "their is" > 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> > --- > 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"))); __weak from linux/compiler.h please Otherwise: Acked-by: Stefan Roese <sr@denx.de> Thanks, Stefan
On 12/12/2012 4:37 PM, Stefan Roese wrote: > On 12/06/2012 08:10 AM, Vipin Kumar wrote: >> From: Shiraz Hashim<shiraz.hashim@st.com> >> >> 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. > > "there is" instead of "their is" > Thanks. I would change this in v2 >> 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> >> --- >> 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"))); > > __weak from linux/compiler.h please > in v2 > Otherwise: > > Acked-by: Stefan Roese<sr@denx.de> > > Thanks, > Stefan > > Vipin
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)) {