
On 06/10/2020 08.02, Heiko Schocher wrote:
Hello Rasmus,
Am 05.10.2020 um 15:15 schrieb Rasmus Villemoes:
When trying to port our mpc8309-based board to DM_ETH, on top of Heiko's patches, I found that nothing in mdio-uclass.c seems to support the use of a fixed-link subnode of the ethernet DT node. That is, the ethernet node looks like
enet0: ethernet@2000 { device_type = "network"; compatible = "ucc_geth"; ... fixed-link { reg = <0xffffffff>;
Well, it looks like that when a dummy reg property has been added, not IRL. Sorry.
net/mdio-uclass.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/net/mdio-uclass.c b/net/mdio-uclass.c index 66ee2e1976..2f932b77df 100644 --- a/net/mdio-uclass.c +++ b/net/mdio-uclass.c @@ -139,6 +139,12 @@ static struct phy_device *dm_eth_connect_phy_handle(struct udevice *ethdev, struct ofnode_phandle_args phandle = {.node = ofnode_null()}; int i; + if (CONFIG_IS_ENABLED(PHY_FIXED) && + ofnode_valid(dev_read_subnode(ethdev, "fixed-link"))) { + phy = phy_connect(NULL, -1, ethdev, interface); + goto out; + }
for (i = 0; i < PHY_HANDLE_STR_CNT; i++) if (!dev_read_phandle_with_args(ethdev, phy_handle_str[i], NULL, 0, 0, &phandle)) @@ -168,6 +174,7 @@ static struct phy_device *dm_eth_connect_phy_handle(struct udevice *ethdev, phy = dm_mdio_phy_connect(mdiodev, phy_addr, ethdev, interface); +out: if (phy) phy->node = phandle.node;
Looks good to me... but I am not an expert in net subsystem... nevertheless:
Reviewed-by: Heiko Schocher hs@denx.de
Thanks.
Yeah, as I said, I have no idea if this is the right way to do things. Some ethernet drivers seem to call phy_connect directly instead of going through dm_eth_phy_connect(), some handle fixed-link themselves, etc. But from a very selfish POV, this is the minimal patch to make our board (and others with a ucc_geth ethernet dev with a fixed-link) work with DM_ETH.
Rasmus