net: pcs: xpcs: also ignore phy id if it's all ones
xpcs_get_id() searches multiple MMDs for a known PHY ID, starting with MDIO_MMD_PCS (3). However not all integrators might have implemented that MMD on their MDIO bus. For example, the NXP SJA1105 and SJA1110 switches only implement vendor-specific MMD 1 and 2. When there is nothing on an MDIO bus at a certain address, traditionally the bus returns 0xffff, which means that the bus remained in its default pull-up state for the duration of the MDIO transaction. The 0xffff value is widely used in drivers/net/phy/phy_device.c (see get_phy_c22_id for example) to denote a missing device. So it makes sense for the xpcs to ignore this value as well, and continue its search, eventually finding the proper PHY ID in the vendor-specific MMDs. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
2031c09e6d
Коммит
36641b045c
|
@ -965,8 +965,10 @@ static u32 xpcs_get_id(struct dw_xpcs *xpcs)
|
|||
if (ret < 0)
|
||||
return 0xffffffff;
|
||||
|
||||
/* If Device IDs are not all zeros, we found C73 AN-type device */
|
||||
if (id | ret)
|
||||
/* If Device IDs are not all zeros or all ones,
|
||||
* we found C73 AN-type device
|
||||
*/
|
||||
if ((id | ret) && (id | ret) != 0xffffffff)
|
||||
return id | ret;
|
||||
|
||||
/* Next, search C37 PCS using Vendor-Specific MII MMD */
|
||||
|
|
Загрузка…
Ссылка в новой задаче