From 381b0b153813ddb11de7acb10358b8e0b0bdbedd Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Thu, 27 Sep 2012 09:10:42 +0200 Subject: [PATCH] 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 --- drivers/net/xilinx_emaclite.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) 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"); -- 2.47.3