Re: [PATCH net-next v2 04/10] net: phy: replace is_c45 with phy_accces_mode

From: Michael Walle
Date: Mon Jun 26 2023 - 02:31:42 EST


Am 2023-06-23 21:54, schrieb Andrew Lunn:
On Fri, Jun 23, 2023 at 07:34:22PM +0200, Andrew Lunn wrote:
> @@ -131,9 +131,11 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,
>
> is_c45 = fwnode_device_is_compatible(child, "ethernet-phy-ieee802.3-c45");
> if (is_c45 || fwnode_get_phy_id(child, &phy_id))
> - phy = get_phy_device(bus, addr, is_c45);
> + phy = get_phy_device(bus, addr,
> + is_c45 ? PHY_ACCESS_C45 : PHY_ACCESS_C22);
> else
> - phy = phy_device_create(bus, addr, phy_id, 0, NULL);
> + phy = phy_device_create(bus, addr, phy_id, PHY_ACCESS_C22,
> + NULL);

Documentation/devicetree/bindings/net/ethernet-phy.yaml says:

compatible:
oneOf:
- const: ethernet-phy-ieee802.3-c22
description: PHYs that implement IEEE802.3 clause 22
- const: ethernet-phy-ieee802.3-c45
description: PHYs that implement IEEE802.3 clause 45

It would be nice to make this documentation more specific. It now
refers to 'bus transaction', so maybe we want to append that to these
lines?

Humm, looking at patch 9, maybe i got this wrong. Patch 9 seems to
suggest ethernet-phy-ieee802.3-c45 means c45 register space, and it is
upto the core to figure out how to access that register space, either
using c45 transactions, or C45 over C22.

Yes. And I think the core has all information to determine what mode
should be used. Use C45 transfers first and iff that's not possible
switch to C45-over-C22. Therefore, there isn't really a choice. It's
either "it will work" or "it won't work at all".

For all supported C45 PHYs right now, the mode should stay with C45
because, that was the only supported mode. Except, if a C45 PHY was
probed as a C22 PHY and stayed that way. With this patchset they
would now be probed a PHY with C45 registers and using C45-over-C22.
But I'm not sure if that's a thing.

-michael