[U-Boot] Get Phy device ID for non standard phy

Pankaj Bansal pankaj.bansal at nxp.com
Fri Aug 3 06:39:09 UTC 2018


Hi All,

I have a query about phy devices that implement phy identification registers at non-standard locations.
The IEEE 802.3 specifies these registers as phy ID registers:

22.2.4.3.1 PHY Identifier (Registers 2 and 3)
Registers 2 and 3 provide a 32-bit value, which shall constitute a unique identifier for a particular type of PHY.
A PHY may return a value of zero in each of the 32 bits of the PHY Identifier.
Bit 2.15 shall be the MSB of the PHY Identifier, and bit 3.0 shall be the LSB of the PHY Identifier.

But there are phys that implement this 32 bit ID in nonstandard locations.
In u-boot there is a weak function get_phy_id (https://elixir.bootlin.com/u-boot/v2018.09-rc1/source/drivers/net/phy/phy.c#L673)
This function can be overridden to get the phy id for nonstandard phys.
Now If this function is overridden with our own function, then it's the job of our own function to get the phy id from all phy devices (standard or nonstandard)
Till date, this function has been overridden by two files :
https://elixir.bootlin.com/u-boot/v2018.09-rc1/source/drivers/net/phy/cortina.c#L353
https://elixir.bootlin.com/u-boot/v2018.09-rc1/source/drivers/net/phy/mv88e61xx.c#L1055

Now the problem arises, when we have two or more phys in one system that implement the phy ID at two different non-standard location.
Like we have in our upcoming boards LX2160AQDS/LX2160ARDB : inphi phy and cortina phy.
In which file we should implement the get_phy_id function?

I suggest that we should implement get_phy_id function in board file,.
As the board manufacturer knows the phys in his system and the various non-standard locations these phy implement the 32 bit phy identifier.
Any suggestion ?

Regards,
Pankaj Bansal



More information about the U-Boot mailing list