[U-Boot] [PATCH resend 2/2] net/macb: Add arch specific routine to get mdio control

Vipin Kumar
2012-12-12T10:37:41Z

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)) {