From: Michal Simek Date: Thu, 27 Sep 2012 07:10:42 +0000 (+0200) Subject: net: emaclite: Fix systems without mdio bus X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=381b0b153813ddb11de7acb10358b8e0b0bdbedd;p=thirdparty%2Fu-boot.git net: emaclite: Fix systems without mdio bus Setup phy only for system which has mdio bus. Detection is done by writing MDIO Enable bit and reread it back. If is not setup IP has no MDIO support. Signed-off-by: Michal Simek --- diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c index 6e84dcbb675..34d26e4f28e 100644 --- a/drivers/net/xilinx_emaclite.c +++ b/drivers/net/xilinx_emaclite.c @@ -276,6 +276,10 @@ static int setup_phy(struct eth_device *dev) static int emaclite_init(struct eth_device *dev, bd_t *bis) { struct xemaclite *emaclite = dev->priv; +#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB) + u32 temp; +#endif + debug("EmacLite: Initialization Started\n"); /* @@ -319,8 +323,11 @@ static int emaclite_init(struct eth_device *dev, bd_t *bis) #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB) /* Enable MII PHY */ - out_be32((u32 *)(dev->iobase + XEL_MDIOCTRL_OFFSET), 0x8); - setup_phy(dev); + /* Enable MII PHY */ + out_be32((u32 *)(dev->iobase + XEL_MDIOCTRL_OFFSET), XEL_MDIOCTRL_MDIOEN_MASK); + temp = in_be32((u32 *)(dev->iobase + XEL_MDIOCTRL_OFFSET)); + if (temp & XEL_MDIOCTRL_MDIOEN_MASK) + setup_phy(dev); #endif debug("EmacLite Initialization complete\n");