linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: bcmgenet: Fix attaching to PYH failed on RPi 4B
@ 2021-06-21 10:33 Jian-Hong Pan
  2021-06-21 13:09 ` Andrew Lunn
  0 siblings, 1 reply; 19+ messages in thread
From: Jian-Hong Pan @ 2021-06-21 10:33 UTC (permalink / raw)
  To: Doug Berger, Florian Fainelli, Stefan Wahren
  Cc: bcm-kernel-feedback-list, netdev, linux-kernel, linux,
	linux-rpi-kernel, Jian-Hong Pan

The Broadcom UniMAC MDIO bus comes too late. So, GENET cannot find the
ethernet PHY on UniMAC MDIO bus. This leads GENET fail to attach the
PHY.

bcmgenet fd580000.ethernet: GENET 5.0 EPHY: 0x0000
...
could not attach to PHY
bcmgenet fd580000.ethernet eth0: failed to connect to PHY
uart-pl011 fe201000.serial: no DMA platform data
libphy: bcmgenet MII bus: probed
...
unimac-mdio unimac-mdio.-19: Broadcom UniMAC MDIO bus

This patch makes GENET try to connect the PHY up to 3 times. Also, waits
a while between each time for mdio-bcm-unimac module's loading and
probing.

Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=213485
Signed-off-by: Jian-Hong Pan <jhp@endlessos.org>
---
 drivers/net/ethernet/broadcom/genet/bcmmii.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
index 5335244e4577..64f244471fd3 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
@@ -289,6 +289,7 @@ int bcmgenet_mii_probe(struct net_device *dev)
 	struct phy_device *phydev;
 	u32 phy_flags = 0;
 	int ret;
+	int i;
 
 	/* Communicate the integrated PHY revision */
 	if (priv->internal_phy)
@@ -301,8 +302,22 @@ int bcmgenet_mii_probe(struct net_device *dev)
 	priv->old_pause = -1;
 
 	if (dn) {
-		phydev = of_phy_connect(dev, priv->phy_dn, bcmgenet_mii_setup,
-					phy_flags, priv->phy_interface);
+		/* Try to connect the PHY on UniMAC DMIO bus up to 3 times.
+		 * Wait a while between each time for mdio-bcm-unimac module's
+		 * loading and probing.
+		 */
+		phydev = NULL;
+		for (i = 1; i < 4 && !phydev; i++) {
+			netdev_info(dev,
+				    "connect %s on UniMAC MDIO bus %d time",
+				    priv->phy_dn->full_name, i);
+			phydev = of_phy_connect(dev, priv->phy_dn,
+						bcmgenet_mii_setup,
+						phy_flags, priv->phy_interface);
+			if (!phydev && i < 3)
+				msleep(500);
+		}
+
 		if (!phydev) {
 			pr_err("could not attach to PHY\n");
 			return -ENODEV;
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2021-06-24 23:00 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-21 10:33 [PATCH] net: bcmgenet: Fix attaching to PYH failed on RPi 4B Jian-Hong Pan
2021-06-21 13:09 ` Andrew Lunn
2021-06-21 16:37   ` Florian Fainelli
2021-06-21 16:47     ` Florian Fainelli
2021-06-21 16:56     ` Peter Robinson
2021-06-21 20:15       ` Stefan Wahren
2021-06-21 21:47         ` Florian Fainelli
2021-06-22  6:29           ` Jian-Hong Pan
2021-06-22  6:50             ` Heiner Kallweit
2021-06-22  7:46               ` Jian-Hong Pan
2021-06-23  3:28                 ` [PATCH v2] " Jian-Hong Pan
2021-06-23  4:00                   ` Florian Fainelli
2021-06-23 20:50                   ` patchwork-bot+netdevbpf
2021-06-23 21:19                     ` Florian Fainelli
2021-06-24  2:47                       ` Jian-Hong Pan
2021-06-24  3:27                         ` Florian Fainelli
2021-06-24  3:28                           ` Jian-Hong Pan
2021-06-24  3:22                       ` [PATCH v3] net: bcmgenet: Add mdio-bcm-unimac soft dependency Jian-Hong Pan
2021-06-24 23:00                         ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).