]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/net/macb.c
net/macb: Add arch specific routine to get mdio control
[karo-tx-uboot.git] / drivers / net / macb.c
index 0e1ced71c507441d1d2101b3b35e979bba6a4414..6b49f0e3e129a1f8f9b88e6705ddc11a3b2bc84e 100644 (file)
@@ -51,8 +51,6 @@
 
 #include "macb.h"
 
-#define barrier() asm volatile("" ::: "memory")
-
 #define CONFIG_SYS_MACB_RX_BUFFER_SIZE         4096
 #define CONFIG_SYS_MACB_RX_RING_SIZE           (CONFIG_SYS_MACB_RX_BUFFER_SIZE / 128)
 #define CONFIG_SYS_MACB_TX_RING_SIZE           16
@@ -165,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)
@@ -175,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;
@@ -188,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;
@@ -379,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)) {