Re: Race between "Generic PHY" and "bcm53xx" drivers after -EPROBE_DEFER
From: Rafał Miłecki <zajec5@gmail.com>
Date: 2021-09-21 10:52:31
On 21.09.2021 11:45, Rafał Miłecki wrote:
On 20.09.2021 20:25, Florian Fainelli wrote:quoted
On 9/20/21 11:17 AM, Vladimir Oltean wrote: [snip]quoted
quoted
All I am saying is that there is not really any need to come up with a Device Tree-based solution since you can inspect the mdio_device and find out whether it is an Ethernet PHY or a MDIO device proper, and that ought to cover all cases that I can think of.Okay, but where's the problem? I guess we're on the same page, and you're saying that we should not be calling bcma_mdio_mii_register, and assigning the result to bgmac->mii_bus, because that makes us call bcma_phy_connect instead of bgmac_phy_connect_direct. But based on what condition? Simply if bgmac->phyaddr == BGMAC_PHY_NOREGS?Yes simply that condition, I really believe it ought to be enough for the space these devices are in use.I'm afraid I got lost somewhere in this discussion. If we don't call bcma_mdio_mii_register() (as suggested in quoted e-mail) then MDIO device 0x1e won't get created and "bcm53xx" (b53_mdio.c) won't ever load.
I did a quick test and replaced bcma_phy_connect with bgmac_phy_connect_direct. That fixes the problem for me. So I guess we should: 1. Leave the bcma_mdio_mii_register() call 2. Use bcma_phy_connect() only for real PHY device Correct me if I'm wrong please.