From 306dd7dabd6472b8b66ab5106d5a6a516ef15d79 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Lothar=20Wa=C3=9Fmann?= Date: Tue, 27 Jun 2017 15:23:16 +0200 Subject: [PATCH] net: fec_mxc: fix PHY initialization bug with CONFIG_DM_ETH MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When CONFIG_DM_ETH is set, the FEC ethernet controller is reset after the PHY has been set up and initialzed. This breaks the communication with the PHY and results in an inoperable ethernet interface. Do the initialization with CONFIG_DM_ETH in the same order as with legacy ETH support to fix this. Signed-off-by: Lothar Waßmann Acked-by: Joe Hershberger --- drivers/net/fec_mxc.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 6840908fb2..4ad4ddc866 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -1223,17 +1223,6 @@ static int fecmxc_probe(struct udevice *dev) if (ret) return ret; - bus = fec_get_miibus((uint32_t)priv->eth, dev_id); - if (!bus) - goto err_mii; - - priv->bus = bus; - priv->xcv_type = CONFIG_FEC_XCV_TYPE; - priv->interface = pdata->phy_interface; - ret = fec_phy_init(priv, dev); - if (ret) - goto err_phy; - /* Reset chip. */ writel(readl(&priv->eth->ecntrl) | FEC_ECNTRL_RESET, &priv->eth->ecntrl); @@ -1249,6 +1238,19 @@ static int fecmxc_probe(struct udevice *dev) fec_reg_setup(priv); priv->dev_id = (dev_id == -1) ? 0 : dev_id; + bus = fec_get_miibus(dev, dev_id); + if (!bus) { + ret = -ENOMEM; + goto err_mii; + } + + priv->bus = bus; + priv->xcv_type = CONFIG_FEC_XCV_TYPE; + priv->interface = pdata->phy_interface; + ret = fec_phy_init(priv, dev); + if (ret) + goto err_phy; + return 0; err_timeout: -- 2.39.5