Re: [net-next PATCH v3 4/5] net: phy: Introduce fwnode_get_phy_id()

From: Jeremy Linton
Date: Fri May 08 2020 - 20:11:37 EST


On 5/8/20 6:42 PM, Andrew Lunn wrote:
On Fri, May 08, 2020 at 05:48:33PM -0500, Jeremy Linton wrote:
Hi,

On 5/8/20 3:27 PM, Andrew Lunn wrote:
There is a very small number of devices where the vendor messed up,
and did not put valid contents in the ID registers. In such cases, we
can read the IDs from device tree. These are then used in exactly the
same way as if they were read from the device.


Is that the case here?

Sorry, I don't understand the question?

I was asking in general, does this machine report the ID's correctly.

Very likely, it does.

The embedded single mac:mdio per nic case seems like the normal case, and
most of the existing ACPI described devices are setup that way.

Somebody in this thread pointed to ACPI patches for the
MACCHIATOBin. If i remember the hardware correctly, it has 4 Ethernet
interfaces, and two MDIO bus masters. One of the bus masters can only
do C22 and the other can only do C45. It is expected that the busses
are shared, not a nice one to one mapping.

Thats whats going on with the NXP too AFAIK. But the mcbin is one of the ones with the "compatible" embedded in the DSD properties.. AKA, they buried the entire DT node there.


But at the same time, that shifts the c22/45 question to the nic
driver, where use of a DSD property before instantiating/probing
MDIO isn't really a problem if needed.

This in fact does not help you. The MAC driver has no idea what PHY is
connected to it. The MAC does not know if it is C22 or C45. It uses
Thats all I was trying to say (the mac side capability is implied by the HID/CID that instantiates it).

the phylib abstraction which hides all this. Even if you assume 1:1,
use phy_find_first(), it will not find a C45 PHY because without
knowing there is a C45 PHY, we don't scan for it. And we should expect
C45 PHYs to become more popular in the next few years.

In fact this embedded nic/mac/mdio/phy 1:1:1 case, is likely a requirement
for passthrough into a generic VM, otherwise someone has to create a virtual
mdio, and pass the phy in for the nic/mac.

AFAIK, NXP's part avoids this despite having a shared MDIO, because the phy
state never leaves the mgmt side of the picture. It monitors the state and
then feeds that back into their nic mgmt complex rather than using it
directly.

That is the other model. Don't use Linux to drive the PHY, use
firmware in the MAC. A number of MACs do that, but it has the usual
problems of firmware. It limits you on your choice of PHYs, bugs in
the firmware cannot be fixed by the community, no sharing of drivers
because firmware is generally proprietary, no 'for free features'
because somebody else added features to the linux PHY driver etc. But
it will make ACPI support simple, this whole discussion goes away, no
ACPI needed at all.

Open source firmware! :)