Messages in this thread Patch in this message | | | Subject | Re: [PATCH] net: bcmgenet: Fix attaching to PYH failed on RPi 4B | From | Florian Fainelli <> | Date | Mon, 21 Jun 2021 09:47:21 -0700 |
| |
On 6/21/21 9:37 AM, Florian Fainelli wrote: > On 6/21/21 6:09 AM, Andrew Lunn wrote: >> On Mon, Jun 21, 2021 at 06:33:11PM +0800, Jian-Hong Pan wrote: >>> 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. >> >> Don't loop. Return -EPROBE_DEFER. The driver core will then probed the >> driver again later, by which time, the MDIO bus driver should of >> probed. > > This is unlikely to work because GENET register the mdio-bcm-unimac > platform device so we will likely run into a chicken and egg problem, > though surprisingly I have not seen this on STB platforms where GENET is > used, I will try building everything as a module like you do. Can you > see if the following helps: > > diff --git a/drivers/net/mdio/mdio-bcm-unimac.c > b/drivers/net/mdio/mdio-bcm-unimac.c > index bfc9be23c973..d1844ef3724a 100644 > --- a/drivers/net/mdio/mdio-bcm-unimac.c > +++ b/drivers/net/mdio/mdio-bcm-unimac.c > @@ -351,6 +351,7 @@ static struct platform_driver unimac_mdio_driver = { > .pm = &unimac_mdio_pm_ops, > }, > .probe = unimac_mdio_probe, > + .probe_type = PROBE_FORCE_SYNCHRONOUS, > .remove = unimac_mdio_remove, > }; > module_platform_driver(unimac_mdio_driver);
This won't build try this instead:
diff --git a/drivers/net/mdio/mdio-bcm-unimac.c b/drivers/net/mdio/mdio-bcm-unimac.c index bfc9be23c973..53fecb53cd65 100644 --- a/drivers/net/mdio/mdio-bcm-unimac.c +++ b/drivers/net/mdio/mdio-bcm-unimac.c @@ -349,6 +349,7 @@ static struct platform_driver unimac_mdio_driver = { .name = UNIMAC_MDIO_DRV_NAME, .of_match_table = unimac_mdio_ids, .pm = &unimac_mdio_pm_ops, + .probe_type = PROBE_FORCE_SYNCHRONOUS, }, .probe = unimac_mdio_probe, .remove = unimac_mdio_remove, -- Florian
| |