提交 d54097b6 编写于 作者: S Shaohui Xie 提交者: Andy Fleming

net/phy: fix select line for TN80xx

TN80xx has same PHY ID as TN2020, but it needs different setting to register
30.93 which used to select line, so we read register 30.32 which has
bit 15:12 to indicate PHY hardware version, for TN20xx we will get 3 or 2,
for TN80xx we will get 5 or 4.
Signed-off-by: NShaohui Xie <Shaohui.Xie@freescale.com>
Signed-off-by: NAndy Fleming <afleming@freescale.com>
上级 c416faf8
......@@ -34,9 +34,21 @@ int tn2020_config(struct phy_device *phydev)
unsigned short restart_an = (MDIO_AN_CTRL1_RESTART |
MDIO_AN_CTRL1_ENABLE |
MDIO_AN_CTRL1_XNP);
u8 phy_hwversion;
phy_write(phydev, 30, 93, 2);
phy_write(phydev, MDIO_MMD_AN, MDIO_CTRL1, restart_an);
/*
* bit 15:12 of register 30.32 indicates PHY hardware
* version. It can be used to distinguish TN80xx from
* TN2020. TN2020 needs write 0x2 to 30.93, but TN80xx
* needs 0x1.
*/
phy_hwversion = (phy_read(phydev, 30, 32) >> 12) & 0xf;
if (phy_hwversion <= 3) {
phy_write(phydev, 30, 93, 2);
phy_write(phydev, MDIO_MMD_AN, MDIO_CTRL1, restart_an);
} else {
phy_write(phydev, 30, 93, 1);
}
}
return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册