mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
net: fec_mxc: fix PHY initialization bug with CONFIG_DM_ETH
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 <LW@KARO-electronics.de> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
parent
34d45d123a
commit
306dd7dabd
1 changed files with 13 additions and 11 deletions
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue