我在将TJA1120驱动(来自Linux6.6)适配到Linux5.15时,遇到了软件复位的问题,错误码为-110,我不清楚原因,以及不知道如何修复这个问题.
我参考了这个帖子NXP_C45_TJA11XX Driver Soft Reset Issue ,对nxp_c45_soft_reset做了修改,但没有效果,代码如下:
static int nxp_c45_soft_reset(struct phy_device *phydev)
{
int ret;
ret = phy_write_mmd(phydev, MDIO_MMD_VEND1, VEND1_DEVICE_CONTROL,
DEVICE_CONTROL_RESET);
if (ret)
return ret;
usleep_range(2000, 2050);
return phy_read_mmd_poll_timeout(phydev, MDIO_MMD_VEND1,
VEND1_DEVICE_CONTROL, ret,
!(ret & DEVICE_CONTROL_RESET), 20000,
240000, true);
}:
报错:
[ 6.188117] sunxi-mdio 4500048.mdio0: sunxi_mdio_probe() BEGIN
[ 6.265731] sunxi-mdio 4500048.mdio0: PHY ID: 0x001bb031, ADDR: 0x1b, DEVICE: 4500048.mdio0-mii:1b, DRIVER: NXP C45 TJA1120
[ 6.278218] sunxi-mdio 4500048.mdio0: sunxi_mdio_probe() SUCCESS
[ 47.166283] NXP C45 TJA1120 4500048.mdio0-mii:1b: nxp_c45_soft_reset failed: -110
Hello,
As far as I know, tja1120 is not supported on 5.15. So did you backport the driver from the latest bsp? Is it working?
Thanks!
Best Regards.
Hello @miipo ,
I can help only from device point of view.
Can you distinguish if the error code has been generated by phy_write_mmd or by phy_read_mmd_poll_timeout ?
Have you tried to increase time in usleep_range ?
Best regards,
Pavel