diff mbox series

FEC_MXC_SHARE_MDIO on i.MX6ULL

Message ID 4a68739f-673c-d760-6714-cc3b82e83da5@kaa.org.ua
State Not Applicable
Delegated to: Stefano Babic
Headers show
Series FEC_MXC_SHARE_MDIO on i.MX6ULL | expand

Commit Message

Oleh Kravchenko May 1, 2021, 10:24 p.m. UTC
Hi all,

I'm working on adding u-boot support for boards based on i.MX6ULL SoC.
One board has a shared MDIO (CONFIG_FEC_MXC_SHARE_MDIO=y).

> U-Boot 2021.04-00002-gb199ac910c-dirty (May 02 2021 - 01:03:13 +0300)

I've found a weird race condition in phy_find_by_mask() function.
During the cold boot, it's don't initialize properly:

> Net:   
> Warning: ethernet@20b4000 (eth1) using random MAC address - 9e:55:17:69:4a:cb
> eth1: ethernet@20b4000Get shared mii bus on ethernet@2188000
> Could not get PHY for FEC1: addr 0

Everything initializes properly If I perform hot boot:
> Net:   
> Warning: ethernet@20b4000 (eth1) using random MAC address - f6:cc:65:df:9d:99
> eth1: ethernet@20b4000Get shared mii bus on ethernet@2188000
> 
> Warning: ethernet@2188000 (eth0) using random MAC address - 16:1b:89:80:44:8e
> , eth0: ethernet@2188000

After some debugging, I've change phy_find_by_mask():

Any ideas on how to fix this issue properly?
Or patch above is good enough to be merged into the u-boot source tree?
diff mbox series

Patch

diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 89e3076bfd..5dfc8cba37 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -914,12 +914,11 @@  struct phy_device *phy_find_by_mask(struct mii_dev *bus, uint phy_mask,
 				    phy_interface_t interface)
 {
 	/* Reset the bus */
-	if (bus->reset) {
+	if (bus->reset)
 		bus->reset(bus);
 
-		/* Wait 15ms to make sure the PHY has come out of hard reset */
-		mdelay(15);
-	}
+	/* Wait 15ms to make sure the PHY has come out of hard reset */
+	mdelay(15);
 
 	return get_phy_device_by_mask(bus, phy_mask, interface);
 }